def test_commutativity(multisegments_pair: MultisegmentsPair) -> None: left_multisegment, right_multisegment = multisegments_pair result = intersect_multisegments(left_multisegment, right_multisegment) assert result == intersect_multisegments(right_multisegment, left_multisegment)
def test_reversals(multisegments_pair: MultisegmentsPair) -> None: left_multisegment, right_multisegment = multisegments_pair result = intersect_multisegments(left_multisegment, right_multisegment) assert result == intersect_multisegments( reverse_multisegment(left_multisegment), right_multisegment) assert result == intersect_multisegments( left_multisegment, reverse_multisegment(right_multisegment))
def test_associativity(multisegments_triplet: MultisegmentsTriplet) -> None: first, second, third = multisegments_triplet first_second_intersection = intersect_multisegments(first, second) second_third_intersection = intersect_multisegments(second, third) assert (not is_multisegment(first_second_intersection) or not is_multisegment(second_third_intersection) or (intersect_multisegments(first_second_intersection, third) == intersect_multisegments(first, second_third_intersection)))
def test_distribution_over_intersection( multisegments_triplet: MultisegmentsTriplet) -> None: first, second, third = multisegments_triplet second_third_intersection = intersect_multisegments(second, third) assert (not is_multisegment(second_third_intersection) or are_multisegments_equivalent( unite_multisegments(first, second_third_intersection), intersect_multisegments(unite_multisegments(first, second), unite_multisegments(first, third))))
def test_difference_operand(multisegments_triplet: MultisegmentsTriplet ) -> None: first, second, third = multisegments_triplet first_second_difference = subtract_multisegments(first, second) first_third_intersection = intersect_multisegments(first, third) assert (not is_multisegment(first_second_difference) or not is_multisegment(first_third_intersection) or (intersect_multisegments(first_second_difference, third) == subtract_multisegments(first_third_intersection, second)))
def test_intersection_minuend( multisegments_triplet: MultisegmentsTriplet) -> None: first, second, third = multisegments_triplet first_second_intersection = intersect_multisegments(first, second) second_third_difference = subtract_multisegments(second, third) assert (not is_multisegment(first_second_intersection) or not is_multisegment(second_third_difference) or (subtract_multisegments(first_second_intersection, third) == intersect_multisegments(first, second_third_difference)))
def test_reversals(multisegments_pair: MultisegmentsPair) -> None: first, second = multisegments_pair result = intersect_multisegments(first, second) assert result == intersect_multisegments( first, reverse_multisegment(second)) assert are_compounds_similar( result, reverse_compound_coordinates(intersect_multisegments( reverse_multisegment_coordinates(first), reverse_multisegment_coordinates(second))))
def test_intersection_minuend( multisegments_triplet: MultisegmentsTriplet) -> None: (left_multisegment, mid_multisegment, right_multisegment) = multisegments_triplet result = subtract_multisegments( intersect_multisegments(left_multisegment, mid_multisegment), right_multisegment) assert result == intersect_multisegments( left_multisegment, subtract_multisegments(mid_multisegment, right_multisegment))
def test_difference_operand(multisegments_triplet: MultisegmentsTriplet ) -> None: (left_multisegment, mid_multisegment, right_multisegment) = multisegments_triplet result = intersect_multisegments( subtract_multisegments(left_multisegment, mid_multisegment), right_multisegment) assert result == subtract_multisegments( intersect_multisegments(left_multisegment, right_multisegment), mid_multisegment)
def test_associativity(multisegments_triplet: MultisegmentsTriplet) -> None: (left_multisegment, mid_multisegment, right_multisegment) = multisegments_triplet result = intersect_multisegments( intersect_multisegments(left_multisegment, mid_multisegment), right_multisegment) assert result == intersect_multisegments(left_multisegment, intersect_multisegments( mid_multisegment, right_multisegment))
def test_distribution_over_intersection( multisegments_triplet: MultisegmentsTriplet) -> None: (left_multisegment, mid_multisegment, right_multisegment) = multisegments_triplet result = unite_multisegments( left_multisegment, intersect_multisegments(mid_multisegment, right_multisegment)) assert are_multisegments_equivalent( result, intersect_multisegments( unite_multisegments(left_multisegment, mid_multisegment), unite_multisegments(left_multisegment, right_multisegment)))
def test_right_absorbing_element(empty_multisegment_with_multisegment : MultisegmentsPair) -> None: empty_multisegment, multisegment = empty_multisegment_with_multisegment result = intersect_multisegments(multisegment, empty_multisegment) assert not result.segments
def test_absorption_identity(multisegments_pair: MultisegmentsPair) -> None: first, second = multisegments_pair first_second_intersection = intersect_multisegments(first, second) assert (not is_multisegment(first_second_intersection) or are_multisegments_equivalent( unite_multisegments(first, first_second_intersection), first))
def test_connection_with_intersect( multisegments_pair: MultisegmentsPair) -> None: first, second = multisegments_pair result = complete_intersect_multisegments(first, second) assert compound_to_linear(result) == intersect_multisegments(first, second)
def test_absorption_identity(multisegments_pair: MultisegmentsPair) -> None: left_multisegment, right_multisegment = multisegments_pair result = unite_multisegments( left_multisegment, intersect_multisegments(left_multisegment, right_multisegment)) assert are_multisegments_equivalent(result, left_multisegment)
def test_equivalents(multisegments_pair: MultisegmentsPair) -> None: left_multisegment, right_multisegment = multisegments_pair result = unite_multisegments(left_multisegment, right_multisegment) assert result == symmetric_subtract_multisegments( symmetric_subtract_multisegments(left_multisegment, right_multisegment), intersect_multisegments(left_multisegment, right_multisegment))
def test_connection_with_intersect( multisegments_pair: MultisegmentsPair) -> None: left_multisegment, right_multisegment = multisegments_pair result = complete_intersect_multisegments(left_multisegment, right_multisegment) _, multisegment = result assert multisegment == intersect_multisegments(left_multisegment, right_multisegment)
def test_equivalents(multisegments_pair: MultisegmentsPair) -> None: first, second = multisegments_pair result = unite_multisegments(first, second) first_second_symmetric_difference = symmetric_subtract_multisegments( first, second) first_second_intersection = intersect_multisegments(first, second) assert (not is_multisegment(first_second_symmetric_difference) or not is_multisegment(first_second_intersection) or result == symmetric_subtract_multisegments( first_second_symmetric_difference, first_second_intersection))
def test_union_subtrahend(multisegments_triplet: MultisegmentsTriplet) -> None: first, second, third = multisegments_triplet first_second_difference = subtract_multisegments(first, second) first_third_difference = subtract_multisegments(first, third) assert (not is_multisegment(first_second_difference) or not is_multisegment(first_third_difference) or are_compounds_similar( subtract_multisegments(first, unite_multisegments( second, third)), intersect_multisegments(first_second_difference, first_third_difference)))
def test_union_subtrahend(multisegments_triplet: MultisegmentsTriplet) -> None: (left_multisegment, mid_multisegment, right_multisegment) = multisegments_triplet result = subtract_multisegments( left_multisegment, unite_multisegments(mid_multisegment, right_multisegment)) assert are_multisegments_similar( result, intersect_multisegments( subtract_multisegments(left_multisegment, mid_multisegment), subtract_multisegments(left_multisegment, right_multisegment)))
def test_intersection_subtrahend( multisegments_triplet: MultisegmentsTriplet) -> None: first, second, third = multisegments_triplet first_second_difference = subtract_multisegments(first, second) first_third_difference = subtract_multisegments(first, third) second_third_intersection = intersect_multisegments(second, third) assert (not is_multisegment(first_second_difference) or not is_multisegment(first_third_difference) or not is_multisegment(second_third_intersection) or are_multisegments_equivalent( subtract_multisegments(first, second_third_intersection), unite_multisegments(first_second_difference, first_third_difference)))
def test_difference_subtrahend( multisegments_triplet: MultisegmentsTriplet) -> None: (left_multisegment, mid_multisegment, right_multisegment) = multisegments_triplet result = subtract_multisegments( left_multisegment, subtract_multisegments(mid_multisegment, right_multisegment)) assert are_multisegments_equivalent( result, unite_multisegments( subtract_multisegments(left_multisegment, mid_multisegment), intersect_multisegments(left_multisegment, right_multisegment)))
def test_basic(multisegments_pair: MultisegmentsPair) -> None: left_multisegment, right_multisegment = multisegments_pair result = intersect_multisegments(left_multisegment, right_multisegment) assert is_multisegment(result)
def test_commutativity(multisegments_pair: MultisegmentsPair) -> None: first, second = multisegments_pair result = intersect_multisegments(first, second) assert result == intersect_multisegments(second, first)
def test_absorption_identity(multisegments_pair: MultisegmentsPair) -> None: first, second = multisegments_pair assert are_multisegments_equivalent( intersect_multisegments(first, unite_multisegments(first, second)), first)
def test_idempotence(multisegment: Multisegment) -> None: result = intersect_multisegments(multisegment, multisegment) assert are_multisegments_equivalent(result, multisegment)
def test_basic(multisegments_pair: MultisegmentsPair) -> None: first, second = multisegments_pair result = intersect_multisegments(first, second) assert is_maybe_linear(result)