protected string GenericTest( string fileName, string csharpOutput, string javascriptOutput, string[] stubbedAssemblies = null, TypeInfoProvider typeInfo = null ) { long elapsed, temp; string generatedJs = null; using (var test = new ComparisonTest(EvaluatorPool, Portability.NormalizeDirectorySeparators(fileName), stubbedAssemblies, typeInfo)) { var csOutput = test.RunCSharp(new string[0], out elapsed); try { var jsOutput = test.RunJavascript(new string[0], out generatedJs, out temp, out elapsed, MakeConfiguration); Assert.AreEqual(Portability.NormalizeNewLines(csharpOutput), csOutput.Trim(), "Did not get expected output from C# test"); Assert.AreEqual(Portability.NormalizeNewLines(javascriptOutput), jsOutput.Trim(), "Did not get expected output from JavaScript test"); } catch { Console.Error.WriteLine("// Generated JS: \r\n{0}", generatedJs); throw; } } return(generatedJs); }
protected string GenericIgnoreTest(string fileName, string workingOutput, string jsErrorSubstring, string[] stubbedAssemblies = null) { long elapsed, temp; Func <string> generateJs = null; string jsOutput = null; using (var test = new ComparisonTest(EvaluatorPool, Portability.NormalizeDirectorySeparators(fileName), stubbedAssemblies)) { var csOutput = test.RunCSharp(new string[0], out elapsed); Assert.AreEqual(Portability.NormalizeNewLines(workingOutput), csOutput.Trim()); try { jsOutput = test.RunJavascript(new string[0], out generateJs, out temp, out elapsed, MakeConfiguration); Assert.Fail("Expected javascript to throw an exception containing the string \"" + jsErrorSubstring + "\"."); } catch (JavaScriptEvaluatorException jse) { bool foundMatch = false; foreach (var exc in jse.Exceptions) { if (exc.Message.Contains(jsErrorSubstring)) { foundMatch = true; break; } } if (!foundMatch) { Console.Error.WriteLine("// Was looking for a JS exception containing the string '{0}' but didn't find it.", jsErrorSubstring); Console.Error.WriteLine("// Generated JS: \r\n{0}", generateJs != null ? generateJs() : string.Empty); if (jsOutput != null) { Console.Error.WriteLine("// JS output: \r\n{0}", jsOutput); } throw; } } catch { Console.Error.WriteLine("// Generated JS: \r\n{0}", generateJs != null ? generateJs() : string.Empty); if (jsOutput != null) { Console.Error.WriteLine("// JS output: \r\n{0}", jsOutput); } throw; } } return(generateJs()); }
protected string GetJavascript( string fileName, string expectedText = null, Func <Configuration> makeConfiguration = null, bool dumpJsOnFailure = true, Action <AssemblyTranslator> initializeTranslator = null, IEnumerable <IAnalyzer> analyzers = null ) { long elapsed, temp; Func <string> generateJs = null; string output; using (var test = MakeTest(fileName)) { try { output = test.RunJavascript( new string[0], out generateJs, out temp, out elapsed, makeConfiguration ?? MakeConfiguration, initializeTranslator: initializeTranslator, analyzers: analyzers ); } catch { if (dumpJsOnFailure) { // Failures in very large programs can totally choke the test runner const int limit = 1024 * 16; var truncated = generateJs != null?generateJs() : string.Empty; if (truncated.Length > limit) { truncated = truncated.Substring(0, limit); } Console.Error.WriteLine("// Generated JS: \r\n{0}", truncated); } throw; } if (expectedText != null) { Assert.AreEqual(Portability.NormalizeNewLines(expectedText), output.Trim()); } } return(generateJs()); }
protected string GetJavascript(string fileName, string expectedText = null, Func <Configuration> makeConfiguration = null, bool dumpJsOnFailure = true) { long elapsed, temp; string generatedJs = null, output; using (var test = MakeTest(fileName)) { try { output = test.RunJavascript(new string[0], out generatedJs, out temp, out elapsed, makeConfiguration ?? MakeConfiguration); } catch { if (dumpJsOnFailure) { Console.Error.WriteLine("// Generated JS: \r\n{0}", generatedJs); } throw; } if (expectedText != null) { Assert.AreEqual(Portability.NormalizeNewLines(expectedText), output.Trim()); } } return(generatedJs); }