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); }
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); }