コード例 #1
0
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)
コード例 #2
0
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))
コード例 #3
0
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)))
コード例 #4
0
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))))
コード例 #5
0
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)))
コード例 #6
0
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)))
コード例 #7
0
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))))
コード例 #8
0
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))
コード例 #9
0
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)
コード例 #10
0
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))
コード例 #11
0
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)))
コード例 #12
0
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
コード例 #13
0
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))
コード例 #14
0
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)
コード例 #15
0
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)
コード例 #16
0
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))
コード例 #17
0
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)
コード例 #18
0
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))
コード例 #19
0
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)))
コード例 #20
0
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)))
コード例 #21
0
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)))
コード例 #22
0
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)))
コード例 #23
0
def test_basic(multisegments_pair: MultisegmentsPair) -> None:
    left_multisegment, right_multisegment = multisegments_pair

    result = intersect_multisegments(left_multisegment, right_multisegment)

    assert is_multisegment(result)
コード例 #24
0
def test_commutativity(multisegments_pair: MultisegmentsPair) -> None:
    first, second = multisegments_pair

    result = intersect_multisegments(first, second)

    assert result == intersect_multisegments(second, first)
コード例 #25
0
def test_absorption_identity(multisegments_pair: MultisegmentsPair) -> None:
    first, second = multisegments_pair

    assert are_multisegments_equivalent(
            intersect_multisegments(first, unite_multisegments(first, second)),
            first)
コード例 #26
0
def test_idempotence(multisegment: Multisegment) -> None:
    result = intersect_multisegments(multisegment, multisegment)

    assert are_multisegments_equivalent(result, multisegment)
コード例 #27
0
def test_basic(multisegments_pair: MultisegmentsPair) -> None:
    first, second = multisegments_pair

    result = intersect_multisegments(first, second)

    assert is_maybe_linear(result)