public void LineString3DReturnsPolyline3D(Type type, GeoJsonSerializerSettings serializerSettings, double x1, double y1, double z1, double x2, double y2, double z2) { serializerSettings.Dimensions = DimensionHandling.XYZ; var sut = new GeometryGeoJsonConverter(serializerSettings); var geoJson = $@"{{ ""type"": ""LineString"", ""coordinates"": [ [{x1.ToJsonString()}, {y1.ToJsonString()}, {z1.ToJsonString()}], [{x2.ToJsonString()}, {y2.ToJsonString()}, {z2.ToJsonString()}] ] }}"; var actual = (IPolyline)JsonConvert.DeserializeObject(geoJson, type, sut); Assert.Equal(x1, actual.FromPoint.X); Assert.Equal(y1, actual.FromPoint.Y); Assert.Equal(z1, actual.FromPoint.Z); Assert.Equal(x2, actual.ToPoint.X); Assert.Equal(y2, actual.ToPoint.Y); Assert.Equal(z2, actual.ToPoint.Z); Assert.True(((IZAware)actual).ZAware); }
public void PointReturnsEmpty(GeoJsonSerializerSettings serializerSettings, double x, double y) { serializerSettings.Simplify = true; var sut = new GeometryGeoJsonConverter(serializerSettings); var geoJson = $@"{{ ""type"": ""Point"", ""coordinates"": [{x.ToJsonString()}, {y.ToJsonString()}] }}"; var actual = JsonConvert.DeserializeObject <IPolygon>(geoJson, sut); Assert.True(actual.IsEmpty); }
public void NullToPointReturnsNull(GeoJsonSerializerSettings serializerSettings, IPoint point) { serializerSettings.Simplify = true; var sut = new GeometryGeoJsonConverter(serializerSettings); var invalidPolyline = (IPolyline) new PolylineClass(); invalidPolyline.FromPoint = point; var actual = JsonConvert.SerializeObject(invalidPolyline, Formatting.Indented, sut); Assert.Equal("null", actual); }
public void PointReturnsMultipoint(GeoJsonSerializerSettings serializerSettings, double x, double y) { serializerSettings.Simplify = true; var sut = new GeometryGeoJsonConverter(serializerSettings); var geoJson = $@"{{ ""type"": ""Point"", ""coordinates"": [{x.ToJsonString()}, {y.ToJsonString()}] }}"; var actual = (IPointCollection)JsonConvert.DeserializeObject <IMultipoint>(geoJson, sut); Assert.Equal(1, actual.PointCount); Assert.Equal(x, actual.Point[0].X); Assert.Equal(y, actual.Point[0].Y); }
public void SinglePositionArrayReturnsEmpty(GeoJsonSerializerSettings serializerSettings, double x1, double y1) { serializerSettings.Simplify = true; var sut = new GeometryGeoJsonConverter(serializerSettings); var geoJson = $@"{{ ""type"": ""LineString"", ""coordinates"": [ [{x1.ToJsonString()}, {y1.ToJsonString()}] ] }}"; var actual = JsonConvert.DeserializeObject <IPolyline>(geoJson, sut); Assert.True(actual.IsEmpty); }
public void OverlappedSegmentIsRemoved(GeoJsonSerializerSettings serializerSettings, ILine line, IPoint midPoint, IPoint extensionPoint, ISpatialReference spatialReference) { serializerSettings.Simplify = true; var sut = new GeometryGeoJsonConverter(serializerSettings); // Find the midpoint to create the FromPoint of the overlapped segment. line.QueryPoint(esriSegmentExtension.esriNoExtension, 0.5, true, midPoint); // Extend pass the endpoint to create to ToPoint of the overlapped segment. line.QueryPoint(esriSegmentExtension.esriExtendAtTo, line.Length + line.Length / 2, false, extensionPoint); var overlappedLine = (ILine) new LineClass(); overlappedLine.FromPoint = midPoint; overlappedLine.ToPoint = extensionPoint; var path = (ISegmentCollection) new PathClass(); path.AddSegment((ISegment)line); path.AddSegment((ISegment)overlappedLine); var polyline = (IGeometryCollection) new PolylineClass(); polyline.AddGeometry((IGeometry)path); ((IGeometry)polyline).SpatialReference = spatialReference; var actual = JsonConvert.SerializeObject(polyline, Formatting.Indented, sut); var expected = $@"{{ ""type"": ""LineString"", ""coordinates"": [ [ {line.FromPoint.X.ToJsonString()}, {line.FromPoint.Y.ToJsonString()} ], [ {extensionPoint.X.ToJsonString()}, {extensionPoint.Y.ToJsonString()} ] ] }}"; JsonAssert.Equal(expected, actual); }
public void TouchingPathsReturnsLineString(GeoJsonSerializerSettings serializerSettings, ILine line, IPoint point, ISpatialReference spatialReference) { serializerSettings.Simplify = true; var sut = new GeometryGeoJsonConverter(serializerSettings); var path1 = (ISegmentCollection) new PathClass(); path1.AddSegment((ISegment)line); var otherLine = (ILine) new LineClass(); otherLine.FromPoint = line.ToPoint; otherLine.ToPoint = point; var path2 = (ISegmentCollection) new PathClass(); path2.AddSegment((ISegment)otherLine); var polyline = (IGeometryCollection) new PolylineClass(); polyline.AddGeometry((IGeometry)path1); polyline.AddGeometry((IGeometry)path2); ((IGeometry)polyline).SpatialReference = spatialReference; var actual = JsonConvert.SerializeObject(polyline, Formatting.Indented, sut); var expected = $@"{{ ""type"": ""LineString"", ""coordinates"": [ [ {line.FromPoint.X.ToJsonString()}, {line.FromPoint.Y.ToJsonString()} ], [ {line.ToPoint.X.ToJsonString()}, {line.ToPoint.Y.ToJsonString()} ], [ {point.X.ToJsonString()}, {point.Y.ToJsonString()} ] ] }}"; JsonAssert.Equal(expected, actual); }
public void Point3DReturnsMultipoint3D(Type type, GeoJsonSerializerSettings serializerSettings, double x, double y, double z) { serializerSettings.Dimensions = DimensionHandling.XYZ; var sut = new GeometryGeoJsonConverter(serializerSettings); var geoJson = $@"{{ ""type"": ""Point"", ""coordinates"": [{x.ToJsonString()}, {y.ToJsonString()}, {z.ToJsonString()}] }}"; var actual = (IPointCollection)JsonConvert.DeserializeObject(geoJson, type, sut); Assert.Equal(1, actual.PointCount); Assert.Equal(x, actual.Point[0].X); Assert.Equal(y, actual.Point[0].Y); Assert.Equal(z, actual.Point[0].Z); Assert.True(((IZAware)actual).ZAware); }
public void MultiSamePointReturnsUniquePoint(GeoJsonSerializerSettings serializerSettings, IMultipoint multiPoint, IPoint point) { serializerSettings.Simplify = true; var sut = new GeometryGeoJsonConverter(serializerSettings); multiPoint.SetEmpty(); ((IPointCollection)multiPoint).AddPoint(point); ((IPointCollection)multiPoint).AddPoint(point); ((IPointCollection)multiPoint).AddPoint(point); var actual = JsonConvert.SerializeObject(multiPoint, sut); var expected = $@"{{ ""type"": ""Point"", ""coordinates"": [ {point.X.ToJsonString()}, {point.Y.ToJsonString()} ] }}"; JsonAssert.Equal(expected, actual); }
public void Point3DReturnsJson(IPoint point) { var settings = new GeoJsonSerializerSettings { Dimensions = DimensionHandling.XYZ }; var sut = new GeometryGeoJsonConverter(settings); ((IZAware)point).ZAware = true; var actual = JsonConvert.SerializeObject(point, Formatting.Indented, sut); var expected = $@"{{ ""type"": ""Point"", ""coordinates"": [ {point.X.ToJsonString()}, {point.Y.ToJsonString()}, {point.Z.ToJsonString()} ] }}"; JsonAssert.Equal(expected, actual); }
public TestGeometryGeoJsonConverter(GeoJsonSerializerSettings serializerSettings) : base(serializerSettings) { }