Exemple #1
0
        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]);
        }