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))