public void SimpleTest()
        {
            TableSchema schema = new TableSchema("SimpleTest");

            schema.Columns.AddValueColumn("Index", typeof(int), null);
            schema.Columns.AddCalculatedColumn("FP", row => (int)Math.Pow(row.Field <int>("Index"), 1.5));

            var table = new Table(schema);

            for (int i = 0; i < 10; i++)
            {
                table.Rows.AddFromValues(i);
            }
            Assert.AreEqual(10, table.Rows.Count);
            var halfView = new VerifyableFilteredTable <Row>(table, row => row.Field <int>("Index") % 2 == 1);

            halfView.Verify();

            table.Rows[1]["Index"] = 0;
            Assert.AreEqual(4, halfView.Rows.Count);
            halfView.Verify();
            table.Rows[3].RemoveRow();
            Assert.AreEqual(3, halfView.Rows.Count);
            halfView.Verify();
            table.Rows.AddFromValues(13);
            Assert.AreEqual(4, halfView.Rows.Count);
            halfView.Verify();
        }
        public void RescanTest()
        {
            int mod = 3;

            TableSchema schema = new TableSchema("SimpleTest");

            schema.Columns.AddValueColumn("Index", typeof(int), null);
            schema.Columns.AddCalculatedColumn("FP", row => (int)Math.Pow(row.Field <int>("Index"), 1.5));

            var table = new Table(schema);

            for (int i = 0; i < 100; i++)
            {
                table.Rows.AddFromValues(i);
            }

            var view = new VerifyableFilteredTable <Row>(table, row => row.Field <int>("Index") % mod == 0);

            view.Verify();

            mod *= 2;
            view.Rescan();
            view.Verify();

            mod /= 2;
            view.Rescan();
            view.Verify();

            mod = 23;
            view.Rescan();
            view.Verify();

            mod = 5;
            view.Rescan();
            view.Verify();
        }