def test_right_neutral_element(empty_multipolygon_with_multipolygon : MultipolygonsPair) -> None: empty_multipolygon, multipolygon = empty_multipolygon_with_multipolygon result = unite_multipolygons(multipolygon, empty_multipolygon) assert are_multipolygons_similar(result, multipolygon)
def test_left_neutral_element( empty_multipolygon_with_multipolygon: MultipolygonsPair) -> None: empty_multipolygon, multipolygon = empty_multipolygon_with_multipolygon result = symmetric_subtract_multipolygons(empty_multipolygon, multipolygon) assert are_multipolygons_similar(result, multipolygon)
def test_absorption_identity(multipolygons_pair: MultipolygonsPair) -> None: left_multipolygon, right_multipolygon = multipolygons_pair result = intersect_multipolygons(left_multipolygon, unite_multipolygons(left_multipolygon, right_multipolygon)) assert are_multipolygons_similar(result, left_multipolygon)
def test_equivalents(multipolygons_pair: MultipolygonsPair) -> None: left_multipolygon, right_multipolygon = multipolygons_pair result = intersect_multipolygons(left_multipolygon, right_multipolygon) assert are_multipolygons_similar( result, subtract_multipolygons(left_multipolygon, subtract_multipolygons(left_multipolygon, right_multipolygon)))
def test_repeated(multipolygons_triplet: MultipolygonsTriplet) -> None: (left_multipolygon, mid_multipolygon, right_multipolygon) = multipolygons_triplet result = symmetric_subtract_multipolygons( symmetric_subtract_multipolygons(left_multipolygon, mid_multipolygon), symmetric_subtract_multipolygons(mid_multipolygon, right_multipolygon)) assert are_multipolygons_similar( result, symmetric_subtract_multipolygons(left_multipolygon, right_multipolygon))
def test_associativity(multipolygons_triplet: MultipolygonsTriplet) -> None: (left_multipolygon, mid_multipolygon, right_multipolygon) = multipolygons_triplet result = unite_multipolygons(unite_multipolygons(left_multipolygon, mid_multipolygon), right_multipolygon) assert are_multipolygons_similar( result, unite_multipolygons(left_multipolygon, unite_multipolygons(mid_multipolygon, right_multipolygon)))
def test_associativity(multipolygons_triplet: MultipolygonsTriplet) -> None: (left_multipolygon, mid_multipolygon, right_multipolygon) = multipolygons_triplet result = symmetric_subtract_multipolygons( symmetric_subtract_multipolygons(left_multipolygon, mid_multipolygon), right_multipolygon) assert are_multipolygons_similar( result, symmetric_subtract_multipolygons( left_multipolygon, symmetric_subtract_multipolygons(mid_multipolygon, right_multipolygon)))
def test_difference_operand(multipolygons_triplet: MultipolygonsTriplet ) -> None: (left_multipolygon, mid_multipolygon, right_multipolygon) = multipolygons_triplet result = unite_multipolygons(subtract_multipolygons(left_multipolygon, mid_multipolygon), right_multipolygon) assert are_multipolygons_similar( result, subtract_multipolygons(unite_multipolygons(left_multipolygon, right_multipolygon), subtract_multipolygons(mid_multipolygon, right_multipolygon)))
def test_distribution_over_intersection(multipolygons_triplet : MultipolygonsTriplet) -> None: (left_multipolygon, mid_multipolygon, right_multipolygon) = multipolygons_triplet result = unite_multipolygons(left_multipolygon, intersect_multipolygons(mid_multipolygon, right_multipolygon)) assert are_multipolygons_similar( result, intersect_multipolygons(unite_multipolygons(left_multipolygon, mid_multipolygon), unite_multipolygons(left_multipolygon, right_multipolygon)))
def test_reversals(multipolygons_pair: MultipolygonsPair) -> None: left_multipolygon, right_multipolygon = multipolygons_pair result = symmetric_subtract_multipolygons(left_multipolygon, right_multipolygon) assert are_multipolygons_similar( result, symmetric_subtract_multipolygons( reverse_multipolygon(left_multipolygon), right_multipolygon)) assert are_multipolygons_similar( result, symmetric_subtract_multipolygons( left_multipolygon, reverse_multipolygon(right_multipolygon))) assert are_multipolygons_similar( result, symmetric_subtract_multipolygons( reverse_multipolygon_borders(left_multipolygon), right_multipolygon)) assert are_multipolygons_similar( result, symmetric_subtract_multipolygons( left_multipolygon, reverse_multipolygon_borders(right_multipolygon))) assert are_multipolygons_similar( result, symmetric_subtract_multipolygons( reverse_multipolygon_holes(left_multipolygon), right_multipolygon)) assert are_multipolygons_similar( result, symmetric_subtract_multipolygons( left_multipolygon, reverse_multipolygon_holes(right_multipolygon))) assert are_multipolygons_similar( result, symmetric_subtract_multipolygons( reverse_multipolygon_holes_contours(left_multipolygon), right_multipolygon)) assert are_multipolygons_similar( result, symmetric_subtract_multipolygons( left_multipolygon, reverse_multipolygon_holes_contours(right_multipolygon)))
def test_idempotence(multipolygon: Multipolygon) -> None: result = intersect_multipolygons(multipolygon, multipolygon) assert are_multipolygons_similar(result, multipolygon)