public void writeTestFunction(StreamWriter sw, JsonValueSet valueSet) { sw.WriteLine("function " + testId2FunctionName(valueSet.testId) + @"() {"); sw.WriteLine("var " + valueSet.varname + "=" + valueSet.json + ";"); valueSet.expressions2ExpectedValue.Keys.ToList().ForEach( (expr) => { Object expected = valueSet.expressions2ExpectedValue[expr]; if (expected == null) { expected = "null"; } else if (expected.GetType() == typeof(string) || expected.GetType() == typeof(Char)) { expected = ("'" + expected + "'"); } string fullexpression = valueSet.varname + "." + expr; sw.WriteLine("assertEqual(" + expected + "," + fullexpression + ", '" + fullexpression.Replace("'", "\\'") + "');"); } ); sw.WriteLine( @" } "); }
public Dictionary <string, object> extractValuesFromJson(JsonValueSet valueSet, string testId) { // try to look up JunitAttribute in stack here ! TestAttribute ta = getCurrentNunitTest(); valueSet.stackFrame = getCurrentNunitStackFrame(); valueSet.testAttribute = ta; history.Add(valueSet); valueSet.testId = testId; writeTestHtml(valueSet); Dictionary <string, object> expressions2ActualValue = new Dictionary <string, object>(); valueSet.expressions2ExpectedValue.Keys.ToList().ForEach( (expression) => { string js; if (valueSet.extraFunctions.Count() > 0) { js = "(function() {"; foreach (string f in valueSet.extraFunctions) { js = js + "\r\n" + f; } js = js + "\r\n return (" + valueSet.json + ");"; js = js + " })()." + expression; } else { js = "(" + valueSet.json + ")." + expression; } Object result = execute(js); //todo maybe System.DBNull actually means undefined ! if (result != null && result.GetType() == (typeof(System.DBNull))) { result = null; } expressions2ActualValue[expression] = (result); } ); return(expressions2ActualValue); }
public void writeTestHtml(JsonValueSet valueSet) { valueSet.filename = testdir + '\\' + valueSet.testId + ".html"; System.Console.WriteLine("writing test to " + valueSet.filename); DirectoryInfo di = System.IO.Directory.CreateDirectory(testdir); System.Console.WriteLine("wrote test to " + di.FullName); System.IO.FileInfo fi = new System.IO.FileInfo(valueSet.filename); fi.Directory.Create(); StreamWriter sw = new StreamWriter(valueSet.filename); sw.WriteLine( @"<html> <script> "); foreach (string f in valueSet.extraFunctions) { sw.WriteLine(f); sw.WriteLine(); } sw.WriteLine("var " + valueSet.varname + "=" + valueSet.json + ";"); sw.WriteLine(); //writeTestFunction(sw, valueSet); sw.WriteLine(@"</script> <body> <pre>"); sw.WriteLine(valueSet.varname + "=>" + valueSet.json); valueSet.expressions2ExpectedValue.Keys.ToList().ForEach( (expression) => { string strFullExpression = valueSet.varname + "." + expression; sw.WriteLine(strFullExpression + "==<script>document.write(" + strFullExpression + ")</script>"); } ); sw.WriteLine(); sw.WriteLine("</pre>"); sw.Flush(); sw.Close(); }
public Dictionary<string, object> extractValuesFromJson(JsonValueSet valueSet, string testId) { // try to look up JunitAttribute in stack here ! TestAttribute ta = getCurrentNunitTest(); valueSet.stackFrame = getCurrentNunitStackFrame(); valueSet.testAttribute = ta; history.Add(valueSet); valueSet.testId = testId; writeTestHtml(valueSet); Dictionary<string, object> expressions2ActualValue = new Dictionary<string, object>(); valueSet.expressions2ExpectedValue.Keys.ToList().ForEach( (expression) => { string js; if (valueSet.extraFunctions.Count() > 0) { js = "(function() {"; foreach (string f in valueSet.extraFunctions) { js = js + "\r\n" + f; } js = js + "\r\n return (" + valueSet.json + ");"; js = js + " })()." + expression; } else { js = "(" + valueSet.json + ")." + expression; } Object result = execute(js); //todo maybe System.DBNull actually means undefined ! if (result != null && result.GetType()==(typeof(System.DBNull)) ) result = null; expressions2ActualValue[expression]= (result); } ); return expressions2ActualValue; }
public void writeTestTablePage(StreamWriter sw, List <JsonValueSet> tests) { sw.WriteLine( @"<html> <script> "); Dictionary <string, string> extraFunctionsPrinted = new Dictionary <string, string>(); sw.WriteLine(JSExecuteUtilJavascript.AssertEqualFunction); foreach (JsonValueSet valueSet in tests) { foreach (string f in valueSet.extraFunctions) { if (!extraFunctionsPrinted.ContainsKey(f)) { extraFunctionsPrinted[f] = f; sw.WriteLine(f); sw.WriteLine(); } } writeTestFunction(sw, valueSet); sw.WriteLine(); } sw.WriteLine(); sw.WriteLine(JSExecuteUtilJavascript.getRunTest4TableRowFunction(TablePageRunTestFunctionName, crossimagesrc, tickimagesrc, questionmarkimagesrc)); sw.WriteLine("</script>"); string runAllTestsFunctionName = "runAllTests"; sw.WriteLine(@"<body onload=" + "\"" + runAllTestsFunctionName + "(false)\"" + @"> <h1> Serializer Browser Compatibility Tests - created by " + GetType().FullName + " at " + (DateTime.Now) + @" </h1>"); string[] headers = { "pass<br>fail", "name", "description", ".net source", "java script<br> test source" }; List <List <string> > rows = new List <List <string> >(); sw.WriteLine(@"<script> function " + runAllTestsFunctionName + "(clear) {"); for (int index = 0; index < tests.Count; index++) { JsonValueSet test = tests[index]; List <string> row = new List <string>(); string imageid = "row" + index + ".pass.image"; string testfunctionname = testId2FunctionName(test.testId); string runtestcall = TablePageRunTestFunctionName + "('" + imageid + "', " + testfunctionname + ", clear)"; sw.WriteLine(runtestcall + ";"); string runrow = "<img id='" + imageid + "' width='20' height='24'/>" + "<a href=\"javascript:" + runtestcall + "\">run</a>"; row.Add(runrow); row.Add(test.testId); row.Add(test.getDescription()); row.Add(test.getSourceDescription()); row.Add("<a href=\"javascript:" + JSExecuteUtilJavascript.ShowSourceFunctionName + "(" + testfunctionname + ")\">show</a>"); rows.Add(row); } sw.WriteLine(@"} var clear=false;" + JSExecuteUtilJavascript.ShowSourceFunction + @" </script>"); sw.WriteLine("<a href=\"javascript:" + runAllTestsFunctionName + "()\">run all tests</a>"); sw.WriteLine("<br>"); sw.WriteLine("<a href=\"javascript:" + runAllTestsFunctionName + "(true)\">clear all tests</a>"); sw.WriteLine("<br>"); writeHTMLtable(sw, headers, rows); sw.WriteLine(); //page default is to show result //sw.WriteLine("<script> debugger; " + runAllTestsFunctionName + "(false);</script>"); sw.WriteLine(@"</body>"); sw.WriteLine("</html>"); }
public void writeTestHtml(JsonValueSet valueSet) { valueSet.filename = testdir + '\\' + valueSet.testId + ".html"; System.Console.WriteLine("writing test to " + valueSet.filename); DirectoryInfo di = System.IO.Directory.CreateDirectory(testdir); System.Console.WriteLine("wrote test to " + di.FullName); System.IO.FileInfo fi = new System.IO.FileInfo(valueSet.filename); fi.Directory.Create(); StreamWriter sw = new StreamWriter(valueSet.filename); sw.WriteLine( @"<html> <script> "); foreach (string f in valueSet.extraFunctions) { sw.WriteLine(f); sw.WriteLine(); } sw.WriteLine("var " + valueSet.varname + "=" + valueSet.json + ";"); sw.WriteLine(); //writeTestFunction(sw, valueSet); sw.WriteLine(@"</script> <body> <pre>"); sw.WriteLine(valueSet.varname + "=>" + valueSet.json); valueSet.expressions2ExpectedValue.Keys.ToList().ForEach( (expression) => { string strFullExpression = valueSet.varname + "." + expression; sw.WriteLine(strFullExpression + "==<script>document.write(" + strFullExpression + ")</script>"); } ); sw.WriteLine(); sw.WriteLine("</pre>"); sw.Flush(); sw.Close(); }
public void writeTestFunction(StreamWriter sw, JsonValueSet valueSet) { sw.WriteLine("function " + testId2FunctionName(valueSet.testId) + @"() {"); sw.WriteLine("var " + valueSet.varname + "=" + valueSet.json + ";"); valueSet.expressions2ExpectedValue.Keys.ToList().ForEach( (expr) => { Object expected = valueSet.expressions2ExpectedValue[expr]; if (expected == null) expected = "null"; else if (expected.GetType() == typeof(string) || expected.GetType()==typeof(Char)) expected = ("'" + expected + "'"); string fullexpression = valueSet.varname + "." + expr; sw.WriteLine("assertEqual(" + expected + "," + fullexpression + ", '" + fullexpression.Replace("'", "\\'") + "');"); } ); sw.WriteLine( @" } "); }