Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
        }
Пример #5
0
        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);
        }
Пример #6
0
        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);
        }