public static void MultipleValueConditions <TProperty>(IDictionary <string, IValueTypeCondition <TProperty> > conditions) where TProperty : struct, IComparable, IComparable <TProperty>, IEquatable <TProperty>
 {
     conditions["none"]      = new ValueTypeNoneCondition <TProperty>("None");
     conditions["isin"]      = new ValueTypeIsInCondition <TProperty>("IsIn");
     conditions["inotsin"]   = new ValueTypeIsNotInCondition <TProperty>("IsNotIn");
     conditions["isnull"]    = new ValueTypeIsNullCondition <TProperty>("IsNull");
     conditions["isnotnull"] = new ValueTypeIsNotNullCondition <TProperty>("IsNotNull");
 }
 public static void NumericConditions <TProperty>(IDictionary <string, IValueTypeCondition <TProperty> > conditions) where TProperty : struct, IComparable, IComparable <TProperty>, IEquatable <TProperty>
 {
     conditions["none"]               = new ValueTypeNoneCondition <TProperty>("None");
     conditions["equal"]              = new ValueTypeEqualCondition <TProperty>("Equal");
     conditions["notequal"]           = new ValueTypeNotEqualCondition <TProperty>("NotEqual");
     conditions["between"]            = new BetweenCondition <TProperty>("Between");
     conditions["lessthan"]           = new LessThanCondition <TProperty>("LessThan");
     conditions["greaterthan"]        = new GreaterThanCondition <TProperty>("GreaterThan");
     conditions["lessthanorequal"]    = new LessThanOrEqualCondition <TProperty>("LessThanOrEqual");
     conditions["greaterthanorequal"] = new GreaterThanOrEqualCondition <TProperty>("GreaterThanOrEqual");
     conditions["isnull"]             = new ValueTypeIsNullCondition <TProperty>("IsNull");
     conditions["isnotnull"]          = new ValueTypeIsNotNullCondition <TProperty>("IsNotNull");
 }
        public void ValueTypeIsNotNullCondition()
        {
            var isNotNullCondition = new ValueTypeIsNotNullCondition <int>
            {
                Value = new FilterValue <int?>
                {
                    LeftValue = 1
                }
            };

            var expr1 = isNotNullCondition.For <TestSource>(x => x.NullableField);

            Assert.IsTrue(expr1.Compile()(new TestSource {
                NullableField = 1
            }));

            Assert.IsFalse(expr1.Compile()(new TestSource {
                NullableField = null
            }));
        }