test_testing.py 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. import numpy as np
  2. import pytest
  3. import shapely
  4. from shapely.testing import assert_geometries_equal
  5. from shapely.tests.common import (
  6. all_types,
  7. empty,
  8. empty_line_string,
  9. empty_line_string_z,
  10. empty_point,
  11. empty_point_z,
  12. empty_polygon,
  13. line_string,
  14. line_string_nan,
  15. line_string_z,
  16. point,
  17. )
  18. EMPTY_GEOMS = (
  19. empty_point,
  20. empty_point_z,
  21. empty_line_string,
  22. empty_line_string_z,
  23. empty_polygon,
  24. empty,
  25. )
  26. line_string_reversed = shapely.linestrings([(0, 0), (1, 0), (1, 1)][::-1])
  27. def make_array(left, right, use_array):
  28. if use_array in ("left", "both"):
  29. left = np.array([left] * 3, dtype=object)
  30. if use_array in ("right", "both"):
  31. right = np.array([right] * 3, dtype=object)
  32. return left, right
  33. @pytest.mark.parametrize("use_array", ["none", "left", "right", "both"])
  34. @pytest.mark.parametrize("geom", all_types + EMPTY_GEOMS)
  35. def test_assert_geometries_equal(geom, use_array):
  36. assert_geometries_equal(*make_array(geom, geom, use_array))
  37. @pytest.mark.parametrize("use_array", ["none", "left", "right", "both"])
  38. @pytest.mark.parametrize(
  39. "geom1,geom2",
  40. [
  41. (point, line_string),
  42. (line_string, line_string_z),
  43. (empty_point, empty_polygon),
  44. (empty_point, empty_point_z),
  45. (empty_line_string, empty_line_string_z),
  46. ],
  47. )
  48. def test_assert_geometries_not_equal(geom1, geom2, use_array):
  49. with pytest.raises(AssertionError):
  50. assert_geometries_equal(*make_array(geom1, geom2, use_array))
  51. @pytest.mark.parametrize("use_array", ["none", "left", "right", "both"])
  52. def test_assert_none_equal(use_array):
  53. assert_geometries_equal(*make_array(None, None, use_array))
  54. @pytest.mark.parametrize("use_array", ["none", "left", "right", "both"])
  55. def test_assert_none_not_equal(use_array):
  56. with pytest.raises(AssertionError):
  57. assert_geometries_equal(*make_array(None, None, use_array), equal_none=False)
  58. @pytest.mark.parametrize("use_array", ["none", "left", "right", "both"])
  59. def test_assert_nan_equal(use_array):
  60. assert_geometries_equal(*make_array(line_string_nan, line_string_nan, use_array))
  61. @pytest.mark.parametrize("use_array", ["none", "left", "right", "both"])
  62. def test_assert_nan_not_equal(use_array):
  63. with pytest.raises(AssertionError):
  64. assert_geometries_equal(
  65. *make_array(line_string_nan, line_string_nan, use_array), equal_nan=False
  66. )
  67. def test_normalize_true():
  68. assert_geometries_equal(line_string_reversed, line_string, normalize=True)
  69. def test_normalize_default():
  70. with pytest.raises(AssertionError):
  71. assert_geometries_equal(line_string_reversed, line_string)
  72. def test_normalize_false():
  73. with pytest.raises(AssertionError):
  74. assert_geometries_equal(line_string_reversed, line_string, normalize=False)