def test_parse(): output = parse('4 years, 3 months and 4 days') expected_output = datetime.timedelta( weeks=4 * 52 + 3 * 4, days=4, ) assert output == expected_output
def test_parse_iso_8601_duration_format(): output = parse('P1Y2M3W10DT2H30M') expected_output = datetime.timedelta(weeks=1 * 52 + 2 * 4 + 3, days=10, hours=2, minutes=30) assert output == expected_output
def test_parse_uptime_format(): output = parse('2 days, 4:13:02') expected_output = datetime.timedelta(days=2, hours=4, minutes=13, seconds=2) assert output == expected_output
def test_parse_duration(): output = parse('2:04:13:2.266') expected_output = datetime.timedelta(hours=2, minutes=4, seconds=13, milliseconds=2, microseconds=266) assert output == expected_output
def test_parse_postgres_day_time_format(): output = parse('3 days 04:05:06') expected_output = datetime.timedelta(days=3, hours=4, minutes=5, seconds=6) assert output == expected_output
def test_parse_packed_spaced(): output = parse('1 w 3 d 2 h 32 m') expected_output = datetime.timedelta(weeks=1, days=3, hours=2, minutes=32) assert output == expected_output
def test_parse_free_text(): output = parse('She said she will comback in 2 hours and 30 minutes') expected_output = datetime.timedelta(hours=2, minutes=30) assert output == expected_output
def test_parse_from_to(): output = parse('3 to 4 days, 5 to 6 hours') expected_min = datetime.timedelta(days=3, hours=5) expected_max = datetime.timedelta(days=4, hours=6) assert expected_min <= output <= expected_max
def test_parse_whitespace(): output = parse('-4 years , \t 3 days ') expected_output = datetime.timedelta(weeks=-4 * 52, days=3) assert output == expected_output
def test_parse_negative(): output = parse('- 3 hours and 30 minutes and 300 microseconds') expected_output = datetime.timedelta(hours=-3, minutes=30, milliseconds=300 * 0.001) assert output == expected_output
def test_parse_no_expression(): with pytest.raises(ValueError): parse('no time')
def test_parse_non_string(): with pytest.raises(TypeError): parse(None)
def test_parse_empty(): with pytest.raises(ValueError): parse('')