Esempio n. 1
0
        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]));
            }
        }
Esempio n. 2
0
        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;
            }
        }
Esempio n. 3
0
 public void Parse(ExpectedResult er)
 {
     Assert.Equal(er.Ast, Parser.Parse(er.Tokens));
 }
Esempio n. 4
0
 public void Lex(ExpectedResult er)
 {
     Assert.Equal(er.Tokens, Lexer.Lex(er.Input));
 }