Ejemplo n.º 1
0
class TestInterpreterTake(object):
    def setup_method(self, method):
        self.interpreter = Interpreter()

    def test_nonexisting(self):
        with pytest.raises(UndefinedIngredientError) as e:
            self.interpreter.take("milk", stdin=StringIO("23\n"))
        assert e.value.ingredient == "milk"

    def test_overwriting(self):
        self.interpreter.global_ingredients["sausage"] = IngredientProperties(42, True, False)
        self.interpreter.take("sausage", stdin=StringIO("57\n"))
        sausage = self.interpreter.global_ingredients["sausage"]
        assert sausage == Ingredient("sausage", IngredientProperties(57, True, False))

    def test_invalid_num_without_lineno(self):
        with pytest.raises(InvalidInputError) as e:
            self.interpreter.take("sausage", stdin=StringIO("not a number!\n"))
        assert e.value.value == "not a number!"
        assert e.value.lineno is None

    def test_invalid_num_with_lineno(self):
        with pytest.raises(InvalidInputError) as e:
            self.interpreter.take("sausage", 7, StringIO("not a number!\n"))
        assert e.value.value == "not a number!"
        assert e.value.lineno == 7