public void DeserializeAsJoulesWithFullySerializedUnit_ShouldReturnValidResult() { // arrange string json = @"{ 'joules': 123.456, 'unit': { 'name': 'kilojoule', 'abbreviation': 'kJ', 'valueInJoules': '1000' } }"; var converter = new EnergyJsonConverter(); var expectedResult = new Energy(joules: (number)123.456m) .Convert(new EnergyUnit( name: "kilojoule", abbreviation: "kJ", valueInJoules: (number)1000)); // act var result = JsonConvert.DeserializeObject <Energy>(json, converter); // assert result.Should().Be(expectedResult); }
public void Serialize_ShouldReturnValidJson(EnergySerializeTestData testData) { // arrange var converter = new EnergyJsonConverter(testData.Format, testData.UnitFormat); // act string actualJson = JsonConvert.SerializeObject(testData.Quantity, converter); // assert actualJson.Should().MatchRegex(testData.ExpectedJsonPattern); }
public void DeserializeAsJoules_ShouldReturnValidResult() { // arrange string json = @"{ 'joules': 123.456 }"; var converter = new EnergyJsonConverter(); var expectedResult = new Energy(joules: (number)123.456m); // act var result = JsonConvert.DeserializeObject <Energy>(json, converter); // assert result.Should().Be(expectedResult); }
public void DeserializeAsJoulesWithPredefinedUnit_ShouldReturnValidResult() { // arrange string json = @"{ 'joules': 123.456, 'unit': 'kJ' }"; var converter = new EnergyJsonConverter(); var expectedResult = new Energy(joules: (number)123.456m) .Convert(EnergyUnit.Kilojoule); // act var result = JsonConvert.DeserializeObject <Energy>(json, converter); // assert result.Should().Be(expectedResult); }
public void SerializeAndDeserializeWithoutJoules_ShouldBeApproximatelyIdempotent() { // arrange var energy = Fixture.Create <Energy>(); var converter = new EnergyJsonConverter(EnergyJsonSerializationFormat.AsValueWithUnit); // act string serializedEnergy1 = JsonConvert.SerializeObject(energy, converter); var deserializedEnergy1 = JsonConvert.DeserializeObject <Energy>(serializedEnergy1, converter); string serializedEnergy2 = JsonConvert.SerializeObject(deserializedEnergy1, converter); var deserializedEnergy2 = JsonConvert.DeserializeObject <Energy>(serializedEnergy2, converter); // assert deserializedEnergy1.Joules.Should().BeApproximately(energy.Joules); deserializedEnergy2.Joules.Should().BeApproximately(energy.Joules); deserializedEnergy2.Should().Be(deserializedEnergy1); serializedEnergy2.Should().Be(serializedEnergy1); }
public void SerializeAndDeserializeWithJoules_ShouldBeIdempotent(EnergyJsonSerializationFormat format, LinearUnitJsonSerializationFormat unitFormat) { // arrange var energy = Fixture.Create <Energy>(); var converter = new EnergyJsonConverter(format, unitFormat); // act string serializedEnergy1 = JsonConvert.SerializeObject(energy, converter); var deserializedEnergy1 = JsonConvert.DeserializeObject <Energy>(serializedEnergy1, converter); string serializedEnergy2 = JsonConvert.SerializeObject(deserializedEnergy1, converter); var deserializedEnergy2 = JsonConvert.DeserializeObject <Energy>(serializedEnergy2, converter); // assert deserializedEnergy1.Should().Be(energy); deserializedEnergy2.Should().Be(energy); deserializedEnergy2.Should().Be(deserializedEnergy1); serializedEnergy2.Should().Be(serializedEnergy1); }