public void MetaHeader() { var parser = new BVE5RouteFileParser(); var tree = parser.Parse(@"BveTs Map 1.00 Sound.Load(sounds\a.wav);", "<string>", true); Assert.IsFalse(parser.HasErrors); }
public void Statements() { var parser = new BVE5RouteFileParser(); var tree = parser.Parse(@"Track[1].Position(0, 0, 100, 0); //This is a comment Track[2].Position(5.4, 0, 100, 0);", "<string>"); var expected4 = new List<TypeDescriber>{ TypeDescriber.Create(NodeType.Tree, 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), //0 TypeDescriber.Create(NodeType.Literal, null), //0 TypeDescriber.Create(NodeType.Literal, null), //100 TypeDescriber.Create(NodeType.Literal, null) //0 }) }), 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), //5.4 TypeDescriber.Create(NodeType.Literal, null), //0 TypeDescriber.Create(NodeType.Literal, null), //100 TypeDescriber.Create(NodeType.Literal, null) //0 }) }) }) }; Helpers.TestStructualEqual(expected4.GetEnumerator(), tree); }
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); }