def test_separators(polygon: Polygon) -> None: assert all(segment_in_polygon(segment, polygon) in (Relation.TOUCH, Relation.CROSS, Relation.ENCLOSED) for segment in to_contour_separators(polygon.border)) assert all(segment_in_polygon(segment, polygon) in (Relation.TOUCH, Relation.CROSS, Relation.ENCLOSED) for hole in polygon.holes for segment in to_contour_separators(hole))
def test_convex_polygon(polygon: Polygon) -> None: polygon_with_convex_border = to_polygon_with_convex_border(polygon) assert (bool(polygon.holes) or implication( are_polygons_equivalent(polygon, polygon_with_convex_border), all(segment_in_polygon(segment, polygon) is Relation.ENCLOSED for segment in to_contour_separators(polygon.border))))
def test_convex_region(region: Region) -> None: assert implication( are_regions_equal(region, to_region_convex_hull(region)), all( segment_in_region(segment, region) is Relation.ENCLOSED for segment in to_contour_separators(region)))
def test_separators(region: Region) -> None: assert all( segment_in_region(segment, region) in (Relation.TOUCH, Relation.CROSS, Relation.ENCLOSED) for segment in to_contour_separators(region))
def test_convex_contour(contour: Contour) -> None: assert implication( are_contours_equal(contour, to_contour_convex_hull(contour)), all( segment_in_contour(segment, contour) is Relation.TOUCH for segment in to_contour_separators(contour)))
def test_separators(contour: Contour) -> None: assert all( segment_in_contour(segment, contour) in (Relation.TOUCH, Relation.CROSS, Relation.OVERLAP) for segment in to_contour_separators(contour))