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); }
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")); }
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(); }
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); }
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); }
internal abstract void ValidateTransition(SpatialValidatorImplementation.NestedValidator.PipelineCall transition, SpatialValidatorImplementation.NestedValidator validator);
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)); }
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); }
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); }
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); } }
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); }
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); } } }
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); }
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); }
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(); }
public void ValidateFullGlobe_Geography() { GeographyPipeline v = new SpatialValidatorImplementation(); v.SetCoordinateSystem(NonDefaultGeographicCoords); v.BeginGeography(SpatialType.FullGlobe); v.EndGeography(); }
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); }
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); } }
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); } }
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")); }
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); }