Skip to content

Commit

Permalink
Complete tests
Browse files Browse the repository at this point in the history
  • Loading branch information
lycantropos committed Apr 29, 2021
1 parent 933a330 commit 8914e38
Show file tree
Hide file tree
Showing 5 changed files with 23 additions and 38 deletions.
38 changes: 12 additions & 26 deletions tests/planar_tests/test_edges_intersect.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@ def test_base_case(context: Context, contour: Contour) -> None:
result = edges_intersect(contour)

left_vertex, mid_vertex, right_vertex = sorted(contour.vertices)
assert result is context.segment_contains_point(left_vertex, right_vertex,
mid_vertex)
assert result is context.segment_contains_point(
context.segment_cls(left_vertex, right_vertex), mid_vertex)


@given(strategies.non_triangular_contours)
Expand All @@ -39,51 +39,37 @@ def test_step(context: Context, contour: Contour) -> None:
result = edges_intersect(rest_contour)
next_result = edges_intersect(contour)

first_edge_start, first_edge_end = first_vertex, rest_vertices[0]
last_edge_start, last_edge_end = rest_vertices[-1], first_vertex
first_edge = context.segment_cls(first_vertex, rest_vertices[0])
last_edge = context.segment_cls(rest_vertices[-1], first_vertex)
rest_edges = contour_to_edges(rest_contour)
overlap_relations = (Relation.COMPONENT, Relation.COMPOSITE,
Relation.EQUAL, Relation.OVERLAP)
assert (next_result
is (result
and len(rest_vertices) > 2
and (any(context.segments_relation(
rest_edges[index].start, rest_edges[index].end,
rest_edges[other_index].start,
rest_edges[other_index].end)
and (any(context.segments_relation(rest_edges[index],
rest_edges[other_index])
is not Relation.DISJOINT
for index in range(len(rest_edges) - 1)
for other_index
in chain(range(index - 1),
range(index + 2, len(rest_edges) - 1)))
or any(context.segments_relation(edge.start, edge.end,
other_edge.start,
other_edge.end)
or any(context.segments_relation(edge, other_edge)
in overlap_relations
for edge, other_edge
in combinations(rest_edges[:-1], 2)))
or any(context.segments_relation(first_edge_start,
first_edge_end, edge.start,
edge.end)
or any(context.segments_relation(first_edge, edge)
is not Relation.DISJOINT
for edge in rest_edges[1:-1])
or any(context.segments_relation(last_edge_start,
last_edge_end, edge.start,
edge.end)
or any(context.segments_relation(last_edge, edge)
is not Relation.DISJOINT
for edge in rest_edges[:-2])
or len(rest_vertices) > 1
and (context.segments_relation(
first_edge_start, first_edge_end,
rest_edges[0].start, rest_edges[0].end)
and (context.segments_relation(first_edge, rest_edges[0])
in overlap_relations
or context.segments_relation(
first_edge_start, first_edge_end,
last_edge_start, last_edge_end)
or context.segments_relation(first_edge, last_edge)
in overlap_relations
or context.segments_relation(
last_edge_start, last_edge_end,
rest_edges[0].start, rest_edges[0].end)
or context.segments_relation(last_edge, rest_edges[0])
in overlap_relations)))


Expand Down
4 changes: 1 addition & 3 deletions tests/planar_tests/test_segments_cross_or_overlap.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,7 @@ def test_step(context: Context, segments: List[Segment]) -> None:

assert (next_result
is (result
or any(context.segments_relation(first_segment.start,
first_segment.end,
segment.start, segment.end)
or any(context.segments_relation(first_segment, segment)
in (Relation.COMPONENT, Relation.COMPOSITE,
Relation.CROSS, Relation.EQUAL, Relation.OVERLAP)
for segment in rest_segments)))
Expand Down
4 changes: 1 addition & 3 deletions tests/planar_tests/test_segments_intersect.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,7 @@ def test_step(context: Context, segments: List[Segment]) -> None:

assert (next_result
is (result
or any(context.segments_relation(first_segment.start,
first_segment.end,
segment.start, segment.end)
or any(context.segments_relation(first_segment, segment)
is not Relation.DISJOINT
for segment in rest_segments)))

Expand Down
13 changes: 7 additions & 6 deletions tests/strategies/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@
from ground.hints import Scalar
from hypothesis import strategies

from tests.utils import (Point,
from tests.utils import (MAX_SCALAR,
MIN_SCALAR,
Point,
Segment,
Strategy,
pack,
Expand All @@ -17,18 +19,17 @@
allow_infinity=False,
allow_nan=False)}
scalars_strategies = strategies.sampled_from(
[factory() for factory in scalars_strategies_factories.values()])
[factory(MIN_SCALAR, MAX_SCALAR)
for factory in scalars_strategies_factories.values()])


def scalars_to_segments(scalars: Strategy[Scalar]
) -> Strategy[Segment]:
def scalars_to_segments(scalars: Strategy[Scalar]) -> Strategy[Segment]:
return (to_pairs(scalars_to_points(scalars))
.filter(pack(ne))
.map(pack(Segment)))


def scalars_to_points(scalars: Strategy[Scalar]
) -> Strategy[Point]:
def scalars_to_points(scalars: Strategy[Scalar]) -> Strategy[Point]:
return strategies.builds(Point, scalars, scalars)


Expand Down
2 changes: 2 additions & 0 deletions tests/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@
Point = context.point_cls
Segment = context.segment_cls

MAX_SCALAR = 10 ** 20
MIN_SCALAR = -MAX_SCALAR

def to_pairs(strategy: Strategy[Domain]) -> Strategy[Tuple[Domain, Domain]]:
return strategies.tuples(strategy, strategy)
Expand Down

0 comments on commit 8914e38

Please sign in to comment.