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