Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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);
        }