public void Basics() { try{ var parser = new BVE5RouteFileParser(); var stmt = parser.ParseOneStatement(@"Sound.Load(sounds.txt);"); var expected1 = new List<TypeDescriber>{ TypeDescriber.Create(NodeType.Statement, new List<TypeDescriber>{ TypeDescriber.Create(NodeType.Invocation, new List<TypeDescriber>{ TypeDescriber.Create(NodeType.MemRef, new List<TypeDescriber>{ TypeDescriber.Create(NodeType.Identifier, null), TypeDescriber.Create(NodeType.Identifier, null), TypeDescriber.Create(NodeType.Identifier, null) }) }) }) }; Helpers.TestStructualEqual(expected1.GetEnumerator(), stmt); } catch(TypeLoadException e){ var asms = AppDomain.CurrentDomain.GetAssemblies(); foreach(var asm in asms) Console.WriteLine(asm.FullName); Console.WriteLine(e.Message); Console.WriteLine(e.TypeName); } }
public void Basics() { var parser = new BVE5RouteFileParser(); var stmt = parser.ParseOneStatement("Sound.Load(sounds.txt);"); var expected1 = new List<TypeDescriber>{ TypeDescriber.Create(NodeType.Statement, new List<TypeDescriber>{ TypeDescriber.Create(NodeType.Invocation, new List<TypeDescriber>{ TypeDescriber.Create(NodeType.MemRef, new List<TypeDescriber>{ TypeDescriber.Create(NodeType.Identifier, null), TypeDescriber.Create(NodeType.Identifier, null) }), TypeDescriber.Create(NodeType.Identifier, null) }) }) }; Helpers.TestStructualEqual(expected1.GetEnumerator(), stmt); var stmt2 = parser.ParseOneStatement("1000;"); var expected2 = new List<TypeDescriber>{ TypeDescriber.Create(NodeType.Statement, new List<TypeDescriber>{ TypeDescriber.Create(NodeType.Literal, null) }) }; Helpers.TestStructualEqual(expected2.GetEnumerator(), stmt2); var stmt3 = parser.ParseOneStatement("Track[Rail1].Position(9.7, 0, 300, 0);"); var expected3 = new List<TypeDescriber>{ TypeDescriber.Create(NodeType.Statement, new List<TypeDescriber>{ TypeDescriber.Create(NodeType.Invocation, new List<TypeDescriber>{ TypeDescriber.Create(NodeType.MemRef, new List<TypeDescriber>{ TypeDescriber.Create(NodeType.Indexer, new List<TypeDescriber>{ TypeDescriber.Create(NodeType.Identifier, null), TypeDescriber.Create(NodeType.Literal, null) }), TypeDescriber.Create(NodeType.Identifier, null) }), TypeDescriber.Create(NodeType.Literal, null), //9.7 TypeDescriber.Create(NodeType.Literal, null), //0 TypeDescriber.Create(NodeType.Literal, null), //300 TypeDescriber.Create(NodeType.Literal, null) //0 }) }) }; Helpers.TestStructualEqual(expected3.GetEnumerator(), stmt3); }
public void Invalid() { var parser = new BVE5RouteFileParser(); var tree = parser.Parse("bvets mip 1.00", "<invalid header>", true); Assert.IsTrue(parser.HasErrors && parser.Errors.Count() == 1); Assert.IsNull(tree); var parser2 = new BVE5RouteFileParser(); var stmt = parser2.ParseOneStatement("Track[.Position"); var expected1 = new List<TypeDescriber>{ TypeDescriber.Create(NodeType.Statement, new List<TypeDescriber>{ TypeDescriber.Create(NodeType.MemRef, new List<TypeDescriber>{ TypeDescriber.Create(NodeType.Indexer, new List<TypeDescriber>{ TypeDescriber.Create(NodeType.Identifier, null) }), TypeDescriber.Create(NodeType.Identifier, null) }) }) }; Helpers.TestStructualEqual(expected1.GetEnumerator(), stmt); Assert.IsTrue(parser2.HasErrors && parser2.Errors.Count() == 3); var parser3 = new BVE5RouteFileParser(); var stmt2 = parser3.ParseOneStatement("Track[0].Position(100"); var expected2 = new List<TypeDescriber>{ TypeDescriber.Create(NodeType.Statement, new List<TypeDescriber>{ TypeDescriber.Create(NodeType.Invocation, new List<TypeDescriber>{ TypeDescriber.Create(NodeType.MemRef, new List<TypeDescriber>{ TypeDescriber.Create(NodeType.Indexer, new List<TypeDescriber>{ TypeDescriber.Create(NodeType.Identifier, null), TypeDescriber.Create(NodeType.Literal, null) }), TypeDescriber.Create(NodeType.Identifier, null) }), TypeDescriber.Create(NodeType.Literal, null) }) }) }; Helpers.TestStructualEqual(expected2.GetEnumerator(), stmt2); Assert.IsTrue(parser3.HasErrors && parser3.Errors.Count() == 2); }
public void Additions() { var parser = new BVE5RouteFileParser(); var stmt = parser.ParseOneStatement("let a = 1;"); var expected1 = new List<TypeDescriber>{ TypeDescriber.Create(NodeType.Statement, new List<TypeDescriber>{ TypeDescriber.Create(NodeType.Definition, new List<TypeDescriber>{ TypeDescriber.Create(NodeType.Identifier, null), TypeDescriber.Create(NodeType.Literal, null) }) }) }; Helpers.TestStructualEqual(expected1.GetEnumerator(), stmt); var stmt2 = parser.ParseOneStatement("let ‰½‚© = 1;"); var expected2 = new List<TypeDescriber>{ TypeDescriber.Create(NodeType.Statement, new List<TypeDescriber>{ TypeDescriber.Create(NodeType.Definition, new List<TypeDescriber>{ TypeDescriber.Create(NodeType.Identifier, null), TypeDescriber.Create(NodeType.Literal, null) }) }) }; Helpers.TestStructualEqual(expected2.GetEnumerator(), stmt2); }