public void EmptyPointsAreRemoved(GeometryGeoJsonConverter sut, IMultipoint multiPoint, IPoint point1, IPoint point2, IPoint emptyPoint)
        {
            emptyPoint.SetEmpty();
            multiPoint.SetEmpty();
            ((IPointCollection)multiPoint).AddPoint(emptyPoint);
            ((IPointCollection)multiPoint).AddPoint(point1);
            ((IPointCollection)multiPoint).AddPoint(emptyPoint);
            ((IPointCollection)multiPoint).AddPoint(point2);
            ((IPointCollection)multiPoint).AddPoint(emptyPoint);

            var actual   = JsonConvert.SerializeObject(multiPoint, sut);
            var expected = $@"{{
  ""type"": ""MultiPoint"",
  ""coordinates"": [
    [
      {point1.X.ToJsonString()},
      {point1.Y.ToJsonString()}
    ],
    [
      {point2.X.ToJsonString()},
      {point2.Y.ToJsonString()}
    ]
  ]
}}";

            JsonAssert.Equal(expected, actual);
        }
        public void EmptyReturnsNull(IMultipoint multiPoint, GeometryGeoJsonConverter sut)
        {
            multiPoint.SetEmpty();

            var actual = JsonConvert.SerializeObject(multiPoint, sut);

            Assert.Equal("null", actual);
        }
            public void PointReturnsMultiPoint(IMultipoint multiPoint, IPoint point)
            {
                multiPoint.SetEmpty();
                ((IPointCollection)multiPoint).AddPoint(point);

                var actual   = JsonConvert.SerializeObject(multiPoint, Formatting.Indented, _sut);
                var expected = $@"{{
  ""type"": ""MultiPoint"",
  ""coordinates"": [[
    {point.X.ToJsonString()},
    {point.Y.ToJsonString()}
  ]]
}}";

                JsonAssert.Equal(expected, actual);
            }
        public void SinglePointReturnsPoint(GeometryGeoJsonConverter sut, IMultipoint multiPoint, IPoint point)
        {
            multiPoint.SetEmpty();
            ((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 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);
            }