Exemple #1
0
        public void DeserializeCustomUnitAsPredefined_ShouldReturnValidResult()
        {
            // arrange
            var someUnit = new EnergyUnit(
                name: "some unit",
                abbreviation: "su",
                valueInJoules: (number)123.456m);
            string json      = @"{
  'unit': 'su'
}";
            var    converter = new EnergyUnitJsonConverter(
                serializationFormat: LinearUnitJsonSerializationFormat.PredefinedAsString,
                tryReadCustomPredefinedUnit: (string value, out EnergyUnit predefinedUnit) =>
            {
                if (value == someUnit.Abbreviation)
                {
                    predefinedUnit = someUnit;
                    return(true);
                }

                predefinedUnit = default(EnergyUnit);
                return(false);
            });

            // act
            var result = JsonConvert.DeserializeObject <SomeUnitOwner <EnergyUnit> >(json, converter);

            // assert
            result.Unit.Should().Be(someUnit);
        }
Exemple #2
0
        public void SerializePredefinedUnit_ShouldReturnValidJson(LinearUnitJsonSerializationFormat serializationFormat, string expectedJsonPattern)
        {
            // arrange
            var unit      = EnergyUnit.Kilojoule;
            var converter = new EnergyUnitJsonConverter(serializationFormat);

            // act
            string actualJson = JsonConvert.SerializeObject(new SomeUnitOwner <EnergyUnit> {
                Unit = unit
            }, converter);

            // assert
            actualJson.Should().MatchRegex(expectedJsonPattern);
        }
Exemple #3
0
        public void DeserializePredefinedUnitString_ShouldReturnValidResult(EnergyUnit expectedUnit)
        {
            // arrange
            string json      = $@"{{
  'unit': '{expectedUnit.Abbreviation}'
}}";
            var    converter = new EnergyUnitJsonConverter();

            // act
            var result = JsonConvert.DeserializeObject <SomeUnitOwner <EnergyUnit> >(json, converter);

            // assert
            result.Unit.Should().Be(expectedUnit);
        }
Exemple #4
0
        public void DeserializeCustomUnit_ShouldReturnValidResult()
        {
            // arrange
            string json      = @"{
  'name': 'some unit',
  'abbreviation': 'su',
  'valueInJoules': 123.456
}";
            var    converter = new EnergyUnitJsonConverter();

            // act
            var result = JsonConvert.DeserializeObject <EnergyUnit>(json, converter);

            // assert
            result.Name.Should().Be("some unit");
            result.Abbreviation.Should().Be("su");
            result.ValueInJoules.Should().Be((number)123.456m);
        }
Exemple #5
0
        public void SerializeAndDeserialize_ShouldBeIdempotent(LinearUnitJsonSerializationFormat serializationFormat)
        {
            // arrange
            var obj = new SomeUnitOwner <EnergyUnit> {
                Unit = Fixture.Create <EnergyUnit>()
            };
            var converter = new EnergyUnitJsonConverter(serializationFormat);

            // act
            string serializedObj1   = JsonConvert.SerializeObject(obj, converter);
            var    deserializedObj1 = JsonConvert.DeserializeObject <SomeUnitOwner <EnergyUnit> >(serializedObj1, converter);
            string serializedObj2   = JsonConvert.SerializeObject(deserializedObj1, converter);
            var    deserializedObj2 = JsonConvert.DeserializeObject <SomeUnitOwner <EnergyUnit> >(serializedObj2, converter);

            // assert
            deserializedObj1.Unit.Should().Be(obj.Unit);
            deserializedObj2.Unit.Should().Be(obj.Unit);

            deserializedObj2.Unit.Should().Be(deserializedObj1.Unit);
            serializedObj2.Should().Be(serializedObj1);
        }