private T AssertRoundtrip <T>(string json) where T : Geometry
        {
            var element  = JsonDocument.Parse(json).RootElement;
            var geometry = GeometryJsonConverter.Read(element);

            var memoryStreamOutput = new MemoryStream();

            using (Utf8JsonWriter writer = new Utf8JsonWriter(memoryStreamOutput))
            {
                GeometryJsonConverter.Write(writer, geometry);
            }

            var element2  = JsonDocument.Parse(memoryStreamOutput.ToArray()).RootElement;
            var geometry2 = GeometryJsonConverter.Read(element2);

            var options = new JsonSerializerOptions()
            {
                Converters = { new GeometryJsonConverter() }
            };

            // Serialize and deserialize as a base class
            var bytes     = JsonSerializer.SerializeToUtf8Bytes(geometry2, typeof(Geometry), options);
            var geometry3 = JsonSerializer.Deserialize <Geometry>(bytes, options);

            // Serialize and deserialize as a concrete class
            var bytes2    = JsonSerializer.SerializeToUtf8Bytes(geometry3, options);
            var geometry4 = JsonSerializer.Deserialize <T>(bytes2, options);

            return(geometry4);
        }
        private T AssertRoundtrip <T>(string json) where T : Geometry
        {
            var element  = JsonDocument.Parse(json).RootElement;
            var geometry = GeometryJsonConverter.Read(element);

            var memoryStreamOutput = new MemoryStream();

            using (Utf8JsonWriter writer = new Utf8JsonWriter(memoryStreamOutput))
            {
                GeometryJsonConverter.Write(writer, geometry);
            }

            var element2  = JsonDocument.Parse(memoryStreamOutput.ToArray()).RootElement;
            var geometry2 = GeometryJsonConverter.Read(element2);

            return((T)geometry2);
        }
Esempio n. 3
0
        public void Write(Geometry value, string expectedResult)
        {
            // Arrange
            var options = new JsonSerializerOptions();

            using var stream = new MemoryStream();
            using var writer = new Utf8JsonWriter(stream);
            var converter = new GeometryJsonConverter();

            writer.WriteStartObject();
            writer.WritePropertyName("test");

            // Act
            converter.Write(writer, value, options);

            // Assert
            writer.WriteEndObject();
            writer.Flush();
            var result = Encoding.UTF8.GetString(stream.ToArray());

            Assert.Equal(expectedResult, result);
        }