Beispiel #1
0
 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))]
     )
Beispiel #2
0
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)