public void InitFileParser()
        {
            var parser = new InitFileParser("BveTs Vehicle Parameters", BVE5FileKind.VehicleParametersFile);
            var stmt = parser.ParseOneStatement("[Cab]");
            var expected1 = new List<TypeDescriber>{
                TypeDescriber.Create(NodeType.SectionStmt, new List<TypeDescriber>{
                    TypeDescriber.Create(NodeType.Identifier, null)
                })
            };
            Helpers.TestStructualEqual(expected1.GetEnumerator(), stmt);

            var stmt2 = parser.ParseOneStatement("driver = 100\n");
            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);

            var tree = parser.Parse(@"color = #33ffbb
            ;This is a comment
            MotorcarCount = 4
            DayTimeImage = imgs\test.png
            ", "<string>");
            var expected3 = new List<TypeDescriber>{
                TypeDescriber.Create(NodeType.Tree, 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)
                        })
                    }),
                    TypeDescriber.Create(NodeType.Statement, new List<TypeDescriber>{
                        TypeDescriber.Create(NodeType.Definition, new List<TypeDescriber>{
                            TypeDescriber.Create(NodeType.Identifier, null),
                            TypeDescriber.Create(NodeType.Literal, null)
                        })
                    }),
                    TypeDescriber.Create(NodeType.Statement, new List<TypeDescriber>{
                        TypeDescriber.Create(NodeType.Definition, new List<TypeDescriber>{
                            TypeDescriber.Create(NodeType.Identifier, null),
                            TypeDescriber.Create(NodeType.Literal, null)
                        })
                    })
                })
            };
            Assert.IsFalse(tree.Errors.Any());
            Helpers.TestStructualEqual(expected3.GetEnumerator(), tree);
        }
        public void Invalid()
        {
            var parser = new InitFileParser("BveTs Vehicle Parameters", BVE5FileKind.VehicleParametersFile);
            var tree = parser.Parse("bvets vihecle params 1.00\n", "<invalid header>", true);
            Assert.IsTrue(parser.HasErrors && parser.Errors.Count() == 1);
            Assert.IsNull(tree);

            var parser2 = new InitFileParser("BveTs Vehicle Parameters", BVE5FileKind.VehicleParametersFile);
            var stmt = parser2.ParseOneStatement("[Cab\n");
            Assert.IsTrue(parser2.HasErrors && parser2.Errors.Count() == 1);
        }
 public void MetaHeader()
 {
     var parser = new InitFileParser("BveTs Vehicle Parameters", BVE5FileKind.VehicleParametersFile);
     var tree = parser.Parse(@"BveTs Vehicle Parameters 1.00
     [Cab]
     Color = #ff0066
     ;This is a comment!
     DayTimeImage = imgs\test.png
     ", "<string>", true);
     var expected = new List<TypeDescriber>{
         TypeDescriber.Create(NodeType.Tree, new List<TypeDescriber>{
             TypeDescriber.Create(NodeType.SectionStmt, new List<TypeDescriber>{
                	TypeDescriber.Create(NodeType.Identifier, null)
             }),
             TypeDescriber.Create(NodeType.Statement, new List<TypeDescriber>{
                 TypeDescriber.Create(NodeType.Definition, new List<TypeDescriber>{
                     TypeDescriber.Create(NodeType.Identifier, null),
                     TypeDescriber.Create(NodeType.Literal, null)
                 })
             }),
             TypeDescriber.Create(NodeType.Statement, new List<TypeDescriber>{
                 TypeDescriber.Create(NodeType.Definition, new List<TypeDescriber>{
                     TypeDescriber.Create(NodeType.Identifier, null),
                     TypeDescriber.Create(NodeType.Literal, null)
                 })
             })
         })
     };
     Assert.IsFalse(parser.HasErrors);
     Helpers.TestStructualEqual(expected.GetEnumerator(), tree);
 }
 internal BVE5InitFileCompleter(BVE5FileKind kind)
 {
     SemanticInfo = BVE5ResourceManager.InitFileSemanticInfos[kind.ToString()].SemanticInfos;
     parser = ParserFactory.CreateInitFileParser(kind);
 }