test_assert_attr_equal.py 1.0 KB

123456789101112131415161718192021222324252627282930313233
  1. from types import SimpleNamespace
  2. import pytest
  3. from pandas.core.dtypes.common import is_float
  4. import pandas._testing as tm
  5. def test_assert_attr_equal(nulls_fixture):
  6. obj = SimpleNamespace()
  7. obj.na_value = nulls_fixture
  8. tm.assert_attr_equal("na_value", obj, obj)
  9. def test_assert_attr_equal_different_nulls(nulls_fixture, nulls_fixture2):
  10. obj = SimpleNamespace()
  11. obj.na_value = nulls_fixture
  12. obj2 = SimpleNamespace()
  13. obj2.na_value = nulls_fixture2
  14. if nulls_fixture is nulls_fixture2:
  15. tm.assert_attr_equal("na_value", obj, obj2)
  16. elif is_float(nulls_fixture) and is_float(nulls_fixture2):
  17. # we consider float("nan") and np.float64("nan") to be equivalent
  18. tm.assert_attr_equal("na_value", obj, obj2)
  19. elif type(nulls_fixture) is type(nulls_fixture2):
  20. # e.g. Decimal("NaN")
  21. tm.assert_attr_equal("na_value", obj, obj2)
  22. else:
  23. with pytest.raises(AssertionError, match='"na_value" are different'):
  24. tm.assert_attr_equal("na_value", obj, obj2)