public void DeserializeCustomUnitAsPredefined_ShouldReturnValidResult() { // arrange var someUnit = new VolumeUnit( name: "some unit", abbreviation: "su", valueInCubicMetres: (number)123.456m); string json = @"{ 'unit': 'su' }"; var converter = new VolumeUnitJsonConverter( serializationFormat: LinearUnitJsonSerializationFormat.PredefinedAsString, tryReadCustomPredefinedUnit: (string value, out VolumeUnit predefinedUnit) => { if (value == someUnit.Abbreviation) { predefinedUnit = someUnit; return(true); } predefinedUnit = default(VolumeUnit); return(false); }); // act var result = JsonConvert.DeserializeObject <SomeUnitOwner <VolumeUnit> >(json, converter); // assert result.Unit.Should().Be(someUnit); }
public void SerializePredefinedUnit_ShouldReturnValidJson(LinearUnitJsonSerializationFormat serializationFormat, string expectedJsonPattern) { // arrange var unit = VolumeUnit.CubicCentimetre; var converter = new VolumeUnitJsonConverter(serializationFormat); // act string actualJson = JsonConvert.SerializeObject(new SomeUnitOwner <VolumeUnit> { Unit = unit }, converter); // assert actualJson.Should().MatchRegex(expectedJsonPattern); }
public void DeserializePredefinedUnitString_ShouldReturnValidResult(VolumeUnit expectedUnit) { // arrange string json = $@"{{ 'unit': '{expectedUnit.Abbreviation}' }}"; var converter = new VolumeUnitJsonConverter(); // act var result = JsonConvert.DeserializeObject <SomeUnitOwner <VolumeUnit> >(json, converter); // assert result.Unit.Should().Be(expectedUnit); }
public void DeserializeCustomUnit_ShouldReturnValidResult() { // arrange string json = @"{ 'name': 'some unit', 'abbreviation': 'su', 'valueInCubicMetres': 123.456 }"; var converter = new VolumeUnitJsonConverter(); // act var result = JsonConvert.DeserializeObject <VolumeUnit>(json, converter); // assert result.Name.Should().Be("some unit"); result.Abbreviation.Should().Be("su"); result.ValueInCubicMetres.Should().Be((number)123.456m); }
public void SerializeAndDeserialize_ShouldBeIdempotent(LinearUnitJsonSerializationFormat serializationFormat) { // arrange var obj = new SomeUnitOwner <VolumeUnit> { Unit = Fixture.Create <VolumeUnit>() }; var converter = new VolumeUnitJsonConverter(serializationFormat); // act string serializedObj1 = JsonConvert.SerializeObject(obj, converter); var deserializedObj1 = JsonConvert.DeserializeObject <SomeUnitOwner <VolumeUnit> >(serializedObj1, converter); string serializedObj2 = JsonConvert.SerializeObject(deserializedObj1, converter); var deserializedObj2 = JsonConvert.DeserializeObject <SomeUnitOwner <VolumeUnit> >(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); }