public void DeserializeAsMetresPerSecondWithFullySerializedUnit_ShouldReturnValidResult() { // arrange string json = @"{ 'metresPerSecond': 123.456, 'unit': { 'name': 'kilometre per hour', 'abbreviation': 'km/h', 'valueInMetresPerSecond': '0.27777777777777779' } }"; var converter = new SpeedJsonConverter(); var expectedResult = new Speed(metresPerSecond: (number)123.456m) .Convert(new SpeedUnit( name: "kilometre per hour", abbreviation: "km/h", valueInMetresPerSecond: (number)0.27777777777777779m)); // act var result = JsonConvert.DeserializeObject <Speed>(json, converter); // assert result.Should().Be(expectedResult); }
public void Serialize_ShouldReturnValidJson(SpeedSerializeTestData testData) { // arrange var converter = new SpeedJsonConverter(testData.Format, testData.UnitFormat); // act string actualJson = JsonConvert.SerializeObject(testData.Quantity, converter); // assert actualJson.Should().MatchRegex(testData.ExpectedJsonPattern); }
public void DeserializeAsMetresPerSecond_ShouldReturnValidResult() { // arrange string json = @"{ 'metresPerSecond': 123.456 }"; var converter = new SpeedJsonConverter(); var expectedResult = new Speed(metresPerSecond: (number)123.456m); // act var result = JsonConvert.DeserializeObject <Speed>(json, converter); // assert result.Should().Be(expectedResult); }
public void DeserializeAsMetresPerSecondWithPredefinedUnit_ShouldReturnValidResult() { // arrange string json = @"{ 'metresPerSecond': 123.456, 'unit': 'km/h' }"; var converter = new SpeedJsonConverter(); var expectedResult = new Speed(metresPerSecond: (number)123.456m) .Convert(SpeedUnit.KilometrePerHour); // act var result = JsonConvert.DeserializeObject <Speed>(json, converter); // assert result.Should().Be(expectedResult); }
public void SerializeAndDeserializeWithoutMetresPerSecond_ShouldBeApproximatelyIdempotent() { // arrange var speed = Fixture.Create <Speed>(); var converter = new SpeedJsonConverter(SpeedJsonSerializationFormat.AsValueWithUnit); // act string serializedSpeed1 = JsonConvert.SerializeObject(speed, converter); var deserializedSpeed1 = JsonConvert.DeserializeObject <Speed>(serializedSpeed1, converter); string serializedSpeed2 = JsonConvert.SerializeObject(deserializedSpeed1, converter); var deserializedSpeed2 = JsonConvert.DeserializeObject <Speed>(serializedSpeed2, converter); // assert deserializedSpeed1.MetresPerSecond.Should().BeApproximately(speed.MetresPerSecond); deserializedSpeed2.MetresPerSecond.Should().BeApproximately(speed.MetresPerSecond); deserializedSpeed2.Should().Be(deserializedSpeed1); serializedSpeed2.Should().Be(serializedSpeed1); }
public void SerializeAndDeserializeWithMetresPerSecond_ShouldBeIdempotent(SpeedJsonSerializationFormat format, LinearUnitJsonSerializationFormat unitFormat) { // arrange var speed = Fixture.Create <Speed>(); var converter = new SpeedJsonConverter(format, unitFormat); // act string serializedSpeed1 = JsonConvert.SerializeObject(speed, converter); var deserializedSpeed1 = JsonConvert.DeserializeObject <Speed>(serializedSpeed1, converter); string serializedSpeed2 = JsonConvert.SerializeObject(deserializedSpeed1, converter); var deserializedSpeed2 = JsonConvert.DeserializeObject <Speed>(serializedSpeed2, converter); // assert deserializedSpeed1.Should().Be(speed); deserializedSpeed2.Should().Be(speed); deserializedSpeed2.Should().Be(deserializedSpeed1); serializedSpeed2.Should().Be(serializedSpeed1); }