using System; namespace SpriteWave{ public class Tests { int nTests = 0; int nSuccesses = 0; const uint OrderAndDepth = 0x12305551; public void ViewResults(string testName, bool testRes) { nTests++; if (testRes) nSuccesses++; string status = testRes ? "Success!" : "Fail :("; Console.WriteLine(testName + ": " + status + "\n"); } public void PrintResultsUInt(uint expected, uint actual) { Console.WriteLine("Expected: " + expected.ToString("X8") + ", Actual: " + actual.ToString("X8")); } public bool TestNativeToRGBA(uint expected, uint c) { uint actual = new ColorPattern(OrderAndDepth, null).NativeToRGBA(c); PrintResultsUInt(expected, actual); return actual == expected; } public bool TestRGBAToNative(uint expected, uint rgba) { uint actual = new ColorPattern(OrderAndDepth, null).RGBAToNative(rgba); PrintResultsUInt(expected, actual); return actual == expected; } public bool TestException(string exType, Action action) { string msg = null; bool success = false; try { action(); } catch (Exception ex) { msg = ex.Message; if (ex.GetType() == Type.GetType("System." + exType)) success = true; else throw; } Console.WriteLine(msg != null ? msg : "No exception"); return success; } public bool TestSuffixGenerate(string expected, string fmt, int num) { string output = new Suffix(fmt).Generate(num); Console.WriteLine("Expected: " + expected + ", Actual: " + output); return output == expected; } public bool TestSuffixValueOf(int expected, string fmt, string str) { int value = new Suffix(fmt).ValueOf(str); Console.WriteLine("Expected: " + expected + ", Actual: " + value); return value == expected; } public void Run() { ViewResults("NativeToRGBA", TestNativeToRGBA(0xFF00FFFF, 0xFC1F)); ViewResults("RGBAToNative", TestRGBAToNative(0x83FF, 0x00FFFFFF)); ViewResults("RGBAToNative", TestRGBAToNative(0xFC1F, 0xFF00FFFF)); ViewResults("RGBAToNative", TestRGBAToNative(0xFFE0, 0xFFFF00FF)); ViewResults("RGBAToNative", TestRGBAToNative(0x7FFF, 0xFFFFFF00)); ViewResults("CreateSuffix (trailing '{')", TestException("ArgumentException", () => {var suff = new Suffix("_{{d2");})); ViewResults("CreateSuffix (too short)", TestException("ArgumentException", () => {var suff = new Suffix("-{d}");})); ViewResults("CreateSuffix (base type)", TestException("ArgumentException", () => {var suff = new Suffix("-{l}");})); ViewResults("CreateSuffix (nDigits < 1)", TestException("ArgumentException", () => {var suff = new Suffix("_{d0}");})); ViewResults("SuffixGenerate (num is -ve)", TestException("ArgumentException", () => {var str = new Suffix("_{d2}").Generate(-10);})); ViewResults("SuffixGenerate (num exceeds limit)", TestException("ArgumentException", () => {var str = new Suffix("_{b3}").Generate(10);})); ViewResults("SuffixGenerate", TestSuffixGenerate("number 090 here", "number {d3} here", 90)); ViewResults("SuffixGenerate", TestSuffixGenerate("_0f4", "_{x3}", 244)); ViewResults("SuffixGenerate", TestSuffixGenerate("_0F4", "_{X3}", 244)); ViewResults("SuffixValueOf (no insert)", TestException("InvalidOperationException", () => {var num = new Suffix("nothing here").ValueOf("nothing here");})); ViewResults("SuffixValueOf (incorrect size 1)", TestException("ArgumentException", () => {var num = new Suffix("{d2} cc").ValueOf("not correct");})); ViewResults("SuffixValueOf (incorrect size 2)", TestException("ArgumentException", () => {var num = new Suffix("aa {d2} cc").ValueOf("not correct");})); ViewResults("SuffixValueOf (incorrect size 3)", TestException("ArgumentException", () => {var num = new Suffix("aa {d2}").ValueOf("not correct");})); ViewResults("SuffixValueOf (invalid input 1)", TestException("ArgumentException", () => {var num = new Suffix("{d2} cc").ValueOf("00 cd");})); ViewResults("SuffixValueOf (invalid input 2)", TestException("ArgumentException", () => {var num = new Suffix("aa {d2} cc").ValueOf("aa 00 cd");})); ViewResults("SuffixValueOf (invalid input 3)", TestException("ArgumentException", () => {var num = new Suffix("aa {d2} cc").ValueOf("ab 00 cc");})); ViewResults("SuffixValueOf (invalid input 4)", TestException("ArgumentException", () => {var num = new Suffix("aa {d2}").ValueOf("ab 00");})); ViewResults("SuffixValueOf (invalid input 4)", TestException("ArgumentOutOfRangeException", () => {var num = new Suffix("aa {d2}").ValueOf("aa 0-");})); ViewResults("SuffixValueOf (oob digit)", TestException("ArgumentOutOfRangeException", () => {var num = new Suffix("aa {o2}").ValueOf("aa 09");})); ViewResults("SuffixValueOf", TestSuffixValueOf(345, "the number is: {b10}", "the number is: 0101011001")); ViewResults("SuffixValueOf", TestSuffixValueOf(987, "{o4} is the number", "1733 is the number")); ViewResults("SuffixValueOf", TestSuffixValueOf(90, "number {d3} here", "number 090 here")); ViewResults("SuffixValueOf", TestSuffixValueOf(244, "_{x3}", "_0f4")); ViewResults("SuffixValueOf", TestSuffixValueOf(244, "_{X3}", "_0F4")); Console.WriteLine("\nTests Passed: " + nSuccesses + "/" + nTests); } } public class TestsMain { public static void Main() { new Tests().Run(); } }}