public static void RoundtripSerialize___Should_roundtrip_TestModelWithOptionalConstructorParameters_and_include_all_properties_in_payload___When_model_constructed_with_all_default_T_values_of_nullable_underlying_type() { // Arrange string stringValue1 = null; string stringValue2 = null; string stringValue3 = null; var intValue1 = 0; var intValue2 = 0; var nullableIntValue1 = 0; var nullableIntValue2 = 0; var nullableIntValue3 = 0; var enumValue1 = TestEnum.First; var enumValue2 = TestEnum.First; TestEnum?nullableEnumValue1 = TestEnum.First; TestEnum?nullableEnumValue2 = TestEnum.First; TestEnum?nullableEnumValue3 = TestEnum.First; Dictionary <string, string> dictionaryValue = null; var expected = new TestModelWithOptionalConstructorParameters(stringValue1, stringValue2, stringValue3, intValue1, intValue2, nullableIntValue1, nullableIntValue2, nullableIntValue3, enumValue1, enumValue2, nullableEnumValue1, nullableEnumValue2, nullableEnumValue3, dictionaryValue); void VerificationCallback(DescribedSerializationBase describedSerialization, TestModelWithOptionalConstructorParameters deserialized) { deserialized.AsTest().Must().BeEqualTo(expected); if (describedSerialization is StringDescribedSerialization stringDescribedSerialization) { stringDescribedSerialization.SerializedPayload.AsTest().Must().BeEqualTo("{\r\n \"stringValue1\": null,\r\n \"stringValue2\": null,\r\n \"stringValue3\": null,\r\n \"intValue1\": 0,\r\n \"intValue2\": 0,\r\n \"nullableIntValue1\": 0,\r\n \"nullableIntValue2\": 0,\r\n \"nullableIntValue3\": 0,\r\n \"enumValue1\": \"first\",\r\n \"enumValue2\": \"first\",\r\n \"nullableEnumValue1\": \"first\",\r\n \"nullableEnumValue2\": \"first\",\r\n \"nullableEnumValue3\": \"first\",\r\n \"dictionaryValue\": null\r\n}"); } } // Act, Assert expected.RoundtripSerializeViaJsonWithCallbackVerification(VerificationCallback, typeof(TypesToRegisterJsonSerializationConfiguration <TestModelWithOptionalConstructorParameters>)); }
public static void RoundtripSerialize___Should_roundtrip_TestModelWithOptionalConstructorParameters_and_include_all_properties_in_payload___When_model_constructed_with_all_non_default_values() { // Arrange var stringValue1 = "my-string-value-1"; var stringValue2 = "my-string-value-2"; var stringValue3 = "my-string-value-3"; var intValue1 = -39; var intValue2 = 4; var nullableIntValue1 = 22; var nullableIntValue2 = 28; var nullableIntValue3 = 32; var enumValue1 = TestEnum.Second; var enumValue2 = TestEnum.Third; var nullableEnumValue1 = TestEnum.Second; var nullableEnumValue2 = TestEnum.Third; var nullableEnumValue3 = TestEnum.Fourth; var dictionaryValue = new Dictionary <string, string> { { "abc", "def" }, { "ghi", "jkl" }, }; var expected = new TestModelWithOptionalConstructorParameters(stringValue1, stringValue2, stringValue3, intValue1, intValue2, nullableIntValue1, nullableIntValue2, nullableIntValue3, enumValue1, enumValue2, nullableEnumValue1, nullableEnumValue2, nullableEnumValue3, dictionaryValue); void VerificationCallback(DescribedSerializationBase describedSerialization, TestModelWithOptionalConstructorParameters deserialized) { deserialized.AsTest().Must().BeEqualTo(expected); if (describedSerialization is StringDescribedSerialization stringDescribedSerialization) { stringDescribedSerialization.SerializedPayload.AsTest().Must().BeEqualTo("{\r\n \"stringValue1\": \"my-string-value-1\",\r\n \"stringValue2\": \"my-string-value-2\",\r\n \"stringValue3\": \"my-string-value-3\",\r\n \"intValue1\": -39,\r\n \"intValue2\": 4,\r\n \"nullableIntValue1\": 22,\r\n \"nullableIntValue2\": 28,\r\n \"nullableIntValue3\": 32,\r\n \"enumValue1\": \"second\",\r\n \"enumValue2\": \"third\",\r\n \"nullableEnumValue1\": \"second\",\r\n \"nullableEnumValue2\": \"third\",\r\n \"nullableEnumValue3\": \"fourth\",\r\n \"dictionaryValue\": {\r\n \"abc\": \"def\",\r\n \"ghi\": \"jkl\"\r\n }\r\n}"); } } // Act, Assert expected.RoundtripSerializeViaJsonWithCallbackVerification(VerificationCallback, typeof(TypesToRegisterJsonSerializationConfiguration <TestModelWithOptionalConstructorParameters>)); }