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)"); }
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)"); }
public void ParseProgram_WithNegativeNumbers() { var expectedAst = new AstList(new IAstNode[] { new AstSymbol("*"), new AstIntNumber(-3), new AstIntNumber(6), }); AstAssert.Program(expectedAst, "(* -3 6)"); }
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\")"); }
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)"); }
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)); }
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]); } }
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))"); }
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)"); }
public void VisitList(AstList ast) => IncrementCallCount(nameof(VisitList));