test_isoparse_prop.py 824 B

123456789101112131415161718192021222324252627
  1. from hypothesis import given, assume
  2. from hypothesis import strategies as st
  3. from dateutil import tz
  4. from dateutil.parser import isoparse
  5. import pytest
  6. # Strategies
  7. TIME_ZONE_STRATEGY = st.sampled_from([None, tz.UTC] +
  8. [tz.gettz(zname) for zname in ('US/Eastern', 'US/Pacific',
  9. 'Australia/Sydney', 'Europe/London')])
  10. ASCII_STRATEGY = st.characters(max_codepoint=127)
  11. @pytest.mark.isoparser
  12. @given(dt=st.datetimes(timezones=TIME_ZONE_STRATEGY), sep=ASCII_STRATEGY)
  13. def test_timespec_auto(dt, sep):
  14. if dt.tzinfo is not None:
  15. # Assume offset has no sub-second components
  16. assume(dt.utcoffset().total_seconds() % 60 == 0)
  17. sep = str(sep) # Python 2.7 requires bytes
  18. dtstr = dt.isoformat(sep=sep)
  19. dt_rt = isoparse(dtstr)
  20. assert dt_rt == dt