예제 #1
0
        public void AstBuilding_Invalid_NotImplemented()
        {
            var path       = Path.Combine("tests", "ast-building", "invalid", "not-implemented");
            var astBuilder = new AstBuilderVisitor();

            foreach (var testFile in Directory.GetFiles(path, "*.js", SearchOption.AllDirectories))
            {
                var parser    = Program.CreateParser(File.ReadAllText(testFile));
                var parseTree = Program.TryToBuildParseTree(parser);
                Assert.ThrowsException <NotImplementedException>(() => astBuilder.Visit(parseTree));
            }
        }
예제 #2
0
        public void AstBuilding_Valid()
        {
            var path         = Path.Combine("tests", "ast-building", "valid");
            var astBuilder   = new AstBuilderVisitor();
            var asciiPrinter = new AsciiTreeBuilderVisitor();

            foreach (var testFile in Directory.GetFiles(path, "*.js", SearchOption.AllDirectories))
            {
                var parser = Program.CreateParser(File.ReadAllText(testFile));
                asciiPrinter.Visit(astBuilder.Visit(Program.TryToBuildParseTree(parser)));

                var expected = File.ReadAllText(Path.ChangeExtension(testFile, ".tree.ascii"));
                Assert.AreEqual(asciiPrinter.GetStringTree(), expected);
                asciiPrinter.ClearTree();
            }
        }