public void DeserializeAsSquareMetresWithFullySerializedUnit_ShouldReturnValidResult() { // arrange string json = @"{ 'squareMetres': 123.456, 'unit': { 'name': 'square millimetre', 'abbreviation': 'mm²', 'valueInSquareMetres': '0.000001' } }"; var converter = new AreaJsonConverter(); var expectedResult = new Area(squareMetres: (number)123.456m) .Convert(new AreaUnit( name: "square millimetre", abbreviation: "mm²", valueInSquareMetres: (number)0.000001)); // act var result = JsonConvert.DeserializeObject <Area>(json, converter); // assert result.Should().Be(expectedResult); }
public void Serialize_ShouldReturnValidJson(AreaSerializeTestData testData) { // arrange var converter = new AreaJsonConverter(testData.Format, testData.UnitFormat); // act string actualJson = JsonConvert.SerializeObject(testData.Quantity, converter); // assert actualJson.Should().MatchRegex(testData.ExpectedJsonPattern); }
public void DeserializeAsSquareMetres_ShouldReturnValidResult() { // arrange string json = @"{ 'squareMetres': 123.456 }"; var converter = new AreaJsonConverter(); var expectedResult = new Area(squareMetres: (number)123.456m); // act var result = JsonConvert.DeserializeObject <Area>(json, converter); // assert result.Should().Be(expectedResult); }
public void DeserializeAsSquareMetresWithPredefinedUnit_ShouldReturnValidResult() { // arrange string json = @"{ 'squareMetres': 123.456, 'unit': 'mm²' }"; var converter = new AreaJsonConverter(); var expectedResult = new Area(squareMetres: (number)123.456m) .Convert(AreaUnit.SquareMillimetre); // act var result = JsonConvert.DeserializeObject <Area>(json, converter); // assert result.Should().Be(expectedResult); }
public void SerializeAndDeserializeWithoutSquareMetres_ShouldBeApproximatelyIdempotent() { // arrange var area = Fixture.Create <Area>(); var converter = new AreaJsonConverter(AreaJsonSerializationFormat.AsValueWithUnit); // act string serializedArea1 = JsonConvert.SerializeObject(area, converter); var deserializedArea1 = JsonConvert.DeserializeObject <Area>(serializedArea1, converter); string serializedArea2 = JsonConvert.SerializeObject(deserializedArea1, converter); var deserializedArea2 = JsonConvert.DeserializeObject <Area>(serializedArea2, converter); // assert deserializedArea1.SquareMetres.Should().BeApproximately(area.SquareMetres); deserializedArea2.SquareMetres.Should().BeApproximately(area.SquareMetres); deserializedArea2.Should().Be(deserializedArea1); serializedArea2.Should().Be(serializedArea1); }
public void SerializeAndDeserializeWithSquareMetres_ShouldBeIdempotent(AreaJsonSerializationFormat format, LinearUnitJsonSerializationFormat unitFormat) { // arrange var area = Fixture.Create <Area>(); var converter = new AreaJsonConverter(format, unitFormat); // act string serializedArea1 = JsonConvert.SerializeObject(area, converter); var deserializedArea1 = JsonConvert.DeserializeObject <Area>(serializedArea1, converter); string serializedArea2 = JsonConvert.SerializeObject(deserializedArea1, converter); var deserializedArea2 = JsonConvert.DeserializeObject <Area>(serializedArea2, converter); // assert deserializedArea1.Should().Be(area); deserializedArea2.Should().Be(area); deserializedArea2.Should().Be(deserializedArea1); serializedArea2.Should().Be(serializedArea1); }