コード例 #1
0
        public void ThrowExceptionOnPropertyTypeHandlerMapperViaFieldThatIsNull()
        {
            // Setup
            var stringPropertyHandler = new StringPropertyHandler();

            PropertyHandlerMapper.Add <PropertyHandlerMapperTestClass, StringPropertyHandler>((Field)null, stringPropertyHandler);
        }
コード例 #2
0
        /// <summary>
        /// Resolves the equivalent <see cref="IPropertyHandler{TInput, TResult}"/> object of the property.
        /// </summary>
        /// <param name="entityType">The type of the data entity.</param>
        /// <param name="propertyInfo">The instance of <see cref="PropertyInfo"/> to be resolved.</param>
        /// <returns>The equivalent <see cref="IPropertyHandler{TInput, TResult}"/> object of the property.</returns>
        public object Resolve(Type entityType,
                              PropertyInfo propertyInfo)
        {
            var propertyHandler = (object)null;

            // Attribute
            var attribute = propertyInfo.GetCustomAttribute <PropertyHandlerAttribute>();

            if (attribute != null)
            {
                propertyHandler = Converter.ToType <object>(Activator.CreateInstance(attribute.HandlerType));
            }

            // Property Level
            if (propertyHandler == null)
            {
                propertyHandler = PropertyHandlerMapper.Get <object>(entityType, propertyInfo);
            }

            // Type Level
            if (propertyHandler == null)
            {
                propertyHandler = PropertyHandlerMapper.Get <object>(propertyInfo.PropertyType);
            }

            // Return the value
            return(propertyHandler);
        }
コード例 #3
0
        public void ThrowExceptionOnPropertyTypeHandlerMapperViaExpressionThatIsNull()
        {
            // Setup
            var stringPropertyHandler = new StringPropertyHandler();

            PropertyHandlerMapper.Add <PropertyHandlerMapperTestClass, StringPropertyHandler>(expression: null, propertyHandler: stringPropertyHandler);
        }
コード例 #4
0
 public void Cleanup()
 {
     PropertyHandlerMapper.Remove(typeof(float));
     PropertyHandlerMapper.Remove(typeof(decimal));
     PropertyHandlerMapper.Remove(typeof(DateTime));
     Database.Cleanup();
 }
コード例 #5
0
        public void ThrowExceptionOnPropertyTypeHandlerMapperViaFieldThatIsIsMissing()
        {
            // Setup
            var stringPropertyHandler = new StringPropertyHandler();

            PropertyHandlerMapper.Add <PropertyHandlerMapperTestClass, StringPropertyHandler>(new Field("Whatever"), stringPropertyHandler);
        }
コード例 #6
0
        public void TestPropertyHandlerMapperTypeMappingWithoutMapping()
        {
            // Act
            var actual = PropertyHandlerMapper.Get <DateTime, object>();

            // Assert
            Assert.IsNull(actual);
        }
コード例 #7
0
        public void ThrowExceptionOnPropertyTypeHandlerMapperViaExpressionThatIsAlreadyExisting()
        {
            // Setup
            var stringPropertyHandler = new StringPropertyHandler();
            var textPropertyHandler   = new TextPropertyHandler();

            PropertyHandlerMapper.Add <PropertyHandlerMapperTestClass, StringPropertyHandler>(e => e.ColumnString, stringPropertyHandler);
            PropertyHandlerMapper.Add <PropertyHandlerMapperTestClass, TextPropertyHandler>(e => e.ColumnString, textPropertyHandler);
        }
コード例 #8
0
        public void ThrowExceptionOnPropertyTypeHandlerMapperViaPropertyNameThatIsAlreadyExisting()
        {
            // Setup
            var stringPropertyHandler = new StringPropertyHandler();
            var textPropertyHandler   = new TextPropertyHandler();
            var propertyName          = "ColumnString";

            PropertyHandlerMapper.Add <PropertyHandlerMapperTestClass, StringPropertyHandler>(propertyName, stringPropertyHandler);
            PropertyHandlerMapper.Add <PropertyHandlerMapperTestClass, TextPropertyHandler>(propertyName, textPropertyHandler);
        }
コード例 #9
0
        public void ThrowExceptionOnPropertyTypeHandlerMapperViaFieldThatIsAlreadyExisting()
        {
            // Setup
            var stringPropertyHandler = new StringPropertyHandler();
            var textPropertyHandler   = new TextPropertyHandler();
            var field = new Field("ColumnString");

            PropertyHandlerMapper.Add <PropertyHandlerMapperTestClass, StringPropertyHandler>(field, stringPropertyHandler);
            PropertyHandlerMapper.Add <PropertyHandlerMapperTestClass, TextPropertyHandler>(field, textPropertyHandler);
        }
コード例 #10
0
        public void TestPropertyHandlerMapperPropertyMappingViaExpression()
        {
            // Setup
            var stringPropertyHandler = new StringPropertyHandler();

            PropertyHandlerMapper.Add <PropertyHandlerMapperTestClass, StringPropertyHandler>(e => e.ColumnString, stringPropertyHandler);

            // Act
            var actual   = PropertyHandlerMapper.Get <PropertyHandlerMapperTestClass, StringPropertyHandler>(e => e.ColumnString);
            var expected = stringPropertyHandler;

            // Assert
            Assert.AreEqual(expected, actual);
        }
コード例 #11
0
        public void TestPropertyHandlerCacheWithMapping()
        {
            // Setup
            var stringPropertyHandler = new StringPropertyHandler();

            PropertyHandlerMapper.Add <PropertyTypeHandlerCacheTestClass, StringPropertyHandler>(stringPropertyHandler);

            // Act
            var result   = PropertyHandlerCache.Get <PropertyTypeHandlerCacheTestClass, StringPropertyHandler>();
            var expected = stringPropertyHandler;

            // Assert
            Assert.AreEqual(expected, result);
        }
コード例 #12
0
        public void TestPropertyHandlerMapperTypeMapping()
        {
            // Setup
            var stringPropertyHandler = new StringPropertyHandler();

            PropertyHandlerMapper.Add <string, StringPropertyHandler>(stringPropertyHandler);

            // Act
            var actual   = PropertyHandlerMapper.Get <string, StringPropertyHandler>();
            var expected = stringPropertyHandler;

            // Assert
            Assert.AreEqual(expected, actual);
        }
コード例 #13
0
        public void TestPropertyHandlerMapperPropertyMappingViaField()
        {
            // Setup
            var stringPropertyHandler = new StringPropertyHandler();
            var field = new Field("ColumnString");

            PropertyHandlerMapper.Add <PropertyHandlerMapperTestClass, StringPropertyHandler>(field, stringPropertyHandler);

            // Act
            var actual   = PropertyHandlerMapper.Get <PropertyHandlerMapperTestClass, StringPropertyHandler>(field);
            var expected = stringPropertyHandler;

            // Assert
            Assert.AreEqual(expected, actual);
        }
コード例 #14
0
        public void TestPropertyHandlerMapperPropertyMappingViaPropertyName()
        {
            // Setup
            var stringPropertyHandler = new StringPropertyHandler();
            var propertyName          = "ColumnString";

            PropertyHandlerMapper.Add <PropertyHandlerMapperTestClass, StringPropertyHandler>(propertyName, stringPropertyHandler);

            // Act
            var actual   = PropertyHandlerMapper.Get <PropertyHandlerMapperTestClass, StringPropertyHandler>(propertyName);
            var expected = stringPropertyHandler;

            // Assert
            Assert.AreEqual(expected, actual);
        }
コード例 #15
0
        public void TestPropertyHandlerMapperPropertyMappingViaExpressionOverride()
        {
            // Setup
            var stringPropertyHandler = new StringPropertyHandler();
            var textPropertyHandler   = new TextPropertyHandler();

            PropertyHandlerMapper.Add <PropertyHandlerMapperTestClass, StringPropertyHandler>(e => e.ColumnString, stringPropertyHandler);
            PropertyHandlerMapper.Add <PropertyHandlerMapperTestClass, TextPropertyHandler>(e => e.ColumnString, textPropertyHandler, true);

            // Act
            var actual   = PropertyHandlerMapper.Get <PropertyHandlerMapperTestClass, object>(e => e.ColumnString);
            var expected = (actual is TextPropertyHandler);

            // Assert
            Assert.IsTrue(expected);
        }
コード例 #16
0
        public void TestPropertyHandlerMapperPropertyMappingViaFieldOverride()
        {
            // Setup
            var stringPropertyHandler = new StringPropertyHandler();
            var textPropertyHandler   = new TextPropertyHandler();
            var field = new Field("ColumnString");

            PropertyHandlerMapper.Add <PropertyHandlerMapperTestClass, StringPropertyHandler>(field, stringPropertyHandler);
            PropertyHandlerMapper.Add <PropertyHandlerMapperTestClass, TextPropertyHandler>(field, textPropertyHandler, true);

            // Act
            var actual   = PropertyHandlerMapper.Get <PropertyHandlerMapperTestClass, object>(field);
            var expected = (actual is TextPropertyHandler);

            // Assert
            Assert.IsTrue(expected);
        }
コード例 #17
0
        public void TestPropertyHandlerMapperPropertyMappingViaExpressionWithPropertyHandlerAttribute()
        {
            // Setup
            var stringPropertyHandler = new StringPropertyHandler();

            PropertyHandlerMapper.Add <PropertyHandlerMapperTestClass, StringPropertyHandler>(e => e.PropertyString, stringPropertyHandler);

            // Act
            var actual = PropertyHandlerMapper.Get <PropertyHandlerMapperTestClass, StringPropertyHandler>(e => e.PropertyString);

            // Assert
            Assert.IsNotNull(actual);

            // Act
            var textHandler = PropertyHandlerCache.Get <PropertyHandlerMapperTestClass, TextPropertyHandler>(e => e.PropertyString);

            // Assert
            Assert.IsNotNull(textHandler);
        }
コード例 #18
0
        public void TestPropertyHandlerMapperPropertyMappingViaFieldWithPropertyHandlerAttribute()
        {
            // Setup
            var stringPropertyHandler = new StringPropertyHandler();
            var field = new Field("PropertyString");

            PropertyHandlerMapper.Add <PropertyHandlerMapperTestClass, StringPropertyHandler>(field, stringPropertyHandler);

            // Act
            var actual = PropertyHandlerMapper.Get <PropertyHandlerMapperTestClass, StringPropertyHandler>(field);

            // Assert
            Assert.IsNotNull(actual);

            // Act
            var textHandler = PropertyHandlerCache.Get <PropertyHandlerMapperTestClass, TextPropertyHandler>(field);

            // Assert
            Assert.IsNotNull(textHandler);
        }
コード例 #19
0
        public void TestPropertyHandlerMapperPropertyMappingViaPropertyNameWithPropertyHandlerAttribute()
        {
            // Setup
            var stringPropertyHandler = new StringPropertyHandler();
            var propertyName          = "PropertyString";

            PropertyHandlerMapper.Add <PropertyHandlerMapperTestClass, StringPropertyHandler>(propertyName, stringPropertyHandler);

            // Act
            var actual = PropertyHandlerMapper.Get <PropertyHandlerMapperTestClass, StringPropertyHandler>(propertyName);

            // Assert
            Assert.IsNotNull(actual);

            // Act
            var textHandler = PropertyHandlerCache.Get <PropertyHandlerMapperTestClass, TextPropertyHandler>(propertyName);

            // Assert
            Assert.IsNotNull(textHandler);
        }
コード例 #20
0
        public void TestPropertyHandlerImplicitForDateTimeKindAsNullAtomic()
        {
            // Setup
            PropertyHandlerMapper.Add(typeof(DateTime), new DateTimeToUtcKindHandler(), true);

            // Setup
            var models = CreateEntityModelForDateTimeKinds(10, true).AsList();

            using (var connection = new SqlConnection(Database.ConnectionStringForRepoDb))
            {
                // Act
                models.ForEach(e => connection.Insert(e));

                // Act
                var result = connection.QueryAll <EntityModelForDateTimeKind>();

                // Assert
                models.ForEach(e =>
                {
                    var item = result.First(obj => obj.Id == e.Id);
                    Helper.AssertPropertiesEquality(e, item);
                });
            }
        }
コード例 #21
0
ファイル: PropertyHandlerTest.cs プロジェクト: thusnor/RepoDB
        public void TestPropertyHandlerForDateTimeKindForAnonymousTypes()
        {
            // Setup
            PropertyHandlerMapper.Add(typeof(DateTime), new DateTimeToUtcKindHandler(), true);

            // Setup
            var models = CreateEntityModelForDateTimeKindForAnonymousTypes(10).AsList();

            using (var connection = new SqlConnection(Database.ConnectionStringForRepoDb))
            {
                // Act
                connection.InsertAll("[dbo].[PropertyHandler]", models);

                // Act
                var result = connection.QueryAll <EntityModelForDateTimeKind>();

                // Assert
                models.ForEach(e =>
                {
                    var item = result.First(obj => obj.Id == e.Id);
                    Helper.AssertPropertiesEquality(e, item);
                });
            }
        }
コード例 #22
0
        public void TestPropertyHandlerImplicitWithNumbersToLongHandlerAtomic()
        {
            // Setup
            PropertyHandlerMapper.Add(typeof(decimal), new DecimalToLongTypeHandler(), true);

            // Setup
            var models = CreateEntityModelForNumberPropertiesToLongTypes(10).AsList();

            using (var connection = new SqlConnection(Database.ConnectionStringForRepoDb))
            {
                // Act
                models.ForEach(e => connection.Insert(e));

                // Act
                var result = connection.QueryAll <EntityModelForNumberPropertiesToLongType>();

                // Assert
                models.ForEach(e =>
                {
                    var item = result.First(obj => obj.Id == e.Id);
                    Helper.AssertPropertiesEquality(e, item);
                });
            }
        }
コード例 #23
0
 /// <summary>
 /// Resolves the equivalent <see cref="IPropertyHandler{TInput, TResult}"/> object of the .NET CLR type.
 /// </summary>
 /// <param name="type">The .NET CLR type</param>
 /// <returns>The equivalent <see cref="IPropertyHandler{TInput, TResult}"/> object of the .NET CLR type.</returns>
 public object Resolve(Type type) =>
 PropertyHandlerMapper.Get <object>(type);
コード例 #24
0
 public void Cleanup()
 {
     PropertyHandlerMapper.Clear();
     PropertyHandlerCache.Flush();
 }
コード例 #25
0
 public void Cleanup()
 {
     PropertyHandlerMapper.Clear();
 }
コード例 #26
0
 public void ThrowExceptionOnPropertyTypeHandlerMapperViaFieldWithNullPropertyHandler()
 {
     // Setup
     PropertyHandlerMapper.Add <PropertyHandlerMapperTestClass, StringPropertyHandler>(new Field("ColumnString"), null);
 }
コード例 #27
0
 public void ThrowExceptionOnPropertyTypeHandlerMapperViaExpressionWithNullPropertyHandler()
 {
     // Setup
     PropertyHandlerMapper.Add <PropertyHandlerMapperTestClass, StringPropertyHandler>(e => e.ColumnString, null);
 }
コード例 #28
0
 /// <summary>
 /// Resolves the equivalent property handler object of the .NET CLR type.
 /// </summary>
 /// <param name="type">The .NET CLR type</param>
 /// <returns>The equivalent property handler object of the .NET CLR type.</returns>
 public object Resolve(Type type)
 {
     return(PropertyHandlerMapper.Get <object>(type));
 }