public void CanDetectLinearIntersectionAndCrossing()
        {
            IPolyline polyline1 = CreatePolyline(
                CreatePoint(0, 0),
                CreatePoint(100, 100));
            IPolyline polyline2 = CreatePolyline(
                CreatePoint(100, 0),
                CreatePoint(49, 49),
                CreatePoint(51, 51),
                CreatePoint(0, 100),
                CreatePoint(10, 0));

            const bool reportOverlaps = true;

            Assert.IsTrue(HasInvalidIntersection(polyline1, polyline2,
                                                 AllowedEndpointInteriorIntersections.None,
                                                 reportOverlaps,
                                                 _tolerance));

            IMultipoint intersections = LineIntersectionUtils.GetInvalidIntersections(
                polyline1, polyline2,
                AllowedEndpointInteriorIntersections.None,
                AllowedLineInteriorIntersections.None,
                reportOverlaps,
                _tolerance);

            Assert.AreEqual(3, GeometryUtils.GetPointCount(intersections));
            AssertPoint(intersections, 0, CreatePoint(9.0918, 9.0916));
            AssertPoint(intersections, 1, CreatePoint(49, 49));
            AssertPoint(intersections, 2, CreatePoint(51, 51));
        }
        public void CanDetectEndPointSegmentIntersection()
        {
            IPolyline polyline1 = CreatePolyline(
                CreatePoint(0, 0),
                CreatePoint(100, 100));
            IPolyline polyline2 = CreatePolyline(
                CreatePoint(100, 0),
                CreatePoint(50.001, 50));

            const bool reportOverlaps = false;

            Assert.IsTrue(HasInvalidIntersection(polyline1, polyline2,
                                                 AllowedEndpointInteriorIntersections.None,
                                                 reportOverlaps,
                                                 _tolerance));

            IMultipoint intersections = LineIntersectionUtils.GetInvalidIntersections(
                polyline1, polyline2,
                AllowedEndpointInteriorIntersections.None,
                AllowedLineInteriorIntersections.None,
                reportOverlaps,
                _tolerance);

            Assert.AreEqual(1, GeometryUtils.GetPointCount(intersections));
            AssertPoint(intersections, 0, CreatePoint(50.001, 50));
        }