Ejemplo n.º 1
0
        public void TestQSRecordLookup()
        {
            var c  = new CodeContext();
            var qs = new DummyQueryReference();
            var v  = Expression.Constant(10);

            c.Add(qs, v);

            Assert.AreEqual(0, c.GetAndResetQuerySourceLookups().Length, "# of query source look ups isn't zero initially");

            // Look up bogus and make sure it is null

            var qsNotStored = new DummyQueryReference();

            c.GetReplacement(qsNotStored);
            Assert.AreEqual(0, c.GetAndResetQuerySourceLookups().Length, "Dummy lookup shouldn't cache reference.");

            // Look up good one and make sure it worked.

            c.GetReplacement(qs);
            var qsReferenced = c.GetAndResetQuerySourceLookups();

            Assert.AreEqual(1, qsReferenced.Length, "# of qs lookups after a real reference");
            Assert.AreEqual(qs, qsReferenced[0], "QS recorded in lookup");
        }
Ejemplo n.º 2
0
        public void TestQSReloadLookup()
        {
            var c      = new CodeContext();
            var qs1    = new DummyQueryReference();
            var qs2    = new DummyQueryReference();
            var qsList = new IQuerySource[] { qs1, qs2 };

            c.RestoreQuerySourceLookups(qsList);
            Assert.AreEqual(2, c.GetAndResetQuerySourceLookups().Length, "# after a restore");
        }
Ejemplo n.º 3
0
        public void TestAddQueryReferenceSource()
        {
            var c  = new CodeContext();
            var qs = new DummyQueryReference();
            var v  = Expression.Constant(10);

            c.Add(qs, v);

            Assert.AreEqual(v, c.GetReplacement(qs), "Query Source Lookup.");
        }
Ejemplo n.º 4
0
        public void TestForNonArray()
        {
            var          gc = new GeneratedCode();
            var          cc = new CodeContext();
            IQuerySource s  = new DummyQueryReference()
            {
                ItemName = "q", ItemType = typeof(int)
            };

            ArrayExpressionParser.ParseArrayExpression(s, Expression.Variable(typeof(int), "d"), gc, cc, MEFUtilities.MEFContainer);
        }
Ejemplo n.º 5
0
        public void TestRunForNormalArray()
        {
            var          gc = new GeneratedCode();
            var          cc = new CodeContext();
            IQuerySource s  = new DummyQueryReference()
            {
                ItemName = "q", ItemType = typeof(int)
            };

            ArrayExpressionParser.ParseArrayExpression(s, Expression.Variable(typeof(int[]), "d"), gc, cc, MEFUtilities.MEFContainer);
            Assert.IsNotNull(cc.LoopVariable, "loop variable");
        }
Ejemplo n.º 6
0
        public void TestQSResetsRecordLookup()
        {
            var c  = new CodeContext();
            var qs = new DummyQueryReference();
            var v  = Expression.Constant(10);

            c.Add(qs, v);

            c.GetReplacement(qs);
            var qsReferenced = c.GetAndResetQuerySourceLookups();

            Assert.AreEqual(0, c.GetAndResetQuerySourceLookups().Length, "# of qs lookups after a reset");
        }
Ejemplo n.º 7
0
 public void IEnumerableWithNothingBehindItCheck()
 {
     // We can't loop over a random ienumerable - that isn't enough infomration
     // about where the loop came from (so we can't build the loop unless we know what we
     // are looping over!).
     var          gc = new GeneratedCode();
     var          cc = new CodeContext();
     IQuerySource s  = new DummyQueryReference()
     {
         ItemName = "q", ItemType = typeof(int)
     };
     var arr = Expression.Variable(typeof(IEnumerable <int>), "d");
     var r   = ArrayExpressionParser.ParseArrayExpression(s, arr, gc, cc, MEFUtilities.MEFContainer);
 }
Ejemplo n.º 8
0
        public void TestRunForConvertedArray()
        {
            var          gc = new GeneratedCode();
            var          cc = new CodeContext();
            IQuerySource s  = new DummyQueryReference()
            {
                ItemName = "q", ItemType = typeof(int)
            };
            var arr = Expression.Variable(typeof(int[]), "d");
            var cvt = Expression.Convert(arr, typeof(IEnumerable <int>));
            var r   = ArrayExpressionParser.ParseArrayExpression(s, cvt, gc, cc, MEFUtilities.MEFContainer);

            Assert.IsNotNull(r);
            Assert.IsNotNull(cc.LoopVariable, "loop variable");
        }
Ejemplo n.º 9
0
        /// <summary>
        /// Do the work of executing the array parse
        /// </summary>
        /// <param name="e"></param>
        private static GeneratedCode ExecuteArrayParseOnExpression(Expression e)
        {
            var          gc = new GeneratedCode();
            var          cc = new CodeContext();
            IQuerySource s  = new DummyQueryReference()
            {
                ItemName = "q", ItemType = typeof(int)
            };
            var r = ArrayExpressionParser.ParseArrayExpression(s, e, gc, cc, MEFUtilities.MEFContainer);

            gc.DumpCodeToConsole();
            Assert.IsNotNull(cc.LoopVariable, "loop variable");

            return(gc);
        }
Ejemplo n.º 10
0
        public void TestQMStoreResetsQSLookupList()
        {
            var c  = new CodeContext();
            var qm = new QueryModel(new Remotion.Linq.Clauses.MainFromClause("dude", typeof(int), Expression.Parameter(typeof(IEnumerable <int>))),
                                    new Remotion.Linq.Clauses.SelectClause(Expression.Parameter(typeof(int))));

            var qs = new DummyQueryReference();

            c.Add(qs, Expression.Constant(10));
            c.GetReplacement(qs);

            var e1 = Expression.Parameter(typeof(int));
            var s1 = c.Add(qm, e1);

            Assert.AreEqual(0, c.GetAndResetQuerySourceLookups().Length, "# of qs references after a lookup");
        }
Ejemplo n.º 11
0
        public void TestQMInvalidedByQSChange()
        {
            var c  = new CodeContext();
            var qm = new QueryModel(new Remotion.Linq.Clauses.MainFromClause("dude", typeof(int), Expression.Parameter(typeof(IEnumerable <int>))),
                                    new Remotion.Linq.Clauses.SelectClause(Expression.Parameter(typeof(int))));

            var qs = new DummyQueryReference();

            c.Add(qs, Expression.Constant(10));
            c.GetReplacement(qs);

            var e1 = Expression.Parameter(typeof(int));
            var s1 = c.Add(qm, e1);

            Assert.AreEqual(e1, c.GetReplacement(qm), "Initial lookup");
            c.Add(qs, Expression.Constant(20));
            Assert.IsNull(c.GetReplacement(qm), "Lookup after referenced QS has changed");
        }
Ejemplo n.º 12
0
        public void TestQSResetsRecordLookup()
        {
            var c = new CodeContext();
            var qs = new DummyQueryReference();
            var v = Expression.Constant(10);
            c.Add(qs, v);

            c.GetReplacement(qs);
            var qsReferenced = c.GetAndResetQuerySourceLookups();
            Assert.AreEqual(0, c.GetAndResetQuerySourceLookups().Length, "# of qs lookups after a reset");
        }
 public void TestRunForConvertedArray()
 {
     var gc = new GeneratedCode();
     var cc = new CodeContext();
     IQuerySource s = new DummyQueryReference() { ItemName = "q", ItemType = typeof(int) };
     var arr = Expression.Variable(typeof(int[]), "d");
     var cvt = Expression.Convert(arr, typeof(IEnumerable<int>));
     var r = ArrayExpressionParser.ParseArrayExpression(s, cvt, gc, cc, MEFUtilities.MEFContainer);
     Assert.IsNotNull(r);
     Assert.IsNotNull(cc.LoopVariable, "loop variable");
 }
 public void IEnumerableWithNothingBehindItCheck()
 {
     // We can't loop over a random ienumerable - that isn't enough infomration
     // about where the loop came from (so we can't build the loop unless we know what we
     // are looping over!).
     var gc = new GeneratedCode();
     var cc = new CodeContext();
     IQuerySource s = new DummyQueryReference() { ItemName = "q", ItemType = typeof(int) };
     var arr = Expression.Variable(typeof(IEnumerable<int>), "d");
     var r = ArrayExpressionParser.ParseArrayExpression(s, arr, gc, cc, MEFUtilities.MEFContainer);
 }
        /// <summary>
        /// Do the work of executing the array parse
        /// </summary>
        /// <param name="e"></param>
        private static GeneratedCode ExecuteArrayParseOnExpression(Expression e)
        {
            var gc = new GeneratedCode();
            var cc = new CodeContext();
            IQuerySource s = new DummyQueryReference() { ItemName = "q", ItemType = typeof(int) };
            var r = ArrayExpressionParser.ParseArrayExpression(s, e, gc, cc, MEFUtilities.MEFContainer);

            gc.DumpCodeToConsole();
            Assert.IsNotNull(cc.LoopVariable, "loop variable");

            return gc;
        }
Ejemplo n.º 16
0
        public void TestQSRecordLookup()
        {
            var c = new CodeContext();
            var qs = new DummyQueryReference();
            var v = Expression.Constant(10);
            c.Add(qs, v);

            Assert.AreEqual(0, c.GetAndResetQuerySourceLookups().Length, "# of query source look ups isn't zero initially");

            // Look up bogus and make sure it is null

            var qsNotStored = new DummyQueryReference();
            c.GetReplacement(qsNotStored);
            Assert.AreEqual(0, c.GetAndResetQuerySourceLookups().Length, "Dummy lookup shouldn't cache reference.");

            // Look up good one and make sure it worked.

            c.GetReplacement(qs);
            var qsReferenced = c.GetAndResetQuerySourceLookups();
            Assert.AreEqual(1, qsReferenced.Length, "# of qs lookups after a real reference");
            Assert.AreEqual(qs, qsReferenced[0], "QS recorded in lookup");
        }
Ejemplo n.º 17
0
        public void TestAddQueryRefereceSource()
        {
            var c = new CodeContext();
            var qs = new DummyQueryReference();
            var v = Expression.Constant(10);
            c.Add(qs, v);

            Assert.AreEqual(v, c.GetReplacement(qs), "Query Source Lookup.");
        }
Ejemplo n.º 18
0
        public void TestQMInvalidedByQSChange()
        {
            var c = new CodeContext();
            var qm = new QueryModel(new Remotion.Linq.Clauses.MainFromClause("dude", typeof(int), Expression.Parameter(typeof(IEnumerable<int>))),
                new Remotion.Linq.Clauses.SelectClause(Expression.Parameter(typeof(int))));

            var qs = new DummyQueryReference();
            c.Add(qs, Expression.Constant(10));
            c.GetReplacement(qs);

            var e1 = Expression.Parameter(typeof(int));
            var s1 = c.Add(qm, e1);

            Assert.AreEqual(e1, c.GetReplacement(qm), "Initial lookup");
            c.Add(qs, Expression.Constant(20));
            Assert.IsNull(c.GetReplacement(qm), "Lookup after referenced QS has changed");
        }
Ejemplo n.º 19
0
        public void TestQMStoreResetsQSLookupList()
        {
            var c = new CodeContext();
            var qm = new QueryModel(new Remotion.Linq.Clauses.MainFromClause("dude", typeof(int), Expression.Parameter(typeof(IEnumerable<int>))),
                new Remotion.Linq.Clauses.SelectClause(Expression.Parameter(typeof(int))));

            var qs = new DummyQueryReference();
            c.Add(qs, Expression.Constant(10));
            c.GetReplacement(qs);

            var e1 = Expression.Parameter(typeof(int));
            var s1 = c.Add(qm, e1);

            Assert.AreEqual(0, c.GetAndResetQuerySourceLookups().Length, "# of qs references after a lookup");
        }
 public void TestRunForNormalArray()
 {
     var gc = new GeneratedCode();
     var cc = new CodeContext();
     IQuerySource s = new DummyQueryReference() { ItemName = "q", ItemType = typeof(int) };
     ArrayExpressionParser.ParseArrayExpression(s, Expression.Variable(typeof(int[]), "d"), gc, cc, MEFUtilities.MEFContainer);
     Assert.IsNotNull(cc.LoopVariable, "loop variable");
 }
Ejemplo n.º 21
0
        public void TestQSReloadLookup()
        {
            var c = new CodeContext();
            var qs1 = new DummyQueryReference();
            var qs2 = new DummyQueryReference();
            var qsList = new IQuerySource[] { qs1, qs2 };

            c.RestoreQuerySourceLookups(qsList);
            Assert.AreEqual(2, c.GetAndResetQuerySourceLookups().Length, "# after a restore");
        }
 public void TestForNonArray()
 {
     var gc = new GeneratedCode();
     var cc = new CodeContext();
     IQuerySource s = new DummyQueryReference() { ItemName = "q", ItemType = typeof(int) };
     ArrayExpressionParser.ParseArrayExpression(s, Expression.Variable(typeof(int), "d"), gc, cc, MEFUtilities.MEFContainer);
 }