public void SelectForJetsAndTake()
        {
            // A query that should come back with 10 items.
            var q     = new QueriableDummy <TestNtupeArr>();
            var dude  = q.SelectMany(e => e.myvectorofint).Take(10).Count();
            var query = DummyQueryExectuor.LastQueryModel;

            Assert.IsTrue(query.HasStatefulOperator());
        }
        public void TestTakeSkipLevelBurreidWith2Tests()
        {
            var q = new QueriableDummy <dummyntup>();
            var c = q.SelectMany(x => x.valC1D).Where(x => x > 10).Where(x => x < 20).Take(5).Count();

            Assert.IsNotNull(DummyQueryExectuor.FinalResult, "Expecting some code to have been generated!");
            var res = DummyQueryExectuor.FinalResult;

            res.DumpCodeToConsole();

            Assert.AreEqual(1, res.DumpCode().Where(l => l.Contains("static int")).Count());
        }
        public void QMWith2ConcatsAndTwoEarlyTakesAndPostLoopTests()
        {
            var q1 = new QueriableDummy <dummyntup>();
            var q2 = new QueriableDummy <dummyntup>();

            var s1 = q1.SelectMany(r => r.valC1D).Where(r => r > 10).Where(r => Math.Abs(r) < 200).Take(500);
            var s2 = q2.SelectMany(r => r.valC1D).Where(r => r > 20).Where(r => Math.Abs(r) < 200).Take(300);

            try
            {
                var r1 = s1.Concat(s2).Count();
            }
            catch (InvalidOperationException e) when(e.Message.Contains("can't translate"))
            {
            }

            var qm     = DummyQueryExectuor.LastQueryModel;
            var qmList = ConcatSplitterQueryVisitor.Split(qm)
                         .DumpToConsole();

            Assert.AreEqual(2, qmList.Length);
            CheckForQuery(() => q1.SelectMany(r => r.valC1D).Where(r => r > 10).Where(r => Math.Abs(r) < 200).Take(500).Count(), qmList, 1, useDummy: true);
            CheckForQuery(() => q2.SelectMany(r => r.valC1D).Where(r => r > 20).Where(r => Math.Abs(r) < 200).Take(300).Count(), qmList, 1, useDummy: true);

            // Dump the code
            var code1 = qmList[0].GenerateCode <int>();
            var code2 = qmList[1].GenerateCode <int>();

            Console.WriteLine();
            Console.WriteLine();
            code1.DumpCodeToConsole();
            Console.WriteLine();
            Console.WriteLine();
            code2.DumpCodeToConsole();

            // Next, produce code to make sure that we have a static definition.
            Assert.IsTrue(code1.DumpCode().Where(l => l.Contains("static int")).Any());
            Assert.IsTrue(code1.DumpCode().Where(l => l.Contains("static int")).Any());
        }
        public void TestTakeSkipLevelBurreidWith2Tests()
        {
            var q = new QueriableDummy<dummyntup>();
            var c = q.SelectMany(x => x.valC1D).Where(x => x > 10).Where(x => x < 20).Take(5).Count();

            Assert.IsNotNull(DummyQueryExectuor.FinalResult, "Expecting some code to have been generated!");
            var res = DummyQueryExectuor.FinalResult;

            res.DumpCodeToConsole();

            Assert.AreEqual(1, res.DumpCode().Where(l => l.Contains("static int")).Count());
        }