def test_non_commutativity(): """ https://www.w3.org/TR/xmlschema-2/#adding-durations-to-instants-commutativity-associativity """ start = datetime(2000, 3, 30) duration1 = parse_duration("P1D") duration2 = parse_duration("P1M") assert start + duration1 + duration2 == datetime(2000, 4, 30) assert start + duration2 + duration1 == datetime(2000, 5, 1)
def test_parse_duration_errors(duration, exception, error_msg): with pytest.raises(exception) as exc: parse_duration(duration) assert exc.match(error_msg)
def test_parse_duration(duration, date_duration, time_duration): assert parse_duration(duration) == Duration(date_duration, time_duration)
def test_parse_inverse_of_format(date_duration, time_duration): duration = Duration(date_duration, time_duration) assert parse_duration(format_duration(duration)) == duration
def test_sub_datetime_duration(start, duration, end): assert start - parse_duration(duration) == end
def test_add_datetime_duration(start, duration, end): assert start + parse_duration(duration) == end assert parse_duration(duration) + start == end