public void DeserializeAsCubicMetresWithFullySerializedUnit_ShouldReturnValidResult() { // arrange string json = @"{ 'cubicMetres': 123.456, 'unit': { 'name': 'cubic centimetre', 'abbreviation': 'cm³', 'valueInCubicMetres': '0.000001' } }"; var converter = new VolumeJsonConverter(); var expectedResult = new Volume(cubicMetres: (number)123.456m) .Convert(new VolumeUnit( name: "cubic millimetre", abbreviation: "cm³", valueInCubicMetres: (number)0.000001)); // act var result = JsonConvert.DeserializeObject <Volume>(json, converter); // assert result.Should().Be(expectedResult); }
public void Serialize_ShouldReturnValidJson(VolumeSerializeTestData testData) { // arrange var converter = new VolumeJsonConverter(testData.Format, testData.UnitFormat); // act string actualJson = JsonConvert.SerializeObject(testData.Quantity, converter); // assert actualJson.Should().MatchRegex(testData.ExpectedJsonPattern); }
public void DeserializeAsCubicMetres_ShouldReturnValidResult() { // arrange string json = @"{ 'cubicMetres': 123.456 }"; var converter = new VolumeJsonConverter(); var expectedResult = new Volume(cubicMetres: (number)123.456m); // act var result = JsonConvert.DeserializeObject <Volume>(json, converter); // assert result.Should().Be(expectedResult); }
public void DeserializeAsCubicMetresWithPredefinedUnit_ShouldReturnValidResult() { // arrange string json = @"{ 'cubicMetres': 123.456, 'unit': 'cm³' }"; var converter = new VolumeJsonConverter(); var expectedResult = new Volume(cubicMetres: (number)123.456m) .Convert(VolumeUnit.CubicMillimetre); // act var result = JsonConvert.DeserializeObject <Volume>(json, converter); // assert result.Should().Be(expectedResult); }
public void SerializeAndDeserializeWithoutCubicMetres_ShouldBeApproximatelyIdempotent() { // arrange var volume = Fixture.Create <Volume>(); var converter = new VolumeJsonConverter(VolumeJsonSerializationFormat.AsValueWithUnit); // act string serializedVolume1 = JsonConvert.SerializeObject(volume, converter); var deserializedVolume1 = JsonConvert.DeserializeObject <Volume>(serializedVolume1, converter); string serializedVolume2 = JsonConvert.SerializeObject(deserializedVolume1, converter); var deserializedVolume2 = JsonConvert.DeserializeObject <Volume>(serializedVolume2, converter); // assert deserializedVolume1.CubicMetres.Should().BeApproximately(volume.CubicMetres); deserializedVolume2.CubicMetres.Should().BeApproximately(volume.CubicMetres); deserializedVolume2.Should().Be(deserializedVolume1); serializedVolume2.Should().Be(serializedVolume1); }
public void SerializeAndDeserializeWithCubicMetres_ShouldBeIdempotent(VolumeJsonSerializationFormat format, LinearUnitJsonSerializationFormat unitFormat) { // arrange var volume = Fixture.Create <Volume>(); var converter = new VolumeJsonConverter(format, unitFormat); // act string serializedVolume1 = JsonConvert.SerializeObject(volume, converter); var deserializedVolume1 = JsonConvert.DeserializeObject <Volume>(serializedVolume1, converter); string serializedVolume2 = JsonConvert.SerializeObject(deserializedVolume1, converter); var deserializedVolume2 = JsonConvert.DeserializeObject <Volume>(serializedVolume2, converter); // assert deserializedVolume1.Should().Be(volume); deserializedVolume2.Should().Be(volume); deserializedVolume2.Should().Be(deserializedVolume1); serializedVolume2.Should().Be(serializedVolume1); }