示例#1
0
 def test_if(self, interpret_statement_list, interpret_expression):
     args = IntegerLiteral(1)
     body = StatementList()
     fi = If(None, children=[args, body])
     interpret_statement(None, fi, {})
     interpret_expression.assert_called_with(fi, args, {})
     interpret_statement_list.assert_called_with(body, body, {})
 def test_func_def_statement_list_machine(self, interpret_func_def):
     func = FunctionDef('name')
     args = ArgumentList()
     body = StatementList()
     func.children = [args, body]
     scope = {}
     interpret_statement(None, func, scope)
     interpret_func_def.assert_called_with(func, scope)
 def test_if_not_taken(self, interpret_statement_list,
                       interpret_expression):
     interpret_expression.return_value = IntegerLiteral(0)
     args = IntegerLiteral(0)
     body = StatementList()
     fi = If(None, children=[args, body])
     interpret_statement(None, fi, {})
     interpret_expression.assert_called_with(fi, args, {})
     self.assertFalse(interpret_statement_list.called)
    def test_while_statement_machine(self, interpret_statement_list,
                                     is_truthy):
        cond = IntegerLiteral(1)
        body = StatementList()

        elihw = While(None, children=[cond, body])

        # While loop executes 3 times
        is_truthy.side_effect = [True, True, True, False]
        interpret_statement(None, elihw, {})
        is_truthy.assert_called_with(cond, {})
 def test_return_statement_machine(self, interpret_return_statement):
     ret = Return(children=[IntegerLiteral(1)])
     interpret_statement(None, ret, {})
     interpret_return_statement.assert_called_with(None, ret, {})
 def test_expression_statement_machine(self, interpret_expression):
     expr = IntegerLiteral(1)
     interpret_statement(None, expr, {})
     interpret_expression.assert_called_with(None, expr, {})