Skip to content

Commit

Permalink
Complete test for 'find_intersections' function
Browse files Browse the repository at this point in the history
  • Loading branch information
lycantropos committed Mar 4, 2020
1 parent 4a17650 commit 9af1009
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 9 deletions.
47 changes: 40 additions & 7 deletions tests/core_tests/linear_tests/test_find_intersections.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,23 @@

from hypothesis import given

from bentley_ottmann.core.linear import find_intersections
from bentley_ottmann.core.linear import (find_intersections,
is_real_segment,
segments_relationship,
to_real_segment)
from bentley_ottmann.hints import Segment
from tests.utils import (is_point,
reverse_segment)
reverse_point_coordinates,
reverse_segment,
reverse_segment_coordinates)
from . import strategies


@given(strategies.segments_pairs)
def test_basic(segments_pair: Tuple[Segment, Segment]) -> None:
first_segment, second_segment = segments_pair
left_segment, right_segment = segments_pair

result = find_intersections(first_segment, second_segment)
result = find_intersections(left_segment, right_segment)

assert isinstance(result, tuple)
assert all(is_point(element) for element in result)
Expand All @@ -22,11 +27,11 @@ def test_basic(segments_pair: Tuple[Segment, Segment]) -> None:

@given(strategies.segments_pairs)
def test_commutativity(segments_pair: Tuple[Segment, Segment]) -> None:
first_segment, second_segment = segments_pair
left_segment, right_segment = segments_pair

result = find_intersections(first_segment, second_segment)
result = find_intersections(left_segment, right_segment)

assert result == find_intersections(second_segment, first_segment)
assert result == find_intersections(right_segment, left_segment)


@given(strategies.segments)
Expand All @@ -36,8 +41,36 @@ def test_self(segment: Segment) -> None:
assert result == tuple(sorted(segment))


@given(strategies.segments_pairs)
def test_connection_with_segments_relationship(
segments_pair: Tuple[Segment, Segment]) -> None:
left_segment, right_segment = segments_pair

result = find_intersections(left_segment, right_segment)

are_real_segments = is_real_segment(left_segment)
assert (len(result)
== segments_relationship(left_segment
if are_real_segments
else to_real_segment(left_segment),
right_segment
if are_real_segments
else to_real_segment(right_segment)))


@given(strategies.segments)
def test_reversed(segment: Segment) -> None:
result = find_intersections(segment, reverse_segment(segment))

assert result == tuple(sorted(segment))


@given(strategies.segments_pairs)
def test_reversed_coordinates(segments_pair: Tuple[Segment, Segment]) -> None:
left_segment, right_segment = segments_pair

result = find_intersections(left_segment, right_segment)

assert (tuple(sorted(map(reverse_point_coordinates, reversed(result))))
== find_intersections(reverse_segment_coordinates(left_segment),
reverse_segment_coordinates(right_segment)))
3 changes: 1 addition & 2 deletions tests/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,8 +63,7 @@ def reverse_segment(segment: Segment) -> Segment:

def reverse_segment_coordinates(segment: Segment) -> Segment:
start, end = segment
return (reverse_point_coordinates(start),
reverse_point_coordinates(end))
return reverse_point_coordinates(start), reverse_point_coordinates(end)


def reverse_point_coordinates(point: Point) -> Point:
Expand Down

0 comments on commit 9af1009

Please sign in to comment.