test_assert_interval_array_equal.py 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. import pytest
  2. from pandas import interval_range
  3. import pandas._testing as tm
  4. @pytest.mark.parametrize(
  5. "kwargs",
  6. [
  7. {"start": 0, "periods": 4},
  8. {"start": 1, "periods": 5},
  9. {"start": 5, "end": 10, "closed": "left"},
  10. ],
  11. )
  12. def test_interval_array_equal(kwargs):
  13. arr = interval_range(**kwargs).values
  14. tm.assert_interval_array_equal(arr, arr)
  15. def test_interval_array_equal_closed_mismatch():
  16. kwargs = {"start": 0, "periods": 5}
  17. arr1 = interval_range(closed="left", **kwargs).values
  18. arr2 = interval_range(closed="right", **kwargs).values
  19. msg = """\
  20. IntervalArray are different
  21. Attribute "closed" are different
  22. \\[left\\]: left
  23. \\[right\\]: right"""
  24. with pytest.raises(AssertionError, match=msg):
  25. tm.assert_interval_array_equal(arr1, arr2)
  26. def test_interval_array_equal_periods_mismatch():
  27. kwargs = {"start": 0}
  28. arr1 = interval_range(periods=5, **kwargs).values
  29. arr2 = interval_range(periods=6, **kwargs).values
  30. msg = """\
  31. IntervalArray.left are different
  32. IntervalArray.left shapes are different
  33. \\[left\\]: \\(5,\\)
  34. \\[right\\]: \\(6,\\)"""
  35. with pytest.raises(AssertionError, match=msg):
  36. tm.assert_interval_array_equal(arr1, arr2)
  37. def test_interval_array_equal_end_mismatch():
  38. kwargs = {"start": 0, "periods": 5}
  39. arr1 = interval_range(end=10, **kwargs).values
  40. arr2 = interval_range(end=20, **kwargs).values
  41. msg = """\
  42. IntervalArray.left are different
  43. IntervalArray.left values are different \\(80.0 %\\)
  44. \\[left\\]: \\[0, 2, 4, 6, 8\\]
  45. \\[right\\]: \\[0, 4, 8, 12, 16\\]"""
  46. with pytest.raises(AssertionError, match=msg):
  47. tm.assert_interval_array_equal(arr1, arr2)
  48. def test_interval_array_equal_start_mismatch():
  49. kwargs = {"periods": 4}
  50. arr1 = interval_range(start=0, **kwargs).values
  51. arr2 = interval_range(start=1, **kwargs).values
  52. msg = """\
  53. IntervalArray.left are different
  54. IntervalArray.left values are different \\(100.0 %\\)
  55. \\[left\\]: \\[0, 1, 2, 3\\]
  56. \\[right\\]: \\[1, 2, 3, 4\\]"""
  57. with pytest.raises(AssertionError, match=msg):
  58. tm.assert_interval_array_equal(arr1, arr2)