private static void ValidateProperty(PropertyHelper propertyHelper) { var property = propertyHelper.Property; if (!(property.SetMethod != null && property.SetMethod.IsPublic && property.GetMethod != null && property.GetMethod.IsPublic)) { throw new InvalidOperationException( Resources.FormatTempDataProperties_PublicGetterSetter(property.DeclaringType.FullName, property.Name, nameof(TempDataAttribute))); } var propertyType = Nullable.GetUnderlyingType(property.PropertyType) ?? property.PropertyType; if (!TempDataSerializer.CanSerializeType(propertyType, out var errorMessage)) { var messageWithPropertyInfo = Resources.FormatTempDataProperties_InvalidType( property.DeclaringType.FullName, property.Name, nameof(TempDataAttribute)); throw new InvalidOperationException($"{messageWithPropertyInfo} {errorMessage}"); } }
public void EnsureObjectCanBeSerialized_DoesNotThrow_OnValidType(object value) { // Arrange var testProvider = new TempDataSerializer(); // Act & Assert (Does not throw) testProvider.EnsureObjectCanBeSerialized(value); }
public void DeserializeTempData_ReturnsEmptyDictionary_DataIsEmpty() { // Arrange var serializer = new TempDataSerializer(); // Act var tempDataDictionary = serializer.Deserialize(new byte[0]); // Assert Assert.NotNull(tempDataDictionary); Assert.Empty(tempDataDictionary); }
public void EnsureObjectCanBeSerialized_ThrowsException_OnInvalidDictionaryType(object value, Type type) { // Arrange var testProvider = new TempDataSerializer(); // Act & Assert var exception = Assert.Throws <InvalidOperationException>(() => { testProvider.EnsureObjectCanBeSerialized(value); }); Assert.Equal($"The '{typeof(TempDataSerializer).FullName}' cannot serialize a dictionary " + $"with a key of type '{type}'. The key must be of type 'System.String'.", exception.Message); }
public void EnsureObjectCanBeSerialized_ThrowsException_OnInvalidType(object value, Type type) { // Arrange var testProvider = new TempDataSerializer(); // Act & Assert var exception = Assert.Throws <InvalidOperationException>(() => { testProvider.EnsureObjectCanBeSerialized(value); }); Assert.Equal($"The '{typeof(TempDataSerializer).FullName}' cannot serialize " + $"an object of type '{type}'.", exception.Message); }
public void SerializeAndDeserialize_NullValue_RoundTripsSuccessfully() { // Arrange var key = "NullKey"; var testProvider = new TempDataSerializer(); var input = new Dictionary <string, object> { { key, null } }; // Act var bytes = testProvider.Serialize(input); var values = testProvider.Deserialize(bytes); // Assert Assert.True(values.ContainsKey(key)); Assert.Null(values[key]); }