Esempio n. 1
0
def parse_cooking_time(line, lineno=None):
    m = re.match(COOKING_TIME_PATTERN, line)
    if not is_cooking_time(line):
        raise syntax_errors.InvalidCookingTimeError(lineno)
    time, unit = m.groups()
    validate_cooking_time(time, unit, lineno)
    cooking_time = int(time)
    return cooking_time, unit
Esempio n. 2
0
 def test_nonmatching_unit(self, time, unit):
     with pytest.raises(syntax_errors.NonMatchingUnitError) as e:
         validate_cooking_time(time, unit)
     assert e.value.number == int(time)
     assert e.value.unit == unit
Esempio n. 3
0
 def test_zero_cooking_time(self):
     with pytest.raises(syntax_errors.NotAllowedTimeError) as e:
         validate_cooking_time('0', 'minutes')
     assert e.value.time == 0
Esempio n. 4
0
 def test_invalid_time_with_lineno(self):
     with pytest.raises(syntax_errors.InvalidCookingTimeError) as e:
         validate_cooking_time('meh', 'hours', 42)
     assert e.value.lineno == 42
Esempio n. 5
0
 def test_invalid_time_without_lineno(self):
     with pytest.raises(syntax_errors.InvalidCookingTimeError) as e:
         validate_cooking_time('eek', 'minutes')
     assert e.value.lineno is None