50 lines
1.2 KiB
Python
50 lines
1.2 KiB
Python
|
import numpy as np
|
||
|
import pytest
|
||
|
|
||
|
from pandas import Categorical, DataFrame
|
||
|
|
||
|
|
||
|
@pytest.mark.parametrize(
|
||
|
"data, expected",
|
||
|
[
|
||
|
# empty
|
||
|
(DataFrame(), True),
|
||
|
# multi-same
|
||
|
(DataFrame({"A": [1, 2], "B": [1, 2]}), True),
|
||
|
# multi-object
|
||
|
(
|
||
|
DataFrame(
|
||
|
{
|
||
|
"A": np.array([1, 2], dtype=object),
|
||
|
"B": np.array(["a", "b"], dtype=object),
|
||
|
}
|
||
|
),
|
||
|
True,
|
||
|
),
|
||
|
# multi-extension
|
||
|
(
|
||
|
DataFrame({"A": Categorical(["a", "b"]), "B": Categorical(["a", "b"])}),
|
||
|
True,
|
||
|
),
|
||
|
# differ types
|
||
|
(DataFrame({"A": [1, 2], "B": [1.0, 2.0]}), False),
|
||
|
# differ sizes
|
||
|
(
|
||
|
DataFrame(
|
||
|
{
|
||
|
"A": np.array([1, 2], dtype=np.int32),
|
||
|
"B": np.array([1, 2], dtype=np.int64),
|
||
|
}
|
||
|
),
|
||
|
False,
|
||
|
),
|
||
|
# multi-extension differ
|
||
|
(
|
||
|
DataFrame({"A": Categorical(["a", "b"]), "B": Categorical(["b", "c"])}),
|
||
|
False,
|
||
|
),
|
||
|
],
|
||
|
)
|
||
|
def test_is_homogeneous_type(data, expected):
|
||
|
assert data._is_homogeneous_type is expected
|