test_fields.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import numpy as np
  2. import pytest
  3. from pandas._libs.tslibs import fields
  4. import pandas._testing as tm
  5. @pytest.fixture
  6. def dtindex():
  7. dtindex = np.arange(5, dtype=np.int64) * 10**9 * 3600 * 24 * 32
  8. dtindex.flags.writeable = False
  9. return dtindex
  10. def test_get_date_name_field_readonly(dtindex):
  11. # https://github.com/vaexio/vaex/issues/357
  12. # fields functions shouldn't raise when we pass read-only data
  13. result = fields.get_date_name_field(dtindex, "month_name")
  14. expected = np.array(["January", "February", "March", "April", "May"], dtype=object)
  15. tm.assert_numpy_array_equal(result, expected)
  16. def test_get_date_field_readonly(dtindex):
  17. result = fields.get_date_field(dtindex, "Y")
  18. expected = np.array([1970, 1970, 1970, 1970, 1970], dtype=np.int32)
  19. tm.assert_numpy_array_equal(result, expected)
  20. def test_get_start_end_field_readonly(dtindex):
  21. result = fields.get_start_end_field(dtindex, "is_month_start", None)
  22. expected = np.array([True, False, False, False, False], dtype=np.bool_)
  23. tm.assert_numpy_array_equal(result, expected)
  24. def test_get_timedelta_field_readonly(dtindex):
  25. # treat dtindex as timedeltas for this next one
  26. result = fields.get_timedelta_field(dtindex, "seconds")
  27. expected = np.array([0] * 5, dtype=np.int32)
  28. tm.assert_numpy_array_equal(result, expected)