public WeightJsonConverter(
     WeightJsonSerializationFormat serializationFormat         = WeightJsonSerializationFormat.AsKilogramsWithUnit,
     LinearUnitJsonSerializationFormat unitSerializationFormat = LinearUnitJsonSerializationFormat.PredefinedAsString)
     : base(
         unitConverter: new WeightUnitJsonConverter(unitSerializationFormat),
         serializationFormat: (QuantityJsonSerializationFormat)serializationFormat)
 {
 }
 public WeightSerializeTestData(
     Weight value,
     WeightJsonSerializationFormat format,
     LinearUnitJsonSerializationFormat unitFormat,
     string expectedJsonPattern)
     : base(value, unitFormat, expectedJsonPattern)
 {
     Format = format;
 }
        public void SerializeAndDeserializeWithKilograms_ShouldBeIdempotent(WeightJsonSerializationFormat format, LinearUnitJsonSerializationFormat unitFormat)
        {
            // arrange
            var weight    = Fixture.Create <Weight>();
            var converter = new WeightJsonConverter(format, unitFormat);

            // act
            string serializedWeight1   = JsonConvert.SerializeObject(weight, converter);
            var    deserializedWeight1 = JsonConvert.DeserializeObject <Weight>(serializedWeight1, converter);
            string serializedWeight2   = JsonConvert.SerializeObject(deserializedWeight1, converter);
            var    deserializedWeight2 = JsonConvert.DeserializeObject <Weight>(serializedWeight2, converter);

            // assert
            deserializedWeight1.Should().Be(weight);
            deserializedWeight2.Should().Be(weight);

            deserializedWeight2.Should().Be(deserializedWeight1);
            serializedWeight2.Should().Be(serializedWeight1);
        }