public void DateTimeTyped()
        {
            var members = TypeAccessor.Create(typeof(FilteredInType)).GetMembers().ToDictionary(m => m.Name.ToLower(), m => m);
            var term    = new InFilterTermParser <FilteredInType>("DateField", "(2018-01-03, 2018-06-25, 2018-08-6, 2017-10-30)", members).Parse();

            Assert.Equal("DateField", term.PropertyName);

            var dates = term.Value.ToArray();

            Assert.Equal(new DateTime(2018, 1, 3), dates[0]);
            Assert.Equal(new DateTime(2018, 6, 25), dates[1]);
            Assert.Equal(new DateTime(2018, 8, 6), dates[2]);
            Assert.Equal(new DateTime(2017, 10, 30), dates[3]);
        }
 public void General(string field, string inExpression, string[] expected, bool expectArgEx = false,
                     bool expectInvalidOpEx = false)
 {
     if (expectArgEx)
     {
         Assert.ThrowsAny <ArgumentException>(() => new InFilterTermParser(field, inExpression));
     }
     else if (expectInvalidOpEx)
     {
         Assert.ThrowsAny <InvalidOperationException>(() => new InFilterTermParser(field, inExpression).Parse());
     }
     else
     {
         var term = new InFilterTermParser(field, inExpression).Parse();
         Assert.Equal(field, term.PropertyName);
         Assert.Equal(expected, term.Value);
     }
 }
        public void GeneralTyped(string field, string inExpression, object[] expected, bool expectArgEx = false,
                                 bool expectInvalidOpEx = false)
        {
            if (expectArgEx)
            {
                Assert.ThrowsAny <ArgumentException>(() => new InFilterTermParser(field, inExpression));
            }
            else if (expectInvalidOpEx)
            {
                Assert.ThrowsAny <InvalidOperationException>(() => new InFilterTermParser(field, inExpression).Parse());
            }
            else
            {
                var members = TypeAccessor.Create(typeof(FilteredInType)).GetMembers()
                              .ToDictionary(m => m.Name.ToLower(), m => m);

                var term = new InFilterTermParser <FilteredInType>(field.ToUpper(), inExpression, members).Parse();
                Assert.Equal(field, term.PropertyName);
                Assert.Equal(expected, term.Value);
            }
        }