def test_absorption_identity(multisegments_pair: MultisegmentsPair) -> None: first, second = multisegments_pair assert are_multisegments_equivalent( complete_intersect_multisegments(first, unite_multisegments(first, second)), first)
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_commutative_case(multisegments_pair: MultisegmentsPair) -> None: first, second = multisegments_pair result = subtract_multisegments(first, second) assert equivalence(result == subtract_multisegments(second, first), are_multisegments_equivalent(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_commutative_case(multisegments_pair: MultisegmentsPair) -> None: left_multisegment, right_multisegment = multisegments_pair result = subtract_multisegments(left_multisegment, right_multisegment) assert equivalence( result == subtract_multisegments(right_multisegment, left_multisegment), are_multisegments_equivalent(left_multisegment, right_multisegment))
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_repeated(multisegments_triplet: MultisegmentsTriplet) -> None: (left_multisegment, mid_multisegment, right_multisegment) = multisegments_triplet result = symmetric_subtract_multisegments( symmetric_subtract_multisegments(left_multisegment, mid_multisegment), symmetric_subtract_multisegments(mid_multisegment, right_multisegment)) assert are_multisegments_equivalent( result, symmetric_subtract_multisegments(left_multisegment, right_multisegment))
def test_difference_operand( multisegments_triplet: MultisegmentsTriplet) -> None: first, second, third = multisegments_triplet first_second_difference = subtract_multisegments(first, second) second_third_difference = subtract_multisegments(second, third) assert (not is_multisegment(first_second_difference) or not is_multisegment(second_third_difference) or are_multisegments_equivalent( unite_multisegments(first_second_difference, third), subtract_multisegments(unite_multisegments(first, third), second_third_difference)))
def test_repeated(multisegments_triplet: MultisegmentsTriplet) -> None: first, second, third = multisegments_triplet first_second_symmetric_difference = symmetric_subtract_multisegments( first, second) second_third_symmetric_difference = symmetric_subtract_multisegments( second, third) assert (not is_multisegment(first_second_symmetric_difference) or not is_multisegment(second_third_symmetric_difference) or are_multisegments_equivalent( symmetric_subtract_multisegments( first_second_symmetric_difference, second_third_symmetric_difference), symmetric_subtract_multisegments(first, third)))
def test_intersection_subtrahend( multisegments_triplet: MultisegmentsTriplet) -> None: (left_multisegment, mid_multisegment, right_multisegment) = multisegments_triplet result = subtract_multisegments( left_multisegment, intersect_multisegments(mid_multisegment, right_multisegment)) assert are_multisegments_equivalent( result, unite_multisegments( subtract_multisegments(left_multisegment, mid_multisegment), subtract_multisegments(left_multisegment, right_multisegment)))
def test_difference_operand( multisegments_triplet: MultisegmentsTriplet) -> None: (left_multisegment, mid_multisegment, right_multisegment) = multisegments_triplet result = unite_multisegments( subtract_multisegments(left_multisegment, mid_multisegment), right_multisegment) assert are_multisegments_equivalent( result, subtract_multisegments( unite_multisegments(left_multisegment, right_multisegment), subtract_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_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_idempotence(multisegment: Multisegment) -> None: result = intersect_multisegments(multisegment, multisegment) assert are_multisegments_equivalent(result, multisegment)