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); }
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)); } }
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; }
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); }