public void QueryableDictionaryBase_ElementType()
        {
            var data = new Dictionary <string, string> {
                { "foo", "bar" }
            };
            var qd = new TestQueryableDictionary <string, string>(Expression.Parameter(typeof(string)), data, ex => { });

            Assert.AreEqual(typeof(KeyValuePair <string, string>), qd.ElementType);
        }
        private void AssertExpression <TKey, TValue, TResult>(IDictionary <TKey, TValue> data, Action <QueryableDictionaryBase <TKey, TValue> > action, Expression <Func <TestQueryableDictionary <TKey, TValue>, TResult> > expected)
        {
            var thisParameter = Expression.Parameter(typeof(TestQueryableDictionary <TKey, TValue>), "this");

            void assert(Expression expr)
            {
                var invoked = BetaReducer.Reduce(Expression.Invoke(expected, thisParameter));

                Assert.IsTrue(new ExpressionEqualityComparer().Equals(invoked, expr));
            }

            var queryableDictionary = new TestQueryableDictionary <TKey, TValue>(thisParameter, data, assert);

            action(queryableDictionary);
        }
 public QueryProvider(TestQueryableDictionary <TKey, TValue> parent)
 {
     _parent  = parent;
     _visitor = new Visitor(_parent._expression, Expression.Constant(parent._inner.AsQueryable()));
 }