Example #1
0
        public void CanGetErrorSequences3()
        {
            var polyline = (IPolyline)CurveConstruction.StartLine(CreatePoint(0, 0, 0))
                           .LineTo(CreatePoint(1, 0, 1))                                          // +
                           .LineTo(CreatePoint(1, 0, double.NaN))
                           .LineTo(CreatePoint(2, 0, 2))                                          // =
                           .Curve;

            polyline.SpatialReference = CreateSpatialReference(_mTolerance, _xyTolerance);
            GeometryUtils.MakeMAware(polyline);

            IEnumerable <MMonotonicitySequence> result;

            MMonotonicitySequence[] sequences;

            result = MeasureUtils.GetErrorSequences(polyline, MonotonicityDirection.Increasing,
                                                    () => false, true);

            Assert.AreEqual(0, result.Count());

            result = MeasureUtils.GetErrorSequences(polyline, MonotonicityDirection.Decreasing,
                                                    () => false, true);
            sequences = result.ToArray();

            Assert.AreEqual(1, result.Count());
            Assert.AreEqual(1, sequences[0].Segments.Count);
        }
Example #2
0
        public void CanGetErrorSequences()
        {
            var polyline = (IPolyline)CurveConstruction.StartLine(CreatePoint(0, 0, 0))
                           .LineTo(CreatePoint(1, 0, 1))                                          // +
                           .LineTo(CreatePoint(1, 0, 2))                                          // +
                           .LineTo(CreatePoint(2, 0, 3))                                          // +
                           .LineTo(CreatePoint(3, 0, 3))                                          // =
                           .LineTo(CreatePoint(4, 0, 3))                                          // =
                           .LineTo(CreatePoint(5, 0, 1))                                          // -
                           .LineTo(CreatePoint(6, 0, 0))                                          // -
                           .LineTo(CreatePoint(7, 0, 9))                                          // +
                           .LineTo(CreatePoint(8, 0, 4))                                          // -
                           .Curve;

            polyline.SpatialReference = CreateSpatialReference(_mTolerance, _xyTolerance);
            GeometryUtils.MakeMAware(polyline);

            IEnumerable <MMonotonicitySequence> result;

            MMonotonicitySequence[] sequences;

            result = MeasureUtils.GetErrorSequences(polyline, MonotonicityDirection.Increasing,
                                                    () => false, true);
            sequences = result.ToArray();

            Assert.AreEqual(result.Count(), 2);
            Assert.AreEqual(sequences[0].Segments.Count, 2);
            Assert.AreEqual(sequences[1].Segments.Count, 1);

            result = MeasureUtils.GetErrorSequences(polyline, MonotonicityDirection.Increasing,
                                                    () => false, false);
            sequences = result.ToArray();

            Assert.AreEqual(result.Count(), 3);
            Assert.AreEqual(sequences[0].Segments.Count, 2);
            Assert.AreEqual(sequences[1].Segments.Count, 2);
            Assert.AreEqual(sequences[2].Segments.Count, 1);

            result = MeasureUtils.GetErrorSequences(polyline, MonotonicityDirection.Increasing,
                                                    () => true, true);
            sequences = result.ToArray();

            Assert.AreEqual(result.Count(), 2);
            Assert.AreEqual(sequences[0].Segments.Count, 3);
            Assert.AreEqual(sequences[1].Segments.Count, 1);

            result = MeasureUtils.GetErrorSequences(polyline, MonotonicityDirection.Any,
                                                    () => false, true);
            sequences = result.ToArray();

            Assert.AreEqual(result.Count(), 2);
            Assert.AreEqual(sequences[0].Segments.Count, 2);
            Assert.AreEqual(sequences[1].Segments.Count, 1);

            result = MeasureUtils.GetErrorSequences(polyline, MonotonicityDirection.Any,
                                                    () => false, false);
            sequences = result.ToArray();

            Assert.AreEqual(result.Count(), 3);
            Assert.AreEqual(sequences[0].Segments.Count, 2);
            Assert.AreEqual(sequences[1].Segments.Count, 2);
            Assert.AreEqual(sequences[2].Segments.Count, 1);
        }