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, {})