76 lines
2.2 KiB
Python
76 lines
2.2 KiB
Python
"""
|
|
Tests for subclasses of NDArrayBackedExtensionArray
|
|
"""
|
|
import numpy as np
|
|
|
|
from pandas import (
|
|
CategoricalIndex,
|
|
date_range,
|
|
)
|
|
from pandas.core.arrays import (
|
|
Categorical,
|
|
DatetimeArray,
|
|
PandasArray,
|
|
TimedeltaArray,
|
|
)
|
|
|
|
|
|
class TestEmpty:
|
|
def test_empty_categorical(self):
|
|
ci = CategoricalIndex(["a", "b", "c"], ordered=True)
|
|
dtype = ci.dtype
|
|
|
|
# case with int8 codes
|
|
shape = (4,)
|
|
result = Categorical._empty(shape, dtype=dtype)
|
|
assert isinstance(result, Categorical)
|
|
assert result.shape == shape
|
|
assert result._ndarray.dtype == np.int8
|
|
|
|
# case where repr would segfault if we didn't override base implementation
|
|
result = Categorical._empty((4096,), dtype=dtype)
|
|
assert isinstance(result, Categorical)
|
|
assert result.shape == (4096,)
|
|
assert result._ndarray.dtype == np.int8
|
|
repr(result)
|
|
|
|
# case with int16 codes
|
|
ci = CategoricalIndex(list(range(512)) * 4, ordered=False)
|
|
dtype = ci.dtype
|
|
result = Categorical._empty(shape, dtype=dtype)
|
|
assert isinstance(result, Categorical)
|
|
assert result.shape == shape
|
|
assert result._ndarray.dtype == np.int16
|
|
|
|
def test_empty_dt64tz(self):
|
|
dti = date_range("2016-01-01", periods=2, tz="Asia/Tokyo")
|
|
dtype = dti.dtype
|
|
|
|
shape = (0,)
|
|
result = DatetimeArray._empty(shape, dtype=dtype)
|
|
assert result.dtype == dtype
|
|
assert isinstance(result, DatetimeArray)
|
|
assert result.shape == shape
|
|
|
|
def test_empty_dt64(self):
|
|
shape = (3, 9)
|
|
result = DatetimeArray._empty(shape, dtype="datetime64[ns]")
|
|
assert isinstance(result, DatetimeArray)
|
|
assert result.shape == shape
|
|
|
|
def test_empty_td64(self):
|
|
shape = (3, 9)
|
|
result = TimedeltaArray._empty(shape, dtype="m8[ns]")
|
|
assert isinstance(result, TimedeltaArray)
|
|
assert result.shape == shape
|
|
|
|
def test_empty_pandas_array(self):
|
|
arr = PandasArray(np.array([1, 2]))
|
|
dtype = arr.dtype
|
|
|
|
shape = (3, 9)
|
|
result = PandasArray._empty(shape, dtype=dtype)
|
|
assert isinstance(result, PandasArray)
|
|
assert result.dtype == dtype
|
|
assert result.shape == shape
|