LL - disjoint, non-overlapping envelopes LINESTRING(60 0, 20 80, 100 80, 80 120, 40 140) LINESTRING(140 300, 220 160, 260 200, 240 260) true LL - disjoint, overlapping envelopes LINESTRING(60 0, 20 80, 100 80, 80 120, 40 140) LINESTRING(60 40, 140 40, 140 160, 0 160) true LL - disjoint, non-overlapping envelopes, B closed LINESTRING(60 0, 20 80, 100 80, 80 120, 40 140) LINESTRING(140 280, 240 280, 240 180, 140 180, 140 280) true LL - disjoint, overlapping envelopes, B closed LINESTRING(140 0, 0 0, 40 60, 0 120, 60 200, 220 160, 220 40) LINESTRING(80 140, 180 100, 160 40, 100 40, 60 100, 80 140) true Line vs line - pointwise equal LINESTRING(20 20, 80 80) LINESTRING(20 20, 80 80) true Line vs line - pointwise equal LINESTRING(40 40, 160 160, 200 60, 60 140) LINESTRING(40 40, 160 160, 200 60, 60 140) true Line vs line - topologically equal LINESTRING(40 40, 200 40) LINESTRING(200 40, 140 40, 40 40) true LL - topographically equal with self-intersection LINESTRING(0 0, 110 0, 60 0) LINESTRING(0 0, 110 0) true LmL - topographically equal with no boundary LINESTRING(0 0, 0 50, 50 50, 50 0, 0 0) MULTILINESTRING( (0 0, 0 50), (0 50, 50 50), (50 50, 50 0), (50 0, 0 0)) true LmL - topographically equal with self intersections LINESTRING(0 0, 80 0, 80 60, 80 0, 170 0) MULTILINESTRING( (0 0, 170 0), (80 0, 80 60)) true LL - A-IntNV = B-IntNV LINESTRING(80 100, 180 200) LINESTRING(80 180, 180 120) true intersect in Int NV LINESTRING(40 40, 100 100, 160 160) LINESTRING(160 60, 100 100, 60 140) true LL - intersection: {A-Bdy, A-IntV} = B-IntNV LINESTRING(40 40, 100 100, 180 100, 180 180, 100 180, 100 100) LINESTRING(140 60, 60 140) true LL - intersection: {A-Bdy, A-IntNV} = B-IntNV LINESTRING(40 40, 180 180, 100 180, 100 100) LINESTRING(140 60, 60 140) true LL - intersection: A-IntNV = {B-Bdy, B-IntNV} LINESTRING(20 110, 200 110) LINESTRING(200 200, 20 20, 200 20, 110 110, 20 200, 110 200, 110 110) true LL - one segment overlapping, one distinct LINESTRING(80 90, 50 50, 0 0) LINESTRING(0 0, 100 100) true LL - A contained in B LINESTRING(40 140, 240 140) LINESTRING(40 140, 100 140, 80 80, 120 60, 100 140, 160 140, 160 100, 200 100, 160 140, 240 140) true LL - simple overlapping lines LINESTRING(20 20, 100 20, 20 20) LINESTRING(60 20, 200 20) true LL - A-spiral, B-contained LINESTRING(40 60, 180 60, 180 140, 100 140, 100 60, 220 60, 220 180, 80 180, 80 60, 280 60) LINESTRING(140 60, 180 60, 220 60, 260 60) true test for LinearRing point location bug LINEARRING(0 0, 0 5, 5 5, 5 0, 0 0) LINESTRING( 2 2, 4 4) true