public void GenerateCode(ExpectedResult er) { if (er.Outputs == null) { return; } Assert.Equal(er.NewAsts?.Count(), er.Outputs.Count()); var newAsts = er.NewAsts.ToArray(); var outputs = er.Outputs.ToArray(); for (int i = 0; i < newAsts.Length; i++) { Assert.Equal(outputs[i], CodeGenerator.Stringify(newAsts[i])); } }
public void TransformAst(ExpectedResult er) { Assert.False(er.Transforms == null ^ er.NewAsts == null); if (er.Transforms == null) { return; } var transforms = er.Transforms.ToArray(); var newAsts = er.NewAsts.ToArray(); Assert.Equal(transforms.Length, newAsts.Length); Ast currentAst = er.Ast; for (int i = 0; i < transforms.Length; i++) { Ast newAst = transforms[i].Apply(currentAst); Assert.Equal(newAsts[i], newAst); currentAst = newAst; } }
public void Parse(ExpectedResult er) { Assert.Equal(er.Ast, Parser.Parse(er.Tokens)); }
public void Lex(ExpectedResult er) { Assert.Equal(er.Tokens, Lexer.Lex(er.Input)); }