Exemple #1
0
        public void ParseProgram_AddingTwoNumbers()
        {
            var expectedAst = new AstList(new IAstNode[] {
                new AstSymbol("add"),
                new AstIntNumber(2),
                new AstIntNumber(3),
            });

            AstAssert.Program(expectedAst, "(add 2 3)");
        }
Exemple #2
0
        public void ParseProgram_WithDoubleValues()
        {
            var expectedAst = new AstList(new IAstNode[] {
                new AstSymbol("+"),
                new AstDoubleNumber(0.1),
                new AstDoubleNumber(0.2),
            });

            AstAssert.Program(expectedAst, "(+ 0.1 0.2)");
        }
Exemple #3
0
        public void ParseProgram_WithNegativeNumbers()
        {
            var expectedAst = new AstList(new IAstNode[] {
                new AstSymbol("*"),
                new AstIntNumber(-3),
                new AstIntNumber(6),
            });

            AstAssert.Program(expectedAst, "(* -3 6)");
        }
Exemple #4
0
        public void ParseProgram_WithStringValues()
        {
            var expectedAst = new AstList(new IAstNode[] {
                new AstSymbol("strcat"),
                new AstString("foo"),
                new AstString("bar"),
            });

            AstAssert.Program(expectedAst, "(strcat \"foo\" \"bar\")");
        }
Exemple #5
0
        public void ParseProgram_WithQuote()
        {
            var expectedAst = new AstList(
                new AstSymbol("quote"), new AstList(
                    new AstIntNumber(1),
                    new AstIntNumber(2),
                    new AstIntNumber(3)
                    )
                );

            AstAssert.Program(expectedAst, "'(1 2 3)");
        }
Exemple #6
0
        public void ParseList()
        {
            input.EnqueueAll(new Token("("),
                             new Token("ra"),
                             new Token("("),
                             new Token("wr"),
                             new Token(")"),
                             new Token(")"));
            var expected = new AstList(new AstSymbol("ra"), new AstList(new AstSymbol("wr")));

            Assert.Equal(expected, Parse(input));
        }
Exemple #7
0
        public void VisitList(AstList ast)
        {
            Assert.IsType <AstList>(this.expected);
            var expectedAst = (AstList)this.expected;

            Assert.True(expectedAst.Length == ast.Length, "Expected length of elements in the list is not equal");

            for (int i = 0; i < ast.Length; i++)
            {
                AssertVisit(expectedAst[i], ast[i]);
            }
        }
Exemple #8
0
        public void ParseProgram_ParsingListInList()
        {
            var expectedAst = new AstList(new IAstNode[] {
                new AstSymbol("add"),
                new AstIntNumber(2),
                new AstList(new IAstNode[] {
                    new AstSymbol("mul"),
                    new AstIntNumber(3),
                    new AstIntNumber(4),
                }),
            });

            AstAssert.Program(expectedAst, "(add 2 (mul 3 4))");
        }
Exemple #9
0
        public void ParseProgram_ParsingMathOperation()
        {
            var expectedAst = new AstList(new IAstNode[] {
                new AstSymbol("-"),
                new AstList(new IAstNode[] {
                    new AstSymbol("+"),
                    new AstIntNumber(5),
                    new AstList(new IAstNode[] {
                        new AstSymbol("*"),
                        new AstIntNumber(2),
                        new AstIntNumber(3),
                    }),
                }),
                new AstIntNumber(3),
            });

            AstAssert.Program(expectedAst, "(- (+ 5 (* 2 3)) 3)");
        }
Exemple #10
0
 public void VisitList(AstList ast) => IncrementCallCount(nameof(VisitList));