test_ndarray_backed.py 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. """
  2. Tests for subclasses of NDArrayBackedExtensionArray
  3. """
  4. import numpy as np
  5. from pandas import (
  6. CategoricalIndex,
  7. date_range,
  8. )
  9. from pandas.core.arrays import (
  10. Categorical,
  11. DatetimeArray,
  12. PandasArray,
  13. TimedeltaArray,
  14. )
  15. class TestEmpty:
  16. def test_empty_categorical(self):
  17. ci = CategoricalIndex(["a", "b", "c"], ordered=True)
  18. dtype = ci.dtype
  19. # case with int8 codes
  20. shape = (4,)
  21. result = Categorical._empty(shape, dtype=dtype)
  22. assert isinstance(result, Categorical)
  23. assert result.shape == shape
  24. assert result._ndarray.dtype == np.int8
  25. # case where repr would segfault if we didn't override base implementation
  26. result = Categorical._empty((4096,), dtype=dtype)
  27. assert isinstance(result, Categorical)
  28. assert result.shape == (4096,)
  29. assert result._ndarray.dtype == np.int8
  30. repr(result)
  31. # case with int16 codes
  32. ci = CategoricalIndex(list(range(512)) * 4, ordered=False)
  33. dtype = ci.dtype
  34. result = Categorical._empty(shape, dtype=dtype)
  35. assert isinstance(result, Categorical)
  36. assert result.shape == shape
  37. assert result._ndarray.dtype == np.int16
  38. def test_empty_dt64tz(self):
  39. dti = date_range("2016-01-01", periods=2, tz="Asia/Tokyo")
  40. dtype = dti.dtype
  41. shape = (0,)
  42. result = DatetimeArray._empty(shape, dtype=dtype)
  43. assert result.dtype == dtype
  44. assert isinstance(result, DatetimeArray)
  45. assert result.shape == shape
  46. def test_empty_dt64(self):
  47. shape = (3, 9)
  48. result = DatetimeArray._empty(shape, dtype="datetime64[ns]")
  49. assert isinstance(result, DatetimeArray)
  50. assert result.shape == shape
  51. def test_empty_td64(self):
  52. shape = (3, 9)
  53. result = TimedeltaArray._empty(shape, dtype="m8[ns]")
  54. assert isinstance(result, TimedeltaArray)
  55. assert result.shape == shape
  56. def test_empty_pandas_array(self):
  57. arr = PandasArray(np.array([1, 2]))
  58. dtype = arr.dtype
  59. shape = (3, 9)
  60. result = PandasArray._empty(shape, dtype=dtype)
  61. assert isinstance(result, PandasArray)
  62. assert result.dtype == dtype
  63. assert result.shape == shape