public void DeserializeAsMetresWithFullySerializedUnit_ShouldReturnValidResult() { // arrange string json = @"{ 'metres': 123.456, 'unit': { 'name': 'kilometre', 'abbreviation': 'km', 'valueInMetres': '1000' } }"; var converter = new LengthJsonConverter(); var expectedResult = new Length(metres: (number)123.456m) .Convert(new LengthUnit( name: "kilometre", abbreviation: "km", valueInMetres: (number)1000)); // act var result = JsonConvert.DeserializeObject <Length>(json, converter); // assert result.Should().Be(expectedResult); }
public void Serialize_ShouldReturnValidJson(LengthSerializeTestData testData) { // arrange var converter = new LengthJsonConverter(testData.Format, testData.UnitFormat); // act string actualJson = JsonConvert.SerializeObject(testData.Quantity, converter); // assert actualJson.Should().MatchRegex(testData.ExpectedJsonPattern); }
public void DeserializeAsMetres_ShouldReturnValidResult() { // arrange string json = @"{ 'metres': 123.456 }"; var converter = new LengthJsonConverter(); var expectedResult = new Length(metres: (number)123.456m); // act var result = JsonConvert.DeserializeObject <Length>(json, converter); // assert result.Should().Be(expectedResult); }
public void DeserializeAsMetresWithPredefinedUnit_ShouldReturnValidResult() { // arrange string json = @"{ 'metres': 123.456, 'unit': 'km' }"; var converter = new LengthJsonConverter(); var expectedResult = new Length(metres: (number)123.456m) .Convert(LengthUnit.Kilometre); // act var result = JsonConvert.DeserializeObject <Length>(json, converter); // assert result.Should().Be(expectedResult); }
public void SerializeAndDeserializeWithoutMetres_ShouldBeApproximatelyIdempotent() { // arrange var length = Fixture.Create <Length>(); var converter = new LengthJsonConverter(LengthJsonSerializationFormat.AsValueWithUnit); // act string serializedLength1 = JsonConvert.SerializeObject(length, converter); var deserializedLength1 = JsonConvert.DeserializeObject <Length>(serializedLength1, converter); string serializedLength2 = JsonConvert.SerializeObject(deserializedLength1, converter); var deserializedLength2 = JsonConvert.DeserializeObject <Length>(serializedLength2, converter); // assert deserializedLength1.Metres.Should().BeApproximately(length.Metres); deserializedLength2.Metres.Should().BeApproximately(length.Metres); deserializedLength2.Should().Be(deserializedLength1); serializedLength2.Should().Be(serializedLength1); }
public void SerializeAndDeserializeWithMetres_ShouldBeIdempotent(LengthJsonSerializationFormat format, LinearUnitJsonSerializationFormat unitFormat) { // arrange var length = Fixture.Create <Length>(); var converter = new LengthJsonConverter(format, unitFormat); // act string serializedLength1 = JsonConvert.SerializeObject(length, converter); var deserializedLength1 = JsonConvert.DeserializeObject <Length>(serializedLength1, converter); string serializedLength2 = JsonConvert.SerializeObject(deserializedLength1, converter); var deserializedLength2 = JsonConvert.DeserializeObject <Length>(serializedLength2, converter); // assert deserializedLength1.Should().Be(length); deserializedLength2.Should().Be(length); deserializedLength2.Should().Be(deserializedLength1); serializedLength2.Should().Be(serializedLength1); }