import numpy as np
import pytest
import pandas as pd
from pandas.tests.extension import base
import pandas.util.testing as tm
pytest.importorskip('pyarrow', minversion="0.10.0")
from .bool import ArrowBoolArray, ArrowBoolDtype # isort:skip
@pytest.fixture
def dtype():
return ArrowBoolDtype()
@pytest.fixture
def data():
return ArrowBoolArray.from_scalars(np.random.randint(0, 2, size=100,
dtype=bool))
@pytest.fixture
def data_missing():
return ArrowBoolArray.from_scalars([None, True])
class BaseArrowTests(object):
pass
class TestDtype(BaseArrowTests, base.BaseDtypeTests):
def test_array_type_with_arg(self, data, dtype):
pytest.skip("GH-22666")
class TestInterface(BaseArrowTests, base.BaseInterfaceTests):
def test_repr(self, data):
raise pytest.skip("TODO")
class TestConstructors(BaseArrowTests, base.BaseConstructorsTests):
def test_from_dtype(self, data):
pytest.skip("GH-22666")
# seems like some bug in isna on empty BoolArray returning floats.
@pytest.mark.xfail(reason='bad is-na for empty data')
def test_from_sequence_from_cls(self, data):
super(TestConstructors, self).test_from_sequence_from_cls(data)
class TestReduce(base.BaseNoReduceTests):
def test_reduce_series_boolean(self):
pass
class TestReduceBoolean(base.BaseBooleanReduceTests):
pass
def test_is_bool_dtype(data):
assert pd.api.types.is_bool_dtype(data)
assert pd.core.common.is_bool_indexer(data)
s = pd.Series(range(len(data)))
result = s[data]
expected = s[np.asarray(data)]
tm.assert_series_equal(result, expected)