public void TestVisibleRowsEvenBiggerScroll()
        {
            MockCellEntry[] cells = new MockCellEntry[15];
            for (int i = 0; i < cells.Length; ++i)
            {
                cells[i] = new MockCellEntry(typeof(TableViewCellMock), 10);
            }

            TableViewAdapter adapter = new TestCellsHeightTableAdapter(cells);

            TableViewMock table = new TableViewMock(320, 50);

            table.DataSource = adapter;
            table.Delegate   = adapter;
            table.ReloadData();

            table.Scroll(100);
            Assert.AreEqual(10, table.FirstVisibleCellIndex);
            Assert.AreEqual(14, table.LastVisibleCellIndex);
            AssertVisibleRows(table, 10, 11, 12, 13, 14);

            table.Scroll(-100);
            Assert.AreEqual(0, table.FirstVisibleCellIndex);
            Assert.AreEqual(4, table.LastVisibleCellIndex);
            AssertVisibleRows(table, 0, 1, 2, 3, 4);
        }
Exemple #2
0
        public void TestReusableCellsMultipleOccurrenceBigScroll()
        {
            MockCellEntry[] cells = new MockCellEntry[15];
            for (int i = 0; i < cells.Length; ++i)
            {
                cells[i] = new MockCellEntry(typeof(TableViewCellMock1), 10);
            }
            ;

            TableViewAdapter adapter = new TestCellsHeightTableAdapter(cells);

            TableViewMock table = new TableViewMock(320, 50);

            table.DataSource = adapter;
            table.Delegate   = adapter;
            table.ReloadData();

            CTableViewCell a1 = table.FirstVisibleCell;
            CTableViewCell a2 = a1.NextCell;
            CTableViewCell a3 = a2.NextCell;
            CTableViewCell a4 = a3.NextCell;
            CTableViewCell a5 = a4.NextCell;

            table.Scroll(100);

            CTableViewCell b1 = table.FirstVisibleCell;
            CTableViewCell b2 = b1.NextCell;
            CTableViewCell b3 = b2.NextCell;
            CTableViewCell b4 = b3.NextCell;
            CTableViewCell b5 = b4.NextCell;

            Assert.AreSame(a1, b5);
            Assert.AreSame(a2, b4);
            Assert.AreSame(a3, b3);
            Assert.AreSame(a4, b2);
            Assert.AreSame(a5, b1);

            table.Scroll(-100);

            b1 = table.FirstVisibleCell;
            b2 = b1.NextCell;
            b3 = b2.NextCell;
            b4 = b3.NextCell;
            b5 = b4.NextCell;

            Assert.AreSame(a1, b1);
            Assert.AreSame(a2, b2);
            Assert.AreSame(a3, b3);
            Assert.AreSame(a4, b4);
            Assert.AreSame(a5, b5);

            Assert.AreEqual(5, TableViewCellMock1.instanceCount);
        }
        public void TestVisibleRows()
        {
            TableViewAdapter adapter = new TestCellsHeightTableAdapter(new MockCellEntry[] {
                new MockCellEntry(typeof(TableViewCellMock), 10)
            });

            TableViewMock table = new TableViewMock(320, 15);
            table.DataSource = adapter;
            table.Delegate = adapter;
            table.ReloadData();

            Assert.AreEqual(0, table.FirstVisibleCellIndex);
            Assert.AreEqual(0, table.LastVisibleCellIndex);
            AssertVisibleRows(table, 0);
        }
Exemple #4
0
        public void TestResizeChangeWidth()
        {
            MockCellEntry[] entries = new MockCellEntry[]
            {
                new MockCellEntry(typeof(TableViewCellMock), 10),
                new MockCellEntry(typeof(TableViewCellMock), 15),
                new MockCellEntry(typeof(TableViewCellMock), 10),
                new MockCellEntry(typeof(TableViewCellMock), 15),
                new MockCellEntry(typeof(TableViewCellMock), 10),
                new MockCellEntry(typeof(TableViewCellMock), 15)
            };

            TableViewAdapter adapter = new TestCellsHeightTableAdapter(entries);

            TableViewMock table = new TableViewMock(320, 60);

            table.DataSource = adapter;
            table.Delegate   = adapter;
            table.ReloadData();

            // descrease width
            for (int i = 0; i < entries.Length; ++i)
            {
                if (entries[i].height == 10)
                {
                    entries[i].height = 20;
                }
            }
            table.Resize(300, 60);

            AssertVisibleRows(table, 1, 2, 3, 4);
            Assert.AreEqual(30, table.ScrollPosTop);
            Assert.AreEqual(90, table.ScrollPosBottom);

            // increase width
            for (int i = 0; i < entries.Length; ++i)
            {
                if (entries[i].height == 20)
                {
                    entries[i].height = 10;
                }
            }
            table.Resize(320, 60);

            AssertVisibleRows(table, 0, 1, 2, 3, 4);
            Assert.AreEqual(0, table.ScrollPosTop);
            Assert.AreEqual(60, table.ScrollPosBottom);
        }
        public void TestVisibleRows()
        {
            TableViewAdapter adapter = new TestCellsHeightTableAdapter(new MockCellEntry[] {
                new MockCellEntry(typeof(TableViewCellMock), 10)
            });

            TableViewMock table = new TableViewMock(320, 15);

            table.DataSource = adapter;
            table.Delegate   = adapter;
            table.ReloadData();

            Assert.AreEqual(0, table.FirstVisibleCellIndex);
            Assert.AreEqual(0, table.LastVisibleCellIndex);
            AssertVisibleRows(table, 0);
        }
        public void TestClickAfterScroll()
        {
            MockCellEntry[] cells =
            {
                new MockCellEntry(typeof(TableViewCellMock1), 10),
                new MockCellEntry(typeof(TableViewCellMock2), 15),
                new MockCellEntry(typeof(TableViewCellMock3), 10),
                new MockCellEntry(typeof(TableViewCellMock1), 15),
                new MockCellEntry(typeof(TableViewCellMock2), 10),
                new MockCellEntry(typeof(TableViewCellMock3), 15),
            };

            TableViewAdapter adapter = new TestCellsHeightTableAdapter(cells);

            TableViewClickMock table = new TableViewClickMock(320, 10);

            table.DataSource = adapter;
            table.Delegate   = adapter;
            table.ReloadData();

            table.Click(10, 5);
            Assert.AreEqual(0, table.ClickedCellIndex);

            table.Scroll(10);
            table.Click(10, 5);
            Assert.AreEqual(1, table.ClickedCellIndex);

            table.Scroll(15);
            table.Click(10, 5);
            Assert.AreEqual(2, table.ClickedCellIndex);

            table.Scroll(10);
            table.Click(10, 5);
            Assert.AreEqual(3, table.ClickedCellIndex);

            table.Scroll(15);
            table.Click(10, 5);
            Assert.AreEqual(4, table.ClickedCellIndex);

            table.Scroll(10);
            table.Click(10, 5);
            Assert.AreEqual(5, table.ClickedCellIndex);
        }
        public void TestClickAfterScroll()
        {
            MockCellEntry[] cells =
            {
                new MockCellEntry(typeof(TableViewCellMock1), 10),
                new MockCellEntry(typeof(TableViewCellMock2), 15),
                new MockCellEntry(typeof(TableViewCellMock3), 10),
                new MockCellEntry(typeof(TableViewCellMock1), 15),
                new MockCellEntry(typeof(TableViewCellMock2), 10),
                new MockCellEntry(typeof(TableViewCellMock3), 15),
            };

            TableViewAdapter adapter = new TestCellsHeightTableAdapter(cells);

            TableViewClickMock table = new TableViewClickMock(320, 10);
            table.DataSource = adapter;
            table.Delegate = adapter;
            table.ReloadData();

            table.Click(10, 5);
            Assert.AreEqual(0, table.ClickedCellIndex);

            table.Scroll(10);
            table.Click(10, 5);
            Assert.AreEqual(1, table.ClickedCellIndex);

            table.Scroll(15);
            table.Click(10, 5);
            Assert.AreEqual(2, table.ClickedCellIndex);

            table.Scroll(10);
            table.Click(10, 5);
            Assert.AreEqual(3, table.ClickedCellIndex);

            table.Scroll(15);
            table.Click(10, 5);
            Assert.AreEqual(4, table.ClickedCellIndex);

            table.Scroll(10);
            table.Click(10, 5);
            Assert.AreEqual(5, table.ClickedCellIndex);
        }
Exemple #8
0
        public void TestReusableCells()
        {
            MockCellEntry[] cells =
            {
                new MockCellEntry(typeof(TableViewCellMock1), 10),
                new MockCellEntry(typeof(TableViewCellMock2), 10),
                new MockCellEntry(typeof(TableViewCellMock3), 10),
                new MockCellEntry(typeof(TableViewCellMock1), 10),
                new MockCellEntry(typeof(TableViewCellMock2), 10),
                new MockCellEntry(typeof(TableViewCellMock3), 10),
            };

            TableViewAdapter adapter = new TestCellsHeightTableAdapter(cells);

            TableViewMock table = new TableViewMock(320, 25);

            table.DataSource = adapter;
            table.Delegate   = adapter;
            table.ReloadData();

            CTableViewCell a1 = table.FirstVisibleCell;
            CTableViewCell a2 = a1.NextCell;
            CTableViewCell a3 = a2.NextCell;

            Assert.AreEqual(typeof(TableViewCellMock1), a1.GetType());
            Assert.AreEqual(typeof(TableViewCellMock2), a2.GetType());
            Assert.AreEqual(typeof(TableViewCellMock3), a3.GetType());

            table.Scroll(10);

            CTableViewCell b1 = table.FirstVisibleCell;
            CTableViewCell b2 = b1.NextCell;
            CTableViewCell b3 = b2.NextCell;

            Assert.AreSame(a2, b1);
            Assert.AreSame(a3, b2);
            Assert.AreSame(a1, b3);

            table.Scroll(10);

            b1 = table.FirstVisibleCell;
            b2 = b1.NextCell;
            b3 = b2.NextCell;

            Assert.AreSame(a3, b1);
            Assert.AreSame(a1, b2);
            Assert.AreSame(a2, b3);

            table.Scroll(10);

            b1 = table.FirstVisibleCell;
            b2 = b1.NextCell;
            b3 = b2.NextCell;

            Assert.AreSame(a1, b1);
            Assert.AreSame(a2, b2);
            Assert.AreSame(a3, b3);

            table.Scroll(5);

            b1 = table.FirstVisibleCell;
            b2 = b1.NextCell;
            b3 = b2.NextCell;

            Assert.AreSame(a1, b1);
            Assert.AreSame(a2, b2);
            Assert.AreSame(a3, b3);

            table.Scroll(-5);

            b1 = table.FirstVisibleCell;
            b2 = b1.NextCell;
            b3 = b2.NextCell;

            Assert.AreSame(a1, b1);
            Assert.AreSame(a2, b2);
            Assert.AreSame(a3, b3);

            table.Scroll(-10);

            b1 = table.FirstVisibleCell;
            b2 = b1.NextCell;
            b3 = b2.NextCell;

            Assert.AreSame(a3, b1);
            Assert.AreSame(a1, b2);
            Assert.AreSame(a2, b3);

            table.Scroll(-10);

            b1 = table.FirstVisibleCell;
            b2 = b1.NextCell;
            b3 = b2.NextCell;

            Assert.AreSame(a2, b1);
            Assert.AreSame(a3, b2);
            Assert.AreSame(a1, b3);

            table.Scroll(-10);

            b1 = table.FirstVisibleCell;
            b2 = b1.NextCell;
            b3 = b2.NextCell;

            Assert.AreSame(a1, b1);
            Assert.AreSame(a2, b2);
            Assert.AreSame(a3, b3);

            Assert.AreEqual(1, TableViewCellMock1.instanceCount);
            Assert.AreEqual(1, TableViewCellMock2.instanceCount);
            Assert.AreEqual(1, TableViewCellMock3.instanceCount);
        }
Exemple #9
0
        public void TestResizeChangeHeight()
        {
            TableViewAdapter adapter = new TestCellsHeightTableAdapter(new MockCellEntry[] {
                new MockCellEntry(typeof(TableViewCellMock), 10),
                new MockCellEntry(typeof(TableViewCellMock), 15),
                new MockCellEntry(typeof(TableViewCellMock), 10),
                new MockCellEntry(typeof(TableViewCellMock), 15),
                new MockCellEntry(typeof(TableViewCellMock), 10),
                new MockCellEntry(typeof(TableViewCellMock), 15)
            });

            TableViewMock table = new TableViewMock(320, 30);

            table.DataSource = adapter;
            table.Delegate   = adapter;
            table.ReloadData();

            Assert.AreEqual(0, table.FirstVisibleCellIndex);
            Assert.AreEqual(2, table.LastVisibleCellIndex);
            AssertVisibleRows(table, 0, 1, 2);

            table.Resize(320, 35);

            AssertVisibleRows(table, 0, 1, 2);

            table.Resize(320, 45);

            AssertVisibleRows(table, 0, 1, 2, 3);

            table.Resize(320, 55);

            AssertVisibleRows(table, 0, 1, 2, 3, 4);

            table.Resize(320, 65);

            AssertVisibleRows(table, 0, 1, 2, 3, 4, 5);

            table.Resize(320, 75);

            AssertVisibleRows(table, 0, 1, 2, 3, 4, 5);

            table.Resize(320, 80);

            AssertVisibleRows(table, 0, 1, 2, 3, 4, 5);

            table.Resize(320, 85);

            AssertVisibleRows(table, 0, 1, 2, 3, 4, 5);

            table.Resize(320, 80);

            AssertVisibleRows(table, 0, 1, 2, 3, 4, 5);

            table.Resize(320, 75);

            AssertVisibleRows(table, 0, 1, 2, 3, 4, 5);

            table.Resize(320, 65);

            AssertVisibleRows(table, 0, 1, 2, 3, 4, 5);

            table.Resize(320, 55);

            AssertVisibleRows(table, 0, 1, 2, 3, 4);

            table.Resize(320, 45);

            AssertVisibleRows(table, 0, 1, 2, 3);

            table.Resize(320, 35);

            AssertVisibleRows(table, 0, 1, 2);

            table.Resize(320, 30);

            AssertVisibleRows(table, 0, 1, 2);

            table.Resize(320, 25);

            AssertVisibleRows(table, 0, 1);

            table.Resize(320, 20);

            AssertVisibleRows(table, 0, 1);

            table.Resize(320, 10);

            AssertVisibleRows(table, 0);

            table.Resize(320, 5);

            AssertVisibleRows(table, 0);

            table.Resize(320, 0);

            AssertVisibleRows(table, new int[0]);
        }
        public void TestVisibleRowsScroll()
        {
            MockCellEntry[] cells = new MockCellEntry[10];
            for (int i = 0; i < cells.Length; ++i)
            {
                cells[i] = new MockCellEntry(typeof(TableViewCellMock), i % 2 == 0 ? 10 : 15);
            }

            TableViewAdapter adapter = new TestCellsHeightTableAdapter(cells);

            TableViewMock table = new TableViewMock(320, 15);

            table.DataSource = adapter;
            table.Delegate   = adapter;
            table.ReloadData();

            Assert.AreEqual(0, table.FirstVisibleCellIndex);
            Assert.AreEqual(1, table.LastVisibleCellIndex);
            AssertVisibleRows(table, 0, 1);

            table.Scroll(10);
            Assert.AreEqual(1, table.FirstVisibleCellIndex);
            Assert.AreEqual(1, table.LastVisibleCellIndex);
            AssertVisibleRows(table, 1);

            table.Scroll(10);
            Assert.AreEqual(1, table.FirstVisibleCellIndex);
            Assert.AreEqual(2, table.LastVisibleCellIndex);
            AssertVisibleRows(table, 1, 2);

            table.Scroll(10);
            Assert.AreEqual(2, table.FirstVisibleCellIndex);
            Assert.AreEqual(3, table.LastVisibleCellIndex);
            AssertVisibleRows(table, 2, 3);

            table.Scroll(10);
            Assert.AreEqual(3, table.FirstVisibleCellIndex);
            Assert.AreEqual(4, table.LastVisibleCellIndex);
            AssertVisibleRows(table, 3, 4);

            table.Scroll(10);
            Assert.AreEqual(4, table.FirstVisibleCellIndex);
            Assert.AreEqual(5, table.LastVisibleCellIndex);
            AssertVisibleRows(table, 4, 5);

            table.Scroll(10);
            Assert.AreEqual(5, table.FirstVisibleCellIndex);
            Assert.AreEqual(5, table.LastVisibleCellIndex);
            AssertVisibleRows(table, 5);

            table.Scroll(10);
            Assert.AreEqual(5, table.FirstVisibleCellIndex);
            Assert.AreEqual(6, table.LastVisibleCellIndex);
            AssertVisibleRows(table, 5, 6);

            table.Scroll(10);
            Assert.AreEqual(6, table.FirstVisibleCellIndex);
            Assert.AreEqual(7, table.LastVisibleCellIndex);
            AssertVisibleRows(table, 6, 7);

            table.Scroll(10);
            Assert.AreEqual(7, table.FirstVisibleCellIndex);
            Assert.AreEqual(8, table.LastVisibleCellIndex);
            AssertVisibleRows(table, 7, 8);

            table.Scroll(10);
            Assert.AreEqual(8, table.FirstVisibleCellIndex);
            Assert.AreEqual(9, table.LastVisibleCellIndex);
            AssertVisibleRows(table, 8, 9);

            table.Scroll(10);
            Assert.AreEqual(9, table.FirstVisibleCellIndex);
            Assert.AreEqual(9, table.LastVisibleCellIndex);
            AssertVisibleRows(table, 9);

            table.Scroll(-10);
            Assert.AreEqual(8, table.FirstVisibleCellIndex);
            Assert.AreEqual(9, table.LastVisibleCellIndex);
            AssertVisibleRows(table, 8, 9);

            table.Scroll(-10);
            Assert.AreEqual(7, table.FirstVisibleCellIndex);
            Assert.AreEqual(8, table.LastVisibleCellIndex);
            AssertVisibleRows(table, 7, 8);

            table.Scroll(-10);
            Assert.AreEqual(6, table.FirstVisibleCellIndex);
            Assert.AreEqual(7, table.LastVisibleCellIndex);
            AssertVisibleRows(table, 6, 7);

            table.Scroll(-10);
            Assert.AreEqual(5, table.FirstVisibleCellIndex);
            Assert.AreEqual(6, table.LastVisibleCellIndex);
            AssertVisibleRows(table, 5, 6);

            table.Scroll(-10);
            Assert.AreEqual(5, table.FirstVisibleCellIndex);
            Assert.AreEqual(5, table.LastVisibleCellIndex);
            AssertVisibleRows(table, 5);

            table.Scroll(-10);
            Assert.AreEqual(4, table.FirstVisibleCellIndex);
            Assert.AreEqual(5, table.LastVisibleCellIndex);
            AssertVisibleRows(table, 4, 5);

            table.Scroll(-10);
            Assert.AreEqual(3, table.FirstVisibleCellIndex);
            Assert.AreEqual(4, table.LastVisibleCellIndex);
            AssertVisibleRows(table, 3, 4);

            table.Scroll(-10);
            Assert.AreEqual(2, table.FirstVisibleCellIndex);
            Assert.AreEqual(3, table.LastVisibleCellIndex);
            AssertVisibleRows(table, 2, 3);

            table.Scroll(-10);
            Assert.AreEqual(1, table.FirstVisibleCellIndex);
            Assert.AreEqual(2, table.LastVisibleCellIndex);
            AssertVisibleRows(table, 1, 2);

            table.Scroll(-10);
            Assert.AreEqual(1, table.FirstVisibleCellIndex);
            Assert.AreEqual(1, table.LastVisibleCellIndex);
            AssertVisibleRows(table, 1);

            table.Scroll(-10);
            Assert.AreEqual(0, table.FirstVisibleCellIndex);
            Assert.AreEqual(1, table.LastVisibleCellIndex);
            AssertVisibleRows(table, 0, 1);
        }
        public void TestVisibleRowsBigScroll()
        {
            MockCellEntry[] cells = new MockCellEntry[10];
            for (int i = 0; i < cells.Length; ++i)
            {
                cells[i] = new MockCellEntry(typeof(TableViewCellMock), 10);
            }

            TableViewAdapter adapter = new TestCellsHeightTableAdapter(cells);

            TableViewMock table = new TableViewMock(320, 50);
            table.DataSource = adapter;
            table.Delegate = adapter;
            table.ReloadData();

            table.Scroll(50);
            Assert.AreEqual(5, table.FirstVisibleCellIndex);
            Assert.AreEqual(9, table.LastVisibleCellIndex);
            AssertVisibleRows(table, 5, 6, 7, 8, 9);

            table.Scroll(-50);
            Assert.AreEqual(0, table.FirstVisibleCellIndex);
            Assert.AreEqual(4, table.LastVisibleCellIndex);
            AssertVisibleRows(table, 0, 1, 2, 3, 4);
        }
        public void TestVisibleRowsScroll()
        {
            MockCellEntry[] cells = new MockCellEntry[10];
            for (int i = 0; i < cells.Length; ++i)
            {
                cells[i] = new MockCellEntry(typeof(TableViewCellMock), i % 2 == 0 ? 10 : 15);
            }

            TableViewAdapter adapter = new TestCellsHeightTableAdapter(cells);

            TableViewMock table = new TableViewMock(320, 15);
            table.DataSource = adapter;
            table.Delegate = adapter;
            table.ReloadData();

            Assert.AreEqual(0, table.FirstVisibleCellIndex);
            Assert.AreEqual(1, table.LastVisibleCellIndex);
            AssertVisibleRows(table, 0, 1);

            table.Scroll(10);
            Assert.AreEqual(1, table.FirstVisibleCellIndex);
            Assert.AreEqual(1, table.LastVisibleCellIndex);
            AssertVisibleRows(table, 1);

            table.Scroll(10);
            Assert.AreEqual(1, table.FirstVisibleCellIndex);
            Assert.AreEqual(2, table.LastVisibleCellIndex);
            AssertVisibleRows(table, 1, 2);

            table.Scroll(10);
            Assert.AreEqual(2, table.FirstVisibleCellIndex);
            Assert.AreEqual(3, table.LastVisibleCellIndex);
            AssertVisibleRows(table, 2, 3);

            table.Scroll(10);
            Assert.AreEqual(3, table.FirstVisibleCellIndex);
            Assert.AreEqual(4, table.LastVisibleCellIndex);
            AssertVisibleRows(table, 3, 4);

            table.Scroll(10);
            Assert.AreEqual(4, table.FirstVisibleCellIndex);
            Assert.AreEqual(5, table.LastVisibleCellIndex);
            AssertVisibleRows(table, 4, 5);

            table.Scroll(10);
            Assert.AreEqual(5, table.FirstVisibleCellIndex);
            Assert.AreEqual(5, table.LastVisibleCellIndex);
            AssertVisibleRows(table, 5);

            table.Scroll(10);
            Assert.AreEqual(5, table.FirstVisibleCellIndex);
            Assert.AreEqual(6, table.LastVisibleCellIndex);
            AssertVisibleRows(table, 5, 6);

            table.Scroll(10);
            Assert.AreEqual(6, table.FirstVisibleCellIndex);
            Assert.AreEqual(7, table.LastVisibleCellIndex);
            AssertVisibleRows(table, 6, 7);

            table.Scroll(10);
            Assert.AreEqual(7, table.FirstVisibleCellIndex);
            Assert.AreEqual(8, table.LastVisibleCellIndex);
            AssertVisibleRows(table, 7, 8);

            table.Scroll(10);
            Assert.AreEqual(8, table.FirstVisibleCellIndex);
            Assert.AreEqual(9, table.LastVisibleCellIndex);
            AssertVisibleRows(table, 8, 9);

            table.Scroll(10);
            Assert.AreEqual(9, table.FirstVisibleCellIndex);
            Assert.AreEqual(9, table.LastVisibleCellIndex);
            AssertVisibleRows(table, 9);

            table.Scroll(-10);
            Assert.AreEqual(8, table.FirstVisibleCellIndex);
            Assert.AreEqual(9, table.LastVisibleCellIndex);
            AssertVisibleRows(table, 8, 9);

            table.Scroll(-10);
            Assert.AreEqual(7, table.FirstVisibleCellIndex);
            Assert.AreEqual(8, table.LastVisibleCellIndex);
            AssertVisibleRows(table, 7, 8);

            table.Scroll(-10);
            Assert.AreEqual(6, table.FirstVisibleCellIndex);
            Assert.AreEqual(7, table.LastVisibleCellIndex);
            AssertVisibleRows(table, 6, 7);

            table.Scroll(-10);
            Assert.AreEqual(5, table.FirstVisibleCellIndex);
            Assert.AreEqual(6, table.LastVisibleCellIndex);
            AssertVisibleRows(table, 5, 6);

            table.Scroll(-10);
            Assert.AreEqual(5, table.FirstVisibleCellIndex);
            Assert.AreEqual(5, table.LastVisibleCellIndex);
            AssertVisibleRows(table, 5);

            table.Scroll(-10);
            Assert.AreEqual(4, table.FirstVisibleCellIndex);
            Assert.AreEqual(5, table.LastVisibleCellIndex);
            AssertVisibleRows(table, 4, 5);

            table.Scroll(-10);
            Assert.AreEqual(3, table.FirstVisibleCellIndex);
            Assert.AreEqual(4, table.LastVisibleCellIndex);
            AssertVisibleRows(table, 3, 4);

            table.Scroll(-10);
            Assert.AreEqual(2, table.FirstVisibleCellIndex);
            Assert.AreEqual(3, table.LastVisibleCellIndex);
            AssertVisibleRows(table, 2, 3);

            table.Scroll(-10);
            Assert.AreEqual(1, table.FirstVisibleCellIndex);
            Assert.AreEqual(2, table.LastVisibleCellIndex);
            AssertVisibleRows(table, 1, 2);

            table.Scroll(-10);
            Assert.AreEqual(1, table.FirstVisibleCellIndex);
            Assert.AreEqual(1, table.LastVisibleCellIndex);
            AssertVisibleRows(table, 1);

            table.Scroll(-10);
            Assert.AreEqual(0, table.FirstVisibleCellIndex);
            Assert.AreEqual(1, table.LastVisibleCellIndex);
            AssertVisibleRows(table, 0, 1);
        }
        public void TestResizeChangeHeight()
        {
            TableViewAdapter adapter = new TestCellsHeightTableAdapter(new MockCellEntry[] {
                new MockCellEntry(typeof(TableViewCellMock), 10),
                new MockCellEntry(typeof(TableViewCellMock), 15),
                new MockCellEntry(typeof(TableViewCellMock), 10),
                new MockCellEntry(typeof(TableViewCellMock), 15),
                new MockCellEntry(typeof(TableViewCellMock), 10),
                new MockCellEntry(typeof(TableViewCellMock), 15)
            });

            TableViewMock table = new TableViewMock(320, 30);
            table.DataSource = adapter;
            table.Delegate = adapter;
            table.ReloadData();

            Assert.AreEqual(0, table.FirstVisibleCellIndex);
            Assert.AreEqual(2, table.LastVisibleCellIndex);
            AssertVisibleRows(table, 0, 1, 2);

            table.Resize(320, 35);

            AssertVisibleRows(table, 0, 1, 2);

            table.Resize(320, 45);

            AssertVisibleRows(table, 0, 1, 2, 3);

            table.Resize(320, 55);

            AssertVisibleRows(table, 0, 1, 2, 3, 4);

            table.Resize(320, 65);

            AssertVisibleRows(table, 0, 1, 2, 3, 4, 5);

            table.Resize(320, 75);

            AssertVisibleRows(table, 0, 1, 2, 3, 4, 5);

            table.Resize(320, 80);

            AssertVisibleRows(table, 0, 1, 2, 3, 4, 5);

            table.Resize(320, 85);

            AssertVisibleRows(table, 0, 1, 2, 3, 4, 5);

            table.Resize(320, 80);

            AssertVisibleRows(table, 0, 1, 2, 3, 4, 5);

            table.Resize(320, 75);

            AssertVisibleRows(table, 0, 1, 2, 3, 4, 5);

            table.Resize(320, 65);

            AssertVisibleRows(table, 0, 1, 2, 3, 4, 5);

            table.Resize(320, 55);

            AssertVisibleRows(table, 0, 1, 2, 3, 4);

            table.Resize(320, 45);

            AssertVisibleRows(table, 0, 1, 2, 3);

            table.Resize(320, 35);

            AssertVisibleRows(table, 0, 1, 2);

            table.Resize(320, 30);

            AssertVisibleRows(table, 0, 1, 2);

            table.Resize(320, 25);

            AssertVisibleRows(table, 0, 1);

            table.Resize(320, 20);

            AssertVisibleRows(table, 0, 1);

            table.Resize(320, 10);

            AssertVisibleRows(table, 0);

            table.Resize(320, 5);

            AssertVisibleRows(table, 0);

            table.Resize(320, 0);

            AssertVisibleRows(table, new int[0]);
        }
        public void TestResizeChangeWidth()
        {
            MockCellEntry[] entries = new MockCellEntry[]
            {
                new MockCellEntry(typeof(TableViewCellMock), 10),
                new MockCellEntry(typeof(TableViewCellMock), 15),
                new MockCellEntry(typeof(TableViewCellMock), 10),
                new MockCellEntry(typeof(TableViewCellMock), 15),
                new MockCellEntry(typeof(TableViewCellMock), 10),
                new MockCellEntry(typeof(TableViewCellMock), 15)
            };

            TableViewAdapter adapter = new TestCellsHeightTableAdapter(entries);

            TableViewMock table = new TableViewMock(320, 60);
            table.DataSource = adapter;
            table.Delegate = adapter;
            table.ReloadData();

            // descrease width
            for (int i = 0; i < entries.Length; ++i)
            {
                if (entries[i].height == 10)
                {
                    entries[i].height = 20;
                }
            }
            table.Resize(300, 60);

            AssertVisibleRows(table, 1, 2, 3, 4);
            Assert.AreEqual(30, table.ScrollPosTop);
            Assert.AreEqual(90, table.ScrollPosBottom);

            // increase width
            for (int i = 0; i < entries.Length; ++i)
            {
                if (entries[i].height == 20)
                {
                    entries[i].height = 10;
                }
            }
            table.Resize(320, 60);

            AssertVisibleRows(table, 0, 1, 2, 3, 4);
            Assert.AreEqual(0, table.ScrollPosTop);
            Assert.AreEqual(60, table.ScrollPosBottom);
        }
        public void TestReusableCells()
        {
            MockCellEntry[] cells =
            {
                new MockCellEntry(typeof(TableViewCellMock1), 10),
                new MockCellEntry(typeof(TableViewCellMock2), 10),
                new MockCellEntry(typeof(TableViewCellMock3), 10),
                new MockCellEntry(typeof(TableViewCellMock1), 10),
                new MockCellEntry(typeof(TableViewCellMock2), 10),
                new MockCellEntry(typeof(TableViewCellMock3), 10),
            };

            TableViewAdapter adapter = new TestCellsHeightTableAdapter(cells);

            TableViewMock table = new TableViewMock(320, 25);
            table.DataSource = adapter;
            table.Delegate = adapter;
            table.ReloadData();

            TableViewCell a1 = table.FirstVisibleCell;
            TableViewCell a2 = a1.NextCell;
            TableViewCell a3 = a2.NextCell;

            Assert.AreEqual(typeof(TableViewCellMock1), a1.GetType());
            Assert.AreEqual(typeof(TableViewCellMock2), a2.GetType());
            Assert.AreEqual(typeof(TableViewCellMock3), a3.GetType());

            table.Scroll(10);

            TableViewCell b1 = table.FirstVisibleCell;
            TableViewCell b2 = b1.NextCell;
            TableViewCell b3 = b2.NextCell;

            Assert.AreSame(a2, b1);
            Assert.AreSame(a3, b2);
            Assert.AreSame(a1, b3);

            table.Scroll(10);

            b1 = table.FirstVisibleCell;
            b2 = b1.NextCell;
            b3 = b2.NextCell;

            Assert.AreSame(a3, b1);
            Assert.AreSame(a1, b2);
            Assert.AreSame(a2, b3);

            table.Scroll(10);

            b1 = table.FirstVisibleCell;
            b2 = b1.NextCell;
            b3 = b2.NextCell;

            Assert.AreSame(a1, b1);
            Assert.AreSame(a2, b2);
            Assert.AreSame(a3, b3);

            table.Scroll(5);

            b1 = table.FirstVisibleCell;
            b2 = b1.NextCell;
            b3 = b2.NextCell;

            Assert.AreSame(a1, b1);
            Assert.AreSame(a2, b2);
            Assert.AreSame(a3, b3);

            table.Scroll(-5);

            b1 = table.FirstVisibleCell;
            b2 = b1.NextCell;
            b3 = b2.NextCell;

            Assert.AreSame(a1, b1);
            Assert.AreSame(a2, b2);
            Assert.AreSame(a3, b3);

            table.Scroll(-10);

            b1 = table.FirstVisibleCell;
            b2 = b1.NextCell;
            b3 = b2.NextCell;

            Assert.AreSame(a3, b1);
            Assert.AreSame(a1, b2);
            Assert.AreSame(a2, b3);

            table.Scroll(-10);

            b1 = table.FirstVisibleCell;
            b2 = b1.NextCell;
            b3 = b2.NextCell;

            Assert.AreSame(a2, b1);
            Assert.AreSame(a3, b2);
            Assert.AreSame(a1, b3);

            table.Scroll(-10);

            b1 = table.FirstVisibleCell;
            b2 = b1.NextCell;
            b3 = b2.NextCell;

            Assert.AreSame(a1, b1);
            Assert.AreSame(a2, b2);
            Assert.AreSame(a3, b3);

            Assert.AreEqual(1, TableViewCellMock1.instanceCount);
            Assert.AreEqual(1, TableViewCellMock2.instanceCount);
            Assert.AreEqual(1, TableViewCellMock3.instanceCount);
        }
        public void TestReusableCellsMultipleOccurrenceBigScroll()
        {
            MockCellEntry[] cells = new MockCellEntry[15];
            for (int i = 0; i < cells.Length; ++i)
            {
                cells[i] = new MockCellEntry(typeof(TableViewCellMock1), 10);
            };

            TableViewAdapter adapter = new TestCellsHeightTableAdapter(cells);

            TableViewMock table = new TableViewMock(320, 50);
            table.DataSource = adapter;
            table.Delegate = adapter;
            table.ReloadData();

            TableViewCell a1 = table.FirstVisibleCell;
            TableViewCell a2 = a1.NextCell;
            TableViewCell a3 = a2.NextCell;
            TableViewCell a4 = a3.NextCell;
            TableViewCell a5 = a4.NextCell;

            table.Scroll(100);

            TableViewCell b1 = table.FirstVisibleCell;
            TableViewCell b2 = b1.NextCell;
            TableViewCell b3 = b2.NextCell;
            TableViewCell b4 = b3.NextCell;
            TableViewCell b5 = b4.NextCell;

            Assert.AreSame(a1, b5);
            Assert.AreSame(a2, b4);
            Assert.AreSame(a3, b3);
            Assert.AreSame(a4, b2);
            Assert.AreSame(a5, b1);

            table.Scroll(-100);

            b1 = table.FirstVisibleCell;
            b2 = b1.NextCell;
            b3 = b2.NextCell;
            b4 = b3.NextCell;
            b5 = b4.NextCell;

            Assert.AreSame(a1, b1);
            Assert.AreSame(a2, b2);
            Assert.AreSame(a3, b3);
            Assert.AreSame(a4, b4);
            Assert.AreSame(a5, b5);

            Assert.AreEqual(5, TableViewCellMock1.instanceCount);
        }