コード例 #1
0
        public void Iterators_TableSpool_ReturnsInput_AndPushes()
        {
            var rows = new object[, ]
            {
                { 1, "One" },
                { 2, "Two" }
            };

            var expected = rows;

            var tableSpoolStack = new TableSpoolStack(1);

            using (var input = new MockedIterator(rows))
                using (var iterator = new TableSpoolIterator(input, tableSpoolStack))
                {
                    AssertProduces(iterator, expected);

                    var stackRows = new List <RowBuffer>();
                    while (!tableSpoolStack.IsEmpty)
                    {
                        stackRows.Add(tableSpoolStack.Pop());
                    }

                    for (var i = 0; i < rows.GetLength(0); i++)
                    {
                        var originalLine = rows.GetLength(0) - i - 1;
                        for (var j = 0; j < rows.GetLength(1); j++)
                        {
                            Assert.Equal(rows[originalLine, j], stackRows[i][j]);
                        }
                    }
                }
        }
コード例 #2
0
        public void Iterators_TableSpoolRef_ReturnsEmpty_IfStackIsEmpty()
        {
            var stack = new TableSpoolStack(1);

            using (var iterator = new TableSpoolRefIterator(stack))
            {
                AssertEmpty(iterator);
            }
        }
コード例 #3
0
        public void Iterators_TableSpool_ReturnsEmpty_IfInputEmpty()
        {
            var rows            = new object[0];
            var tableSpoolStack = new TableSpoolStack(1);

            using (var input = new MockedIterator(rows))
                using (var iterator = new TableSpoolIterator(input, tableSpoolStack))
                {
                    AssertEmpty(iterator);
                    Assert.True(tableSpoolStack.IsEmpty);
                }
        }
コード例 #4
0
        public void Iterators_TableSpoolRef_ReturnsStack_AndPops()
        {
            var stack = new TableSpoolStack(2);

            stack.Push(new MockedRowBuffer(new object[] { 1, "One" }));
            stack.Push(new MockedRowBuffer(new object[] { 2, "Two" }));

            var expected = new object[, ]
            {
                { 2, "Two" },
                { 1, "One" }
            };

            using (var iterator = new TableSpoolRefIterator(stack))
            {
                AssertProduces(iterator, expected);

                Assert.True(stack.IsEmpty);
            }
        }
コード例 #5
0
        public void Iterators_TableSpool_ForwardsProperly()
        {
            var rows     = new object[] { 1, 2 };
            var expected = rows;

            using (var input = new MockedIterator(rows))
            {
                var tableSpoolStack = new TableSpoolStack(1);

                using (var iterator = new TableSpoolIterator(input, tableSpoolStack))
                {
                    for (var i = 0; i < 2; i++)
                    {
                        AssertProduces(iterator, expected);
                    }
                }

                Assert.Equal(2, input.TotalOpenCount);
                Assert.Equal(4, input.TotalReadCount);
                Assert.Equal(1, input.DisposalCount);
            }
        }