public void TestContructorThrowsExceptionUponEmptyItemList()
 {
     Assert.Throws <ArgumentNullException>(() => {
         var en = new MultipleBatchEnumerator <int, int>(
             new IQueryable <int> [0],
             q => q
             );
     }, "Items list cannot be empty");
 }
 public void TestContructorThrowsExceptionUponNullSelectedResponse()
 {
     Assert.Throws <ArgumentNullException>(() => {
         var en = new MultipleBatchEnumerator <int, int>(
             new[] {
             new [] { 1 }.AsQueryable()
         },
             null
             );
     }, "Selected Response cannot be empty");
 }
        public void TestMultipleBatchEnumeratorFetchesCorrectBatchItems3()
        {
            var itemList = new[] {
                new [] { 1, 2, 3 }.AsQueryable(),
                new [] { 4, 5, 6, }.AsQueryable(),
                new [] { 7, 8, 9, 10, 11, 12 }.AsQueryable(),
                new int[] { }.AsQueryable(),
                new [] { 12, 13, 14, 15, 16, 17, 18, }.AsQueryable(),
                new [] { 17, 18, 19, 20, 21, 22, 24 }.AsQueryable(),
                new int[] { }.AsQueryable(),
                new int[] { 42 }.AsQueryable(),
            };
            var en = new MultipleBatchEnumerator <int, int>(
                itemList,
                q => q,
                qq => qq.OrderBy(q => q),
                null,
                5
                );

            Assert.AreEqual(0, en.BatchNumber);

            Assert.True(en.MoveNext());
            Assert.AreEqual(5, en.Current.Count());
            Assert.AreEqual(new[] { 1, 2, 3, 4, 5 }, en.Current);
            Assert.AreEqual(1, en.BatchNumber);

            Assert.True(en.MoveNext());
            Assert.AreEqual(5, en.Current.Count());
            Assert.AreEqual(new[] { 6, 7, 8, 9, 10 }, en.Current);
            Assert.AreEqual(2, en.BatchNumber);

            Assert.True(en.MoveNext());
            Assert.AreEqual(5, en.Current.Count());
            Assert.AreEqual(new[] { 11, 12, 12, 13, 14 }, en.Current);
            Assert.AreEqual(3, en.BatchNumber);

            Assert.True(en.MoveNext());
            Assert.AreEqual(5, en.Current.Count());
            Assert.AreEqual(new[] { 15, 16, 17, 18, 17 }, en.Current);
            Assert.AreEqual(4, en.BatchNumber);

            Assert.True(en.MoveNext());
            Assert.AreEqual(5, en.Current.Count());
            Assert.AreEqual(new[] { 18, 19, 20, 21, 22 }, en.Current);
            Assert.AreEqual(5, en.BatchNumber);

            Assert.True(en.MoveNext());
            Assert.AreEqual(2, en.Current.Count());
            Assert.AreEqual(new[] { 24, 42 }, en.Current);
            Assert.AreEqual(6, en.BatchNumber);

            Assert.False(en.MoveNext());
        }