test_tz_prop.py 963 B

1234567891011121314151617181920212223242526272829303132333435
  1. from datetime import datetime, timedelta
  2. import pytest
  3. import six
  4. from hypothesis import assume, given
  5. from hypothesis import strategies as st
  6. from dateutil import tz as tz
  7. EPOCHALYPSE = datetime.fromtimestamp(2147483647)
  8. NEGATIVE_EPOCHALYPSE = datetime.fromtimestamp(0) - timedelta(seconds=2147483648)
  9. @pytest.mark.gettz
  10. @pytest.mark.parametrize("gettz_arg", [None, ""])
  11. # TODO: Remove bounds when GH #590 is resolved
  12. @given(
  13. dt=st.datetimes(
  14. min_value=NEGATIVE_EPOCHALYPSE, max_value=EPOCHALYPSE, timezones=st.just(tz.UTC),
  15. )
  16. )
  17. def test_gettz_returns_local(gettz_arg, dt):
  18. act_tz = tz.gettz(gettz_arg)
  19. if isinstance(act_tz, tz.tzlocal):
  20. return
  21. dt_act = dt.astimezone(tz.gettz(gettz_arg))
  22. if six.PY2:
  23. dt_exp = dt.astimezone(tz.tzlocal())
  24. else:
  25. dt_exp = dt.astimezone()
  26. assert dt_act == dt_exp
  27. assert dt_act.tzname() == dt_exp.tzname()
  28. assert dt_act.utcoffset() == dt_exp.utcoffset()