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);
        }
Esempio n. 2
0
        public void CanConvert()
        {
            // Arrange
            var converter = new GeometryJsonConverter();

            // Act
            var result = converter.CanConvert(typeof(Geometry));

            // Assert
            Assert.True(result);
        }
        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. 4
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);
        }
Esempio n. 5
0
        public void Read(string value, Geometry expectedResult, Type type)
        {
            // Arrange
            var options = new JsonSerializerOptions();

            var jsonUtf8Bytes = System.Text.Json.JsonSerializer.SerializeToUtf8Bytes(value, options);
            var reader        = new Utf8JsonReader(jsonUtf8Bytes);
            var converter     = new GeometryJsonConverter();

            while (reader.Read())
            {
                if (reader.TokenType == JsonTokenType.String)
                {
                    break;
                }
            }

            // Act
            var result = converter.Read(ref reader, type, options);

            // Assert
            Assert.Equal(expectedResult, result);
        }