public void Iterators_Empty_ReturnsNoRows()
 {
     using (var iterator = new EmptyIterator())
     {
         AssertEmpty(iterator);
     }
 }
Beispiel #2
0
        public void CanDisjunctionIterator()
        {
            var l1 = new[] { 1, 2, 3, 4, 5, 6, 7 };
            var l2 = new[] { 1, 3, 5, 7, 9 };
            var l3 = new[] { 3, 4, 5 };

            var r1 = new DisjunctionIterator().GetAll().ToList();

            Assert.True(Enumerable.Empty <int>().SequenceEqual(r1));

            var p1 = new ListIterator(l1);
            var r2 = new DisjunctionIterator(p1).GetAll().ToList();

            Assert.True(l1.SequenceEqual(r2));

            var p2 = new ListIterator(l2, "P2");
            var p3 = new ListIterator(l3, "P3");
            var r3 = new DisjunctionIterator(p2, p3).GetAll().ToList();

            Assert.True(new[] { 1, 3, 4, 5, 7, 9 }.SequenceEqual(r3));

            p1 = new ListIterator(l1, "P1");
            p2 = new ListIterator(l2, "P2");
            p3 = new ListIterator(l3, "P3");
            var r4 = new DisjunctionIterator(p1, p2, p3).GetAll().ToList();

            Assert.True(new[] { 1, 2, 3, 4, 5, 6, 7, 9 }.SequenceEqual(r4));

            p1 = new ListIterator(l1);
            var empty = new EmptyIterator();
            var r5    = new DisjunctionIterator(p1, empty).GetAll().ToList();

            Assert.True(l1.SequenceEqual(r5));
        }
Beispiel #3
0
        public void CanConjunctionIterator()
        {
            var l1 = new[] { 1, 2, 3, 4, 5, 6, 7 };
            var l2 = new[] { 1, 3, 5, 7, 9 };
            var l3 = new[] { 3, 4, 5 };

            // ReSharper disable ObjectCreationAsStatement
            Assert.Throws <ArgumentException>(() => new ConjunctionIterator());
            Assert.Throws <ArgumentNullException>(() => new ConjunctionIterator(null));
            // ReSharper restore ObjectCreationAsStatement

            var r1 = new ConjunctionIterator(new ListIterator(l1)).GetAll();

            Assert.True(l1.SequenceEqual(r1));

            var p1 = new ListIterator(l1, "P1");
            var p2 = new ListIterator(l2, "P2");
            var p3 = new ListIterator(l3, "P3");
            var r2 = new ConjunctionIterator(p3, p1, p2).GetAll().ToList();

            Assert.True(new[] { 3, 5 }.SequenceEqual(r2));

            p1 = new ListIterator(l1);
            p2 = new ListIterator(l2);
            var empty = new EmptyIterator();
            var r3    = new ConjunctionIterator(p1, p2, empty).GetAll().ToList();

            Assert.Empty(r3);
        }
Beispiel #4
0
        public void CanButNotIterator()
        {
            var l1 = new[] { 1, 2, 3, 4, 5, 6, 7 };
            var l2 = new[] { 1, 3, 5, 7, 9 };

            var p1 = new ListIterator(l1);
            var p2 = new ListIterator(l2);
            var r1 = new ButNotIterator(p1, p2).GetAll().ToList();

            Assert.True(new[] { 2, 4, 6 }.SequenceEqual(r1));

            p1 = new ListIterator(l1, "P1");
            p2 = new ListIterator(l2, "P2");
            var r2 = new ButNotIterator(p2, p1).GetAll().ToList();

            Assert.True(new[] { 9 }.SequenceEqual(r2));

            p1 = new ListIterator(l1);
            var r3 = new ButNotIterator(p1, null).GetAll().ToList();

            Assert.True(l1.SequenceEqual(r3));

            p2 = new ListIterator(l2);
            var r4 = new ButNotIterator(null, p2).GetAll().ToList();

            Assert.Empty(r4);

            var r5 = new ButNotIterator(null, null).GetAll().ToList();

            Assert.Empty(r5);

            p1 = new ListIterator(l1);
            var empty = new EmptyIterator();
            var r6    = new ButNotIterator(p1, empty).GetAll().ToList();

            Assert.True(l1.SequenceEqual(r6));

            empty = new EmptyIterator();
            p2    = new ListIterator(l2);
            var r7 = new ButNotIterator(empty, p2).GetAll().ToList();

            Assert.Empty(r7);
        }