Esempio n. 1
0
        public void CanPrintShaderSource()
        {
            var parser  = TestUtils.SetupParser(TestShaderSources.BigShaderText);
            var context = parser.external_declaration_list();
            var builder = new AstBuilderVisitor();
            var tree    = builder.Visit(context);

            var subject = new AstPrinterVisitor();
            AstPrinterContext printerContext = new AstPrinterContext();

            var result = subject.Print(tree);
        }
Esempio n. 2
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));
            }
        }
Esempio n. 3
0
        public void CanParseShader()
        {
            var parser  = TestUtils.SetupParser(TestShaderSources.BigShaderText);
            var context = parser.external_declaration_list();

            var subject = new AstBuilderVisitor();

            var result = subject.Visit(context);

            Assert.IsTrue(result is Root);
            var root = result as Root;
        }
Esempio n. 4
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();
            }
        }
        public void CanParsePrecisionDeclarationInRoot()
        {
            var parser  = TestUtils.SetupParser(this.PrecisionDeclarationInput);
            var context = parser.external_declaration_list();

            var subject = new AstBuilderVisitor();

            var result = subject.Visit(context);

            Assert.IsTrue(result is Root);
            var root = result as Root;

            Assert.AreEqual(1, root.Declarations.Count);
            var precDeclaration = root.Declarations[0] as PrecisionDeclaration;

            var typeSpec = precDeclaration.Type as TypeNameSpecifier;

            Assert.IsNotNull(typeSpec);
            Assert.AreEqual("float", typeSpec.Identifier.Name);

            Assert.AreEqual(PrecisionQualifier.HighP, precDeclaration.PrecisionQualifier);
        }