def test_one_iteration(self): interpreter = Interpreter(Ingredients([Ingredient("number", IngredientProperties(1, True, False))])) following_instructions = [ {"command": "put", "ingredient": "number", "mixing_bowl_id": None, "lineno": 8}, {"command": "loop_end", "ingredient": "number", "verb": "counted", "lineno": 9}, ] interpreter.loop_start("Count", "number", following_instructions, 7) assert interpreter.first_mixing_bowl == Ingredients( [Ingredient("number", IngredientProperties(1, True, False))] )
class TestInterpreterLoopStart(object): def setup_method(self, method): global_ingredients = Ingredients([Ingredient("number", IngredientProperties(3, True, False))]) self.interpreter = Interpreter(global_ingredients) def test_one_iteration(self): interpreter = Interpreter(Ingredients([Ingredient("number", IngredientProperties(1, True, False))])) following_instructions = [ {"command": "put", "ingredient": "number", "mixing_bowl_id": None, "lineno": 8}, {"command": "loop_end", "ingredient": "number", "verb": "counted", "lineno": 9}, ] interpreter.loop_start("Count", "number", following_instructions, 7) assert interpreter.first_mixing_bowl == Ingredients( [Ingredient("number", IngredientProperties(1, True, False))] ) def test_multiple_iterations(self): following_instructions = [ {"command": "put", "ingredient": "number", "mixing_bowl_id": None, "lineno": 8}, {"command": "loop_end", "ingredient": "number", "verb": "counted", "lineno": 9}, ] self.interpreter.loop_start("Count", "number", following_instructions, 7) assert self.interpreter.first_mixing_bowl == Ingredients( [ Ingredient("number", IngredientProperties(3, True, False)), Ingredient("number", IngredientProperties(2, True, False)), Ingredient("number", IngredientProperties(1, True, False)), ] ) @pytest.mark.xfail def test_nested_loops(self): assert False def test_missing_loop_end(self): following_instructions = [ {"command": "put", "ingredient": "number", "mixing_bowl_id": None, "lineno": 8}, {"command": "add", "ingredient": "number", "mixing_bowl_id": None, "lineno": 9}, ] with pytest.raises(MissingLoopEndError): self.interpreter.loop_start("Count", "number", following_instructions, 7)