From 8fc2c7c67b86851a5ae3718f377b45ce5495fdcd Mon Sep 17 00:00:00 2001 From: Eric Vin Date: Thu, 11 Jul 2024 12:46:27 +0200 Subject: [PATCH] Minor tweaks to PolygonalRegion. --- src/scenic/core/regions.py | 9 ++++++++- tests/core/test_regions.py | 9 +++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/scenic/core/regions.py b/src/scenic/core/regions.py index 529b516a9..e9c0f27f0 100644 --- a/src/scenic/core/regions.py +++ b/src/scenic/core/regions.py @@ -3049,7 +3049,14 @@ def __eq__(self, other): @cached def __hash__(self): - return hash((self.polygons, self.orientation, self.z)) + return hash( + ( + tuple(self._points) if self._points else None, + self._polygon, + self.orientation, + self.z, + ) + ) class CircularRegion(PolygonalRegion): diff --git a/tests/core/test_regions.py b/tests/core/test_regions.py index ea48796b2..07c84d3cc 100644 --- a/tests/core/test_regions.py +++ b/tests/core/test_regions.py @@ -5,6 +5,7 @@ import shapely.geometry import trimesh.voxel +from scenic.core.distributions import RandomControlFlowError, Range from scenic.core.object_types import Object, OrientedPoint from scenic.core.regions import * from scenic.core.vectors import VectorField @@ -222,6 +223,14 @@ def test_polygon_region(): PolygonalRegion([(1, 1), (3, 1), (2, 2), (1.3, 1.15)], z=3).uniformPointInner().z == 3 ) + assert i != d + hash(i) + e = CircularRegion((0, 0), Range(1, 3)) + with pytest.raises(RandomControlFlowError): + i == e + with pytest.raises(RandomControlFlowError): + e == i + hash(e) def test_polygon_unionAll():