public void DeserializeAsTurnsWithFullySerializedUnit_ShouldReturnValidResult() { // arrange string json = @"{ 'turns': 123.456, 'unit': { 'name': 'degree', 'abbreviation': 'deg', 'symbol': '°', 'unitsPerTurn': '360' } }"; var converter = new AngleJsonConverter(); var expectedResult = new Angle(turns: (number)123.456m) .Convert(new AngleUnit( name: "degree", abbreviation: "deg", symbol: "°", unitsPerTurn: (number)360)); // act var result = JsonConvert.DeserializeObject <Angle>(json, converter); // assert result.Should().Be(expectedResult); }
private static JsonSerializerSettings CreateSettings(AngleJsonConverter converter, string culture) { return(new JsonSerializerSettings { Converters = new JsonConverter[] { converter }, Culture = CultureInfo.GetCultureInfo(culture), }); }
public void Serialize_ShouldReturnValidJson(AngleSerializeTestData testData) { // arrange var converter = new AngleJsonConverter(testData.Format, testData.UnitFormat); // act string actualJson = JsonConvert.SerializeObject(testData.Quantity, converter); // assert actualJson.Should().MatchRegex(testData.ExpectedJsonPattern); }
public void DeserializeAsTurns_ShouldReturnValidResult() { // arrange string json = @"{ 'turns': 0.5 }"; var converter = new AngleJsonConverter(); // act var result = JsonConvert.DeserializeObject <Angle>(json, converter); // assert result.Turns.Should().Be(0.5d); result.Value.Should().Be(0.5d); result.Unit.Should().Be(AngleUnit.Turn); }
public void DeserializeAsTurnsWithPredefinedUnit_ShouldReturnValidResult() { // arrange string json = @"{ 'turns': 123.456, 'unit': 'deg' }"; var converter = new AngleJsonConverter(); var expectedResult = new Angle(turns: (number)123.456m) .Convert(AngleUnit.Degree); // act var result = JsonConvert.DeserializeObject <Angle>(json, converter); // assert result.Should().Be(expectedResult); }
public void SerializeAndDeserializeWithoutTurns_ShouldBeApproximatelyIdempotent() { // arrange var angle = Fixture.Create <Angle>(); var converter = new AngleJsonConverter(AngleJsonSerializationFormat.AsValueWithUnit); // act string serializedAngle1 = JsonConvert.SerializeObject(angle, converter); var deserializedAngle1 = JsonConvert.DeserializeObject <Angle>(serializedAngle1, converter); string serializedAngle2 = JsonConvert.SerializeObject(deserializedAngle1, converter); var deserializedAngle2 = JsonConvert.DeserializeObject <Angle>(serializedAngle2, converter); // assert deserializedAngle1.Turns.Should().BeApproximately(angle.Turns); deserializedAngle2.Turns.Should().BeApproximately(angle.Turns); deserializedAngle2.Should().Be(deserializedAngle1); serializedAngle2.Should().Be(serializedAngle1); }
public void SerializeAndDeserializeWithTurns_ShouldBeIdempotent(AngleJsonSerializationFormat format, LinearUnitJsonSerializationFormat unitFormat) { // arrange var angle = Fixture.Create <Angle>(); var converter = new AngleJsonConverter(format, unitFormat); // act string serializedAngle1 = JsonConvert.SerializeObject(angle, converter); var deserializedAngle1 = JsonConvert.DeserializeObject <Angle>(serializedAngle1, converter); string serializedAngle2 = JsonConvert.SerializeObject(deserializedAngle1, converter); var deserializedAngle2 = JsonConvert.DeserializeObject <Angle>(serializedAngle2, converter); // assert deserializedAngle1.Should().Be(angle); deserializedAngle2.Should().Be(angle); deserializedAngle2.Should().Be(deserializedAngle1); serializedAngle2.Should().Be(serializedAngle1); }
public void DeserializeAsValueWithUnit_ShouldReturnValidResult() { // arrange string json = @"{ 'value': 180, 'unit': { 'name': 'degree', 'abbreviation': 'deg', 'symbol': '°', 'unitsPerTurn': 360 } }"; var converter = new AngleJsonConverter(); // act var result = JsonConvert.DeserializeObject <Angle>(json, converter); // assert result.Turns.Should().Be(0.5d); result.Value.Should().Be(180d); result.Unit.Should().Be(AngleUnit.Degree); }