def test_task4_module3(): next_def_found = False try_found = False exception_handler_found = False iter_e_next_found = False iter_o_next_found = False try: for x in load_ast_tree('budget/BudgetList.py').body: if isinstance(x, ast.ClassDef): if x.name == 'BudgetList': for y in x.body: if (isinstance(y, ast.FunctionDef) and y.name == '__next__' and y.args.args[0].arg=='self'): next_def_found = True # for z in y.body: if (isinstance(y.body[0], ast.Try)): try_found = True returns = utils.get_returns_from_child(y.body[0]) if returns[0] == 'self:iter_e:__next__': iter_e_next_found = True if (isinstance(y.body[0].handlers[0], ast.ExceptHandler) and y.body[0].handlers[0].type.id == 'StopIteration' and y.body[0].handlers[0].name == 'stop'): exception_handler_found = True returns = utils.get_returns_from_child(y.body[0]) if returns[1] == 'self:iter_o:__next__': iter_o_next_found = True except Exception as e: # print('next e = ' + str(e)) pass assert next_def_found, 'Did you define the method `def __next__(self)`?' assert try_found, 'Do you have a `try` block?'
def test_task2_module3(): iter_def_found = False self_iter_e_found = False self_iter_o_found = False self_return_found = False try: for x in load_ast_tree('budget/BudgetList.py').body: if isinstance(x, ast.ClassDef): if x.name == 'BudgetList': for y in x.body: if (isinstance(y, ast.FunctionDef) and y.name == '__iter__' and y.args.args[0].arg=='self'): iter_def_found = True # for z in y.body: assignments = utils.get_assignments_from_child(y) returns = utils.get_returns_from_child(y) if 'self:iter_e:iter:self:expenses' in assignments: self_iter_e_found = True if 'self:iter_o:iter:self:overages' in assignments: self_iter_o_found = True if 'self' in returns: self_return_found = True except Exception as e: # print('iter e = ' + str(e)) pass assert iter_def_found, 'Did you define the method `def __iter__(self)`?' assert self_iter_e_found, 'Did you assign `self.iter_e` to the iterator `iter(self.expenses)`?' assert self_iter_o_found, 'Did you assign `self.iter_o` to the iterator `iter(self.overages)`?' assert self_return_found, 'Did you return `self`?'
def test_task5_module4(): return_found = False try: for x in load_ast_tree('budget/Expense.py').body: if isinstance(x, ast.ClassDef): if x.name == 'Expenses': for y in x.body: if (isinstance(y, ast.FunctionDef) and y.name == 'categorize_set_comprehension'): for z in y.body: returns = utils.get_returns_from_child(z) print("returns = " + str(returns)) if 'necessary_expenses:food_expenses:unnecessary_expenses' in returns: return_found = True except Exception as e: # print('iter e = ' + str(e)) pass assert return_found, 'Did you return `[necessary_expenses, food_expenses, unnecessary_expenses]`?'