SND\AstrorEnales_cp be01038e1f Fixed the DisplayMode class which was way too accessible!
Added Tests for:
- DisplayMode
- VertexElement
- VertexPositionColor (GetHashCode still fails)
- VertexPositionColorTexture (GetHashCode still fails)
- VertexPositionTexture
- VertexPositionNormalTexture
2015-03-15 01:11:49 +01:00

89 lines
4.0 KiB
C#

using System;
using System.Collections.Generic;
using System.IO;
using System.Reflection;
using ANX.Framework.NonXNA.Development;
namespace OnlineStatusGenerator
{
class Program
{
private const string GreenColor = "#A5DE94";
private const string RedColor = "#AD0000";
private const string YellowColor = "#FFFF9C";
static void Main(string[] args)
{
var assembly = Assembly.LoadFile(Path.GetFullPath("ANX.Framework.dll"));
Type[] allTypes = assembly.GetTypes();
var namespaces = new Dictionary<string, List<Type>>();
foreach (Type type in allTypes)
{
if (type.Namespace.Contains("NonXNA") || type.IsPublic == false)
continue;
if (namespaces.ContainsKey(type.Namespace) == false)
namespaces.Add(type.Namespace, new List<Type>());
namespaces[type.Namespace].Add(type);
}
var sortedKeys = new List<string>(namespaces.Keys);
sortedKeys.Sort();
foreach (string space in sortedKeys)
namespaces[space].Sort((o1, o2) => String.Compare(o1.Name, o2.Name, StringComparison.Ordinal));
string result = "<table border=1 cellspacing=0>";
foreach (string space in sortedKeys)
{
result += "\n<tr><td style=\"background-color: silver;\"><strong>" + space + "</strong></td><td style=\"background-color: silver;\" align=center>%</td><td style=\"background-color: silver;\" align=center>Developer</td><td style=\"background-color: silver;\" align=center>Test State</td></tr>";
foreach (Type type in namespaces[space])
{
result += "\n<tr><td>" + type.Name + "</td>";
result += GetPercentageCompleteBox(type);
result += GetDeveloperBox(type);
result += GetTestStateBox(type);
result += "</tr>";
}
}
result += "</table>";
File.WriteAllText("Report.html", result);
System.Diagnostics.Process.Start("Report.html");
}
private static string GetPercentageCompleteBox(Type type)
{
var percentageAttribute = GetAttribute<PercentageCompleteAttribute>(type);
int percent = percentageAttribute != null ? percentageAttribute.Percentage : -1;
string result = percent != -1 ? percent.ToString() : "---";
string bgColor = percent == -1 ? RedColor : (percent == 100 ? GreenColor : YellowColor);
return "<td align=\"center\" style=\"background-color:" + bgColor + ";\">" + result + "</td>";
}
private static string GetTestStateBox(Type type)
{
var testAttribute = GetAttribute<TestStateAttribute>(type);
string result = testAttribute != null ? testAttribute.State.ToString() : "---";
string bgColor = testAttribute == null ? RedColor :
(testAttribute.State == TestStateAttribute.TestState.Tested ? GreenColor : YellowColor);
return "<td align=\"center\" style=\"background-color:" + bgColor + ";\">" + result + "</td>";
}
private static string GetDeveloperBox(Type type)
{
var developerAttribute = GetAttribute<DeveloperAttribute>(type);
string result = developerAttribute != null ? developerAttribute.Developer : "---";
string bgColor = developerAttribute == null ? RedColor :
(developerAttribute.Developer != "???" ? "white" : YellowColor);
return "<td align=\"center\" style=\"background-color:" + bgColor + ";\">" + result + "</td>";
}
private static T GetAttribute<T>(Type type) where T : Attribute
{
object[] attributes = type.GetCustomAttributes(typeof(T), false);
return attributes.Length > 0 ? attributes[0] as T : null;
}
}
}