aboutsummaryrefslogtreecommitdiff
path: root/dateutil/test/property/test_isoparse_prop.py
blob: c6a4b82a31bb91cc2ba6f0b06c2e19de27f4b074 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
from hypothesis import given, assume
from hypothesis import strategies as st

from dateutil import tz
from dateutil.parser import isoparse

import pytest

# Strategies
TIME_ZONE_STRATEGY = st.sampled_from([None, tz.tzutc()] +
    [tz.gettz(zname) for zname in ('US/Eastern', 'US/Pacific',
                                   'Australia/Sydney', 'Europe/London')])
ASCII_STRATEGY = st.characters(max_codepoint=127)


@pytest.mark.isoparser
@given(dt=st.datetimes(timezones=TIME_ZONE_STRATEGY), sep=ASCII_STRATEGY)
def test_timespec_auto(dt, sep):
    if dt.tzinfo is not None:
        # Assume offset has no sub-second components
        assume(dt.utcoffset().total_seconds() % 60 == 0)

    sep = str(sep)          # Python 2.7 requires bytes
    dtstr = dt.isoformat(sep=sep)
    dt_rt = isoparse(dtstr)

    assert dt_rt == dt