Example #1
0
        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);
        }
Example #2
0
        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());
        }
Example #3
0
        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());
        }
Example #4
0
        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);
        }