示例#1
0
 def test_eval_method_with_false_expression(self):
     env = {"x": 0}
     while_stmt = WhileStatement(
         RelOpexpr(">", Varexpr("x"), Integer(10)),
         AssignStatement("x", BinOpexpr("+", Varexpr("x"), Integer(1))))
     while_stmt.eval(env)
     self.assertEqual(env["x"], 0)
示例#2
0
 def parse_if_statement_method_with_else_statement(self):
     tokens = lex("if x > 22 then\nprint x;\nelse\nprint 0;\ndone\n")
     parser = Parser(tokens)
     parser.advance()
     ast = parser.parse_if_statement()
     expected_ast = IfStatement(RelOpexpr(">", Varexpr("x"), Integer(22)),
                                AST([PrintStatement(Varexpr("x"))]),
                                AST([PrintStatement(Integer(0))]))
     self.assertEqual(ast, expected_ast)
示例#3
0
 def test_parse_while_statement_method(self):
     tokens = lex("while x > 22 do\nprint x;\nx := x - 1;\ndone\n")
     parser = Parser(tokens)
     parser.advance()
     ast = parser.parse_while_statement()
     expected_ast = WhileStatement(
         RelOpexpr(">", Varexpr("x"), Integer(22)),
         AST([
             PrintStatement(Varexpr("x")),
             AssignStatement("x", BinOpexpr("-", Varexpr("x"), Integer(1)))
         ]),
     )
     self.assertEqual(ast, expected_ast)
示例#4
0
文件: test_ast.py 项目: afaki077/vsi
 def test_eval_method_with_not_equal_operator(self):
     relopexpr = RelOpexpr("!=", Integer(10), Integer(12))
     env = {}
     result = relopexpr.eval(env)
     self.assertTrue(result)
示例#5
0
文件: test_ast.py 项目: afaki077/vsi
 def test_eval_method_with_greater_than_or_equal_operator(self):
     relopexpr = RelOpexpr(">=", Integer(10), Integer(12))
     env = {}
     result = relopexpr.eval(env)
     self.assertFalse(result)
示例#6
0
 def test_eval_method_with_not_equal_operator(self):
     relopexpr = RelOpexpr("!=", Integer(10), Integer(12))
     env = {}
     result = relopexpr.eval(env)
     self.assertTrue(result)
示例#7
0
 def test_eval_method_with_greater_than_or_equal_operator(self):
     relopexpr = RelOpexpr(">=", Integer(10), Integer(12))
     env = {}
     result = relopexpr.eval(env)
     self.assertFalse(result)
示例#8
0
 def test___repr___method(self):
     relopexpr = RelOpexpr("==", Integer(10), Integer(12))
     relopexpr_repr = repr(relopexpr)
     expected_repr = "RelOpexpr(==, Integer(10), Integer(12))"
     self.assertEqual(relopexpr_repr, expected_repr)