static void TestEV3Compiler() { String lmsFilename = Path.Combine(TEST_OUTPUT, Path.GetFileNameWithoutExtension(SOURCE_FILENAME)) + ".lms2"; using (EV3Compiler compiler = new EV3Compiler()) using (StreamReader reader = new StreamReader(SOURCE_FILENAME)) using (StreamWriter writer = new StreamWriter(lmsFilename)) { compiler.Compile(reader, writer); compiler.Errors.ForEach(e => Console.WriteLine($"ERROR: {e}")); Console.Write(compiler.Dump()); writer.WriteLine(); writer.WriteLine("---------------------------------------------------"); writer.WriteLine(); writer.Write(compiler.Dump()); } }
protected void TestCompileFailure(string sbCode, bool doOptimization = false) { sbCode = AttachOptimizationPragma(sbCode, doOptimization); using (EV3Compiler compiler = new EV3Compiler()) using (StringReader stringReader = new StringReader(sbCode)) using (StringWriter writer = new StringWriter()) { compiler.Compile(stringReader, writer); Console.WriteLine(compiler.Dump()); compiler.Errors.Should().NotBeEmpty(); } }
private string Compile(string fileName, bool withDump) { using (EV3Compiler compiler = new EV3Compiler()) using (StreamReader streamReader = new StreamReader(fileName)) using (StringWriter writer = new StringWriter()) { compiler.Compile(streamReader, writer); if (withDump) { Console.WriteLine(compiler.Dump()); } compiler.Errors.Should().BeEmpty(); return(writer.ToString()); } }
protected void TestCompileFailure(string sbCode, string message, int line, int column, bool doOptimization = false) { sbCode = AttachOptimizationPragma(sbCode, doOptimization); using (EV3Compiler compiler = new EV3Compiler()) using (StringReader stringReader = new StringReader(sbCode)) using (StringWriter writer = new StringWriter()) { compiler.Compile(stringReader, writer); Console.WriteLine(compiler.Dump()); Console.WriteLine("======> INPUT CODE <======"); Console.WriteLine(sbCode); Console.WriteLine("======> END CODE <======"); compiler.Errors.Should().Contain(e => e.Message == message && e.Line == line && e.Column == column); } }
private string Compile(string fileName, bool withDump, bool doOptimization) { using (EV3Compiler compiler = new EV3Compiler()) using (StringWriter writer = new StringWriter()) { string sbCode = File.ReadAllText(fileName); sbCode = AttachOptimizationPragma(sbCode, doOptimization); using (StringReader stringReader = new StringReader(sbCode)) { compiler.Compile(stringReader, writer); if (withDump) { Console.WriteLine(compiler.Dump()); } compiler.Errors.Should().BeEmpty(); return(writer.ToString()); } } }
protected void TestIt(string sbCode, string expectedCode, Func <string, string> extractCodeFunc, bool doOptimization = false) { sbCode = AttachOptimizationPragma(sbCode, doOptimization); using (EV3Compiler compiler = new EV3Compiler()) using (StringReader stringReader = new StringReader(sbCode)) using (StringWriter writer = new StringWriter()) { compiler.Compile(stringReader, writer); string code = writer.ToString(); Console.WriteLine("======> ERRORS <======"); foreach (Error error in compiler.Errors) { Console.WriteLine(error); } string extractedCode = extractCodeFunc(code); if (!string.IsNullOrWhiteSpace(expectedCode)) { extractedCode = NormalizeReferences(NormalizeLabels(extractedCode)); expectedCode = NormalizeReferences(NormalizeLabels(expectedCode)); } Console.WriteLine("======> EXTRACTED/EXPECTED CODE <======"); DumpCodeSideBySide(extractedCode, expectedCode); Console.WriteLine("======> FULL CODE <======"); Console.WriteLine(code); Console.WriteLine("======> END CODE <======"); Console.WriteLine(compiler.Dump()); CleanupCode(extractedCode).Should().Be(CleanupCode(expectedCode)); compiler.Errors.Should().BeEmpty(); } }