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