コード例 #1
0
 public void ValidateNoFullGlobe()
 {
     GeometryPipeline v = new SpatialValidatorImplementation();
     var ex = SpatialTestUtils.RunCatching<FormatException>(() => v.BeginGeometry(SpatialType.FullGlobe));
     Assert.IsNotNull(ex);
     Assert.AreEqual(Strings.Validator_InvalidType(SpatialType.FullGlobe), ex.Message);
 }
コード例 #2
0
ファイル: PipelineTests.cs プロジェクト: AlineGuan/odata.net
 public void ExpectFailureOnCrossingPipelines()
 {
     var validator5 = new SpatialValidatorImplementation();
     validator5.GeographyPipeline.SetCoordinateSystem(CoordinateSystem.DefaultGeography);
     validator5.GeographyPipeline.BeginGeography(SpatialType.Point);
     Action test = () => validator5.GeometryPipeline.BeginFigure(new GeometryPosition(333, 3333333, 333, 333));
     test.ShouldThrow<FormatException>().WithMessage(Strings.Validator_UnexpectedCall("SetCoordinateSystem", "BeginFigure"));
 }
コード例 #3
0
 public void ValidatePolygonRing()
 {
     GeometryPipeline v = new SpatialValidatorImplementation();
     v.SetCoordinateSystem(NonDefaultGeometricCoords);
     v.BeginGeometry(SpatialType.Polygon);
     v.BeginFigure(new GeometryPosition(10, 20, 30, 40));
     v.LineTo(new GeometryPosition(20, 30, 40, 50));
     v.LineTo(new GeometryPosition(20, 40, 40, 50));
     v.LineTo(new GeometryPosition(10, 20, 30, 40));
     v.EndFigure();
     v.EndGeometry();
 }
コード例 #4
0
 public void ValidatePolygonRing_LessThanFour_Geography()
 {
     GeographyPipeline v = new SpatialValidatorImplementation();
     v.SetCoordinateSystem(NonDefaultGeographicCoords);
     v.BeginGeography(SpatialType.Polygon);
     v.BeginFigure(new GeographyPosition(10, 20, 30, 40));
     v.LineTo(new GeographyPosition(20, 30, 40, 50));
     v.LineTo(new GeographyPosition(20, 30, 40, 50));
     var ex = SpatialTestUtils.RunCatching<FormatException>(v.EndFigure);
     Assert.NotNull(ex);
     Assert.Equal(Strings.Validator_InvalidPolygonPoints, ex.Message);
 }
コード例 #5
0
        public void ValidateLongitude_Geography()
        {
            GeographyPipeline v = new SpatialValidatorImplementation();
            v.SetCoordinateSystem(NonDefaultGeographicCoords);
            v.BeginGeography(SpatialType.Point);

            var ex = SpatialTestUtils.RunCatching<FormatException>(() => v.BeginFigure(new GeographyPosition(0, -15070, 0, 0)));
            Assert.NotNull(ex);
            Assert.Equal(Strings.Validator_InvalidLongitudeCoordinate(-15070), ex.Message);

            v.Reset();
            v.SetCoordinateSystem(NonDefaultGeographicCoords);
            v.BeginGeography(SpatialType.Point);

            ex = SpatialTestUtils.RunCatching<FormatException>(() => v.BeginFigure(new GeographyPosition(0, 15070, 0, 0)));
            Assert.NotNull(ex);
            Assert.Equal(Strings.Validator_InvalidLongitudeCoordinate(15070), ex.Message);
        }
コード例 #6
0
 internal abstract void ValidateTransition(SpatialValidatorImplementation.NestedValidator.PipelineCall transition, SpatialValidatorImplementation.NestedValidator validator);
コード例 #7
0
 protected static void ThrowExpected(SpatialValidatorImplementation.NestedValidator.PipelineCall transition1, SpatialValidatorImplementation.NestedValidator.PipelineCall transition2, SpatialValidatorImplementation.NestedValidator.PipelineCall transition3, SpatialValidatorImplementation.NestedValidator.PipelineCall actual)
 {
     throw new FormatException(Strings.Validator_UnexpectedCall2(transition1 + ", " + transition2, transition3, actual));
 }
コード例 #8
0
                internal override void ValidateTransition(SpatialValidatorImplementation.NestedValidator.PipelineCall transition, SpatialValidatorImplementation.NestedValidator validator)
                {
                    switch (transition)
                    {
                        case SpatialValidatorImplementation.NestedValidator.PipelineCall.SetCoordinateSystem:
                            return;

                        case SpatialValidatorImplementation.NestedValidator.PipelineCall.BeginPoint:
                            validator.Call(SpatialValidatorImplementation.NestedValidator.PointStart);
                            return;

                        case SpatialValidatorImplementation.NestedValidator.PipelineCall.BeginLineString:
                            validator.Call(SpatialValidatorImplementation.NestedValidator.LineStringStart);
                            return;

                        case SpatialValidatorImplementation.NestedValidator.PipelineCall.BeginPolygon:
                            validator.Call(SpatialValidatorImplementation.NestedValidator.PolygonStart);
                            return;

                        case SpatialValidatorImplementation.NestedValidator.PipelineCall.BeginMultiPoint:
                            validator.Call(SpatialValidatorImplementation.NestedValidator.MultiPoint);
                            return;

                        case SpatialValidatorImplementation.NestedValidator.PipelineCall.BeginMultiLineString:
                            validator.Call(SpatialValidatorImplementation.NestedValidator.MultiLineString);
                            return;

                        case SpatialValidatorImplementation.NestedValidator.PipelineCall.BeginMultiPolygon:
                            validator.Call(SpatialValidatorImplementation.NestedValidator.MultiPolygon);
                            return;

                        case SpatialValidatorImplementation.NestedValidator.PipelineCall.BeginCollection:
                            validator.Call(SpatialValidatorImplementation.NestedValidator.Collection);
                            return;

                        case SpatialValidatorImplementation.NestedValidator.PipelineCall.BeginFullGlobe:
                            throw new FormatException(Strings.Validator_FullGlobeInCollection);

                        case SpatialValidatorImplementation.NestedValidator.PipelineCall.End:
                            validator.Return();
                            return;
                    }
                    SpatialValidatorImplementation.NestedValidator.ValidatorState.ThrowExpected(SpatialValidatorImplementation.NestedValidator.PipelineCall.SetCoordinateSystem, SpatialValidatorImplementation.NestedValidator.PipelineCall.Begin, SpatialValidatorImplementation.NestedValidator.PipelineCall.End, transition);
                }
コード例 #9
0
        public void ValidateFullGlobe_Geometry()
        {
            GeometryPipeline v = new SpatialValidatorImplementation();
            v.SetCoordinateSystem(NonDefaultGeometricCoords);

            var ex = SpatialTestUtils.RunCatching<FormatException>(() => v.BeginGeometry(SpatialType.FullGlobe));
            Assert.NotNull(ex);
            Assert.Equal(Strings.Validator_InvalidType(SpatialType.FullGlobe), ex.Message);
        }
コード例 #10
0
 internal override void ValidateTransition(SpatialValidatorImplementation.NestedValidator.PipelineCall transition, SpatialValidatorImplementation.NestedValidator validator)
 {
     if (transition == SpatialValidatorImplementation.NestedValidator.PipelineCall.End)
     {
         validator.Return();
     }
     else
     {
         SpatialValidatorImplementation.NestedValidator.ValidatorState.ThrowExpected(SpatialValidatorImplementation.NestedValidator.PipelineCall.End, transition);
     }
 }
コード例 #11
0
                internal override void ValidateTransition(SpatialValidatorImplementation.NestedValidator.PipelineCall transition, SpatialValidatorImplementation.NestedValidator validator)
                {
                    switch (transition)
                    {
                        case SpatialValidatorImplementation.NestedValidator.PipelineCall.LineTo:
                            if (validator.pointCount != 0)
                            {
                                SpatialValidatorImplementation.NestedValidator.ValidatorState.ThrowExpected(SpatialValidatorImplementation.NestedValidator.PipelineCall.EndFigure, transition);
                            }
                            return;

                        case SpatialValidatorImplementation.NestedValidator.PipelineCall.EndFigure:
                            if (validator.pointCount == 0)
                            {
                                SpatialValidatorImplementation.NestedValidator.ValidatorState.ThrowExpected(SpatialValidatorImplementation.NestedValidator.PipelineCall.BeginFigure, transition);
                            }
                            validator.Jump(SpatialValidatorImplementation.NestedValidator.PointEnd);
                            return;
                    }
                    SpatialValidatorImplementation.NestedValidator.ValidatorState.ThrowExpected(SpatialValidatorImplementation.NestedValidator.PipelineCall.EndFigure, transition);
                }
コード例 #12
0
 internal override void ValidateTransition(SpatialValidatorImplementation.NestedValidator.PipelineCall transition, SpatialValidatorImplementation.NestedValidator validator)
 {
     SpatialValidatorImplementation.NestedValidator.PipelineCall call = transition;
     if (call != SpatialValidatorImplementation.NestedValidator.PipelineCall.SetCoordinateSystem)
     {
         if (call == SpatialValidatorImplementation.NestedValidator.PipelineCall.BeginPolygon)
         {
             validator.Call(SpatialValidatorImplementation.NestedValidator.PolygonStart);
         }
         else if (call == SpatialValidatorImplementation.NestedValidator.PipelineCall.End)
         {
             validator.Return();
         }
         else
         {
             SpatialValidatorImplementation.NestedValidator.ValidatorState.ThrowExpected(SpatialValidatorImplementation.NestedValidator.PipelineCall.SetCoordinateSystem, SpatialValidatorImplementation.NestedValidator.PipelineCall.BeginPolygon, SpatialValidatorImplementation.NestedValidator.PipelineCall.End, transition);
         }
     }
 }
コード例 #13
0
                internal override void ValidateTransition(SpatialValidatorImplementation.NestedValidator.PipelineCall transition, SpatialValidatorImplementation.NestedValidator validator)
                {
                    switch (transition)
                    {
                        case SpatialValidatorImplementation.NestedValidator.PipelineCall.SetCoordinateSystem:
                            return;

                        case SpatialValidatorImplementation.NestedValidator.PipelineCall.BeginPoint:
                            validator.Call(SpatialValidatorImplementation.NestedValidator.PointStart);
                            return;

                        case SpatialValidatorImplementation.NestedValidator.PipelineCall.End:
                            validator.Return();
                            return;
                    }
                    SpatialValidatorImplementation.NestedValidator.ValidatorState.ThrowExpected(SpatialValidatorImplementation.NestedValidator.PipelineCall.SetCoordinateSystem, SpatialValidatorImplementation.NestedValidator.PipelineCall.BeginPoint, SpatialValidatorImplementation.NestedValidator.PipelineCall.End, transition);
                }
コード例 #14
0
                internal override void ValidateTransition(SpatialValidatorImplementation.NestedValidator.PipelineCall transition, SpatialValidatorImplementation.NestedValidator validator)
                {
                    switch (transition)
                    {
                        case SpatialValidatorImplementation.NestedValidator.PipelineCall.LineTo:
                            return;

                        case SpatialValidatorImplementation.NestedValidator.PipelineCall.EndFigure:
                            if (validator.pointCount < 2)
                            {
                                throw new FormatException(Strings.Validator_LineStringNeedsTwoPoints);
                            }
                            validator.Jump(SpatialValidatorImplementation.NestedValidator.LineStringEnd);
                            return;
                    }
                    SpatialValidatorImplementation.NestedValidator.ValidatorState.ThrowExpected(SpatialValidatorImplementation.NestedValidator.PipelineCall.LineTo, SpatialValidatorImplementation.NestedValidator.PipelineCall.EndFigure, transition);
                }
コード例 #15
0
 internal override void ValidateTransition(SpatialValidatorImplementation.NestedValidator.PipelineCall transition, SpatialValidatorImplementation.NestedValidator validator)
 {
     if (transition != SpatialValidatorImplementation.NestedValidator.PipelineCall.End)
     {
         throw new FormatException(Strings.Validator_FullGlobeCannotHaveElements);
     }
     validator.Return();
 }
コード例 #16
0
 public void ValidateFullGlobe_Geography()
 {
     GeographyPipeline v = new SpatialValidatorImplementation();
     v.SetCoordinateSystem(NonDefaultGeographicCoords);
     v.BeginGeography(SpatialType.FullGlobe);
     v.EndGeography();
 }
コード例 #17
0
                internal override void ValidateTransition(SpatialValidatorImplementation.NestedValidator.PipelineCall transition, SpatialValidatorImplementation.NestedValidator validator)
                {
                    switch (transition)
                    {
                        case SpatialValidatorImplementation.NestedValidator.PipelineCall.LineTo:
                            return;

                        case SpatialValidatorImplementation.NestedValidator.PipelineCall.EndFigure:
                            validator.ringCount++;
                            if (!validator.processingGeography)
                            {
                                SpatialValidatorImplementation.NestedValidator.ValidateGeometryPolygon(validator.pointCount, validator.initialFirstCoordinate, validator.initialSecondCoordinate, validator.mostRecentFirstCoordinate, validator.mostRecentSecondCoordinate);
                                break;
                            }
                            SpatialValidatorImplementation.NestedValidator.ValidateGeographyPolygon(validator.pointCount, validator.initialFirstCoordinate, validator.initialSecondCoordinate, validator.mostRecentFirstCoordinate, validator.mostRecentSecondCoordinate);
                            break;

                        default:
                            SpatialValidatorImplementation.NestedValidator.ValidatorState.ThrowExpected(SpatialValidatorImplementation.NestedValidator.PipelineCall.LineTo, SpatialValidatorImplementation.NestedValidator.PipelineCall.EndFigure, transition);
                            return;
                    }
                    validator.Jump(SpatialValidatorImplementation.NestedValidator.PolygonStart);
                }
コード例 #18
0
 internal override void ValidateTransition(SpatialValidatorImplementation.NestedValidator.PipelineCall transition, SpatialValidatorImplementation.NestedValidator validator)
 {
     SpatialValidatorImplementation.NestedValidator.PipelineCall call = transition;
     if (call == SpatialValidatorImplementation.NestedValidator.PipelineCall.BeginFigure)
     {
         validator.Jump(SpatialValidatorImplementation.NestedValidator.PolygonBuilding);
     }
     else if (call == SpatialValidatorImplementation.NestedValidator.PipelineCall.End)
     {
         validator.ringCount = 0;
         validator.Return();
     }
     else
     {
         SpatialValidatorImplementation.NestedValidator.ValidatorState.ThrowExpected(SpatialValidatorImplementation.NestedValidator.PipelineCall.BeginFigure, SpatialValidatorImplementation.NestedValidator.PipelineCall.End, transition);
     }
 }
コード例 #19
0
 internal override void ValidateTransition(SpatialValidatorImplementation.NestedValidator.PipelineCall transition, SpatialValidatorImplementation.NestedValidator validator)
 {
     if (transition == SpatialValidatorImplementation.NestedValidator.PipelineCall.SetCoordinateSystem)
     {
         validator.Call(SpatialValidatorImplementation.NestedValidator.BeginSpatial);
     }
     else
     {
         SpatialValidatorImplementation.NestedValidator.ValidatorState.ThrowExpected(SpatialValidatorImplementation.NestedValidator.PipelineCall.SetCoordinateSystem, transition);
     }
 }
コード例 #20
0
        public void UnexpectedGeometry()
        {
            var validator1 = new SpatialValidatorImplementation();
            validator1.GeographyPipeline.SetCoordinateSystem(CoordinateSystem.DefaultGeography);
            validator1.GeographyPipeline.BeginGeography(SpatialType.Point);
            SpatialTestUtils.VerifyExceptionThrown<FormatException>(
                 () => validator1.GeometryPipeline.BeginGeometry(SpatialType.Point),
                 Strings.Validator_UnexpectedCall("SetCoordinateSystem", "BeginPoint"));

            var validator2 = new SpatialValidatorImplementation();
            validator2.GeographyPipeline.SetCoordinateSystem(CoordinateSystem.DefaultGeography);
            validator2.GeographyPipeline.BeginGeography(SpatialType.Point);
            validator2.GeographyPipeline.BeginFigure(new GeographyPosition(45, 180, null, null));
            validator2.GeographyPipeline.EndFigure();
            SpatialTestUtils.VerifyExceptionThrown<FormatException>(
                 () => validator2.GeometryPipeline.EndGeometry(),
                 Strings.Validator_UnexpectedCall("SetCoordinateSystem", "End"));

            var validator3 = new SpatialValidatorImplementation();
            validator3.GeometryPipeline.SetCoordinateSystem(CoordinateSystem.DefaultGeometry);
            validator3.GeometryPipeline.BeginGeometry(SpatialType.Point);
            SpatialTestUtils.VerifyExceptionThrown<FormatException>(
                 () => validator3.GeographyPipeline.BeginGeography(SpatialType.Point),
                 Strings.Validator_UnexpectedCall("SetCoordinateSystem", "BeginPoint"));

            var validator4 = new SpatialValidatorImplementation();
            validator4.GeometryPipeline.SetCoordinateSystem(CoordinateSystem.DefaultGeometry);
            validator4.GeometryPipeline.BeginGeometry(SpatialType.Point);
            validator4.GeometryPipeline.BeginFigure(new GeometryPosition(45, 180, null, null));
            validator4.GeometryPipeline.EndFigure();
            SpatialTestUtils.VerifyExceptionThrown<FormatException>(
                 () => validator4.GeographyPipeline.EndGeography(),
                 Strings.Validator_UnexpectedCall("SetCoordinateSystem", "End"));

            var validator5 = new SpatialValidatorImplementation();
            validator5.GeographyPipeline.SetCoordinateSystem(CoordinateSystem.DefaultGeography);
            validator5.GeographyPipeline.BeginGeography(SpatialType.Point);

            SpatialTestUtils.VerifyExceptionThrown<FormatException>(
                  () => validator5.GeometryPipeline.BeginFigure(new GeometryPosition(333, 3333333, 333, 333)),
                  Strings.Validator_UnexpectedCall("SetCoordinateSystem", "BeginFigure"));
        }
コード例 #21
0
                internal override void ValidateTransition(SpatialValidatorImplementation.NestedValidator.PipelineCall transition, SpatialValidatorImplementation.NestedValidator validator)
                {
                    switch (transition)
                    {
                        case SpatialValidatorImplementation.NestedValidator.PipelineCall.BeginPoint:
                            validator.Jump(SpatialValidatorImplementation.NestedValidator.PointStart);
                            return;

                        case SpatialValidatorImplementation.NestedValidator.PipelineCall.BeginLineString:
                            validator.Jump(SpatialValidatorImplementation.NestedValidator.LineStringStart);
                            return;

                        case SpatialValidatorImplementation.NestedValidator.PipelineCall.BeginPolygon:
                            validator.Jump(SpatialValidatorImplementation.NestedValidator.PolygonStart);
                            return;

                        case SpatialValidatorImplementation.NestedValidator.PipelineCall.BeginMultiPoint:
                            validator.Jump(SpatialValidatorImplementation.NestedValidator.MultiPoint);
                            return;

                        case SpatialValidatorImplementation.NestedValidator.PipelineCall.BeginMultiLineString:
                            validator.Jump(SpatialValidatorImplementation.NestedValidator.MultiLineString);
                            return;

                        case SpatialValidatorImplementation.NestedValidator.PipelineCall.BeginMultiPolygon:
                            validator.Jump(SpatialValidatorImplementation.NestedValidator.MultiPolygon);
                            return;

                        case SpatialValidatorImplementation.NestedValidator.PipelineCall.BeginCollection:
                            validator.Jump(SpatialValidatorImplementation.NestedValidator.Collection);
                            return;

                        case SpatialValidatorImplementation.NestedValidator.PipelineCall.BeginFullGlobe:
                            if (validator.depth != 1)
                            {
                                throw new FormatException(Strings.Validator_FullGlobeInCollection);
                            }
                            validator.Jump(SpatialValidatorImplementation.NestedValidator.FullGlobe);
                            return;
                    }
                    SpatialValidatorImplementation.NestedValidator.ValidatorState.ThrowExpected(SpatialValidatorImplementation.NestedValidator.PipelineCall.Begin, transition);
                }