public void TestAdd()
        {
            var source       = TestTableHelper.CreateReactiveTable();
            var target       = TestTableHelper.CreateReactiveTable();
            var synchroniser = new TableSynchroniser(source, target, new DefaultThreadMarshaller());

            var updateHandler = new RowUpdateHandler();

            target.RowUpdates().Subscribe(updateHandler.OnRowUpdate);

            var sourceRow1 = source.AddRow();

            Assert.AreEqual(1, target.RowCount);

            TestTableHelper.SetAndTestValue(source, target, sourceRow1, updateHandler.LastRowUpdated, 101, TestTableColumns.IdColumn);
            TestTableHelper.SetAndTestValue(source, target, sourceRow1, updateHandler.LastRowUpdated, "Blah", TestTableColumns.StringColumn);
            TestTableHelper.SetAndTestValue(source, target, sourceRow1, updateHandler.LastRowUpdated, 4324m, TestTableColumns.DecimalColumn);

            var sourceRow2 = source.AddRow();

            Assert.AreEqual(2, target.RowCount);

            TestTableHelper.SetAndTestValue(source, target, sourceRow2, updateHandler.LastRowUpdated, 102, TestTableColumns.IdColumn);
            TestTableHelper.SetAndTestValue(source, target, sourceRow2, updateHandler.LastRowUpdated, "Blah2", TestTableColumns.StringColumn);
            TestTableHelper.SetAndTestValue(source, target, sourceRow2, updateHandler.LastRowUpdated, 42m, TestTableColumns.DecimalColumn);
        }
Esempio n. 2
0
        public void TestUpdateOnlyLastValue()
        {
            var target = TestTableHelper.CreateReactiveTable();
            var source = new ReactiveBatchedPassThroughTable(target, new DefaultThreadMarshaller(), true);

            var rowUpdates = new RowUpdateHandler();

            target.RowUpdates().Subscribe(rowUpdates.OnRowUpdate);
            var columnUpdates = new ColumnUpdateHandler();

            target.ColumnUpdates().Subscribe(columnUpdates.OnColumnUpdate);

            TestAdd(source, target, rowUpdates);

            columnUpdates.LastColumnsUpdated.Clear();

            source.SetValue(TestTableColumns.StringColumn, 0, "Changed");
            Assert.AreEqual("Blah", target.GetValue <string>(TestTableColumns.StringColumn, 0));
            source.SetValue(TestTableColumns.StringColumn, 0, "Changed2");
            Assert.AreEqual("Blah", target.GetValue <string>(TestTableColumns.StringColumn, 0));

            source.SynchroniseChanges();

            // Check that there was only one col update fro the StringColumn
            Assert.AreEqual(1, columnUpdates.LastColumnsUpdated.Count);
            Assert.AreEqual(columnUpdates.LastColumnsUpdated.Last(), TestTableColumns.StringColumn);
            // And that the value is the last one
            Assert.AreEqual("Changed2", target.GetValue <string>(TestTableColumns.StringColumn, 0));
        }
Esempio n. 3
0
        private static void TestAdd(ReactiveBatchedPassThroughTable source, ReactiveTable target, RowUpdateHandler updateHandler)
        {
            var sourceRow1 = source.AddRow();

            Assert.AreEqual(0, target.RowCount);

            TestTableHelper.SetAndTestValueNotPresent(source, target, sourceRow1, updateHandler.LastRowUpdated, 101, TestTableColumns.IdColumn);
            TestTableHelper.SetAndTestValueNotPresent(source, target, sourceRow1, updateHandler.LastRowUpdated, "Blah", TestTableColumns.StringColumn);
            TestTableHelper.SetAndTestValueNotPresent(source, target, sourceRow1, updateHandler.LastRowUpdated, 4324m, TestTableColumns.DecimalColumn);

            var sourceRow2 = source.AddRow();

            Assert.AreEqual(0, target.RowCount);

            TestTableHelper.SetAndTestValueNotPresent(source, target, sourceRow2, updateHandler.LastRowUpdated, 102, TestTableColumns.IdColumn);
            TestTableHelper.SetAndTestValueNotPresent(source, target, sourceRow2, updateHandler.LastRowUpdated, "Blah2", TestTableColumns.StringColumn);
            TestTableHelper.SetAndTestValueNotPresent(source, target, sourceRow2, updateHandler.LastRowUpdated, 42m, TestTableColumns.DecimalColumn);

            source.SynchroniseChanges();
            Assert.AreEqual(2, target.RowCount);

            TestTableHelper.TestValue(target, updateHandler.RowsUpdated[0], 101, TestTableColumns.IdColumn);
            TestTableHelper.TestValue(target, updateHandler.RowsUpdated[0], "Blah", TestTableColumns.StringColumn);
            TestTableHelper.TestValue(target, updateHandler.RowsUpdated[0], 4324m, TestTableColumns.DecimalColumn);

            TestTableHelper.TestValue(target, updateHandler.RowsUpdated[1], 102, TestTableColumns.IdColumn);
            TestTableHelper.TestValue(target, updateHandler.RowsUpdated[1], "Blah2", TestTableColumns.StringColumn);
            TestTableHelper.TestValue(target, updateHandler.RowsUpdated[1], 42m, TestTableColumns.DecimalColumn);
        }
Esempio n. 4
0
        public void TestDelete()
        {
            var target = TestTableHelper.CreateReactiveTable();
            var source = new ReactiveBatchedPassThroughTable(target, new DefaultThreadMarshaller());

            var updateHandler = new RowUpdateHandler();

            target.RowUpdates().Subscribe(updateHandler.OnRowUpdate);

            TestAdd(source, target, updateHandler);

            source.DeleteRow(0);
            Assert.AreEqual(2, target.RowCount);

            source.SynchroniseChanges();
            Assert.AreEqual(1, target.RowCount);
            Assert.AreEqual(102, target.GetValue <int>(TestTableColumns.IdColumn, 1));

            source.DeleteRow(1);
            Assert.AreEqual(1, target.RowCount);

            source.SynchroniseChanges();
            Assert.AreEqual(0, target.RowCount);

            source.AddRow();
            Assert.AreEqual(0, target.RowCount);

            source.SynchroniseChanges();
            Assert.AreEqual(1, target.RowCount);
        }
Esempio n. 5
0
        public void TestAdd()
        {
            var target = TestTableHelper.CreateReactiveTable();
            var source = new ReactiveBatchedPassThroughTable(target, new DefaultThreadMarshaller());

            var updateHandler = new RowUpdateHandler();

            target.RowUpdates().Subscribe(updateHandler.OnRowUpdate);

            TestAdd(source, target, updateHandler);
        }
Esempio n. 6
0
        public void TestSearchMultipleRows()
        {
            var table = TestTableHelper.CreateIndexedReactiveTable();

            var addedRowIndex1 = table.AddRow();

            table.SetValue(TestTableColumns.IdColumn, addedRowIndex1, 1);
            table.SetValue(TestTableColumns.StringColumn, addedRowIndex1, "blah");
            table.SetValue(TestTableColumns.DecimalColumn, addedRowIndex1, 324.34m);

            var addedRowIndex2 = table.AddRow();

            table.SetValue(TestTableColumns.IdColumn, addedRowIndex2, 2);
            Assert.Throws <InvalidOperationException>(() => table.SetValue(TestTableColumns.StringColumn, addedRowIndex2, "blah"));
        }
Esempio n. 7
0
        public void TestAdd()
        {
            var table = TestTableHelper.CreateReactiveTable();

            var rowId1 = table.AddRow();

            Assert.AreEqual(1, table.RowCount);
            TestTableHelper.SetAndTestValue(table, rowId1, 123, TestTableColumns.IdColumn);
            TestTableHelper.SetAndTestValue(table, rowId1, "Hello", TestTableColumns.StringColumn);
            TestTableHelper.SetAndTestValue(table, rowId1, 321m, TestTableColumns.DecimalColumn);

            var rowId2 = table.AddRow();

            Assert.AreEqual(2, table.RowCount);
            TestTableHelper.SetAndTestValue(table, rowId2, 1234, TestTableColumns.IdColumn);
            TestTableHelper.SetAndTestValue(table, rowId2, "Hello 12", TestTableColumns.StringColumn);
            TestTableHelper.SetAndTestValue(table, rowId2, 3214m, TestTableColumns.DecimalColumn);
        }
//        [Test]
        public void TestDelete()
        {
            var source       = TestTableHelper.CreateReactiveTable();
            var target       = TestTableHelper.CreateReactiveTable();
            var synchroniser = new BatchedTableSynchroniser(source, target, new DefaultThreadMarshaller(), TimeSpan.FromMilliseconds(delay));

            var updateHandler = new RowUpdateHandler();

            target.RowUpdates().Subscribe(updateHandler.OnRowUpdate);

            var sourceRow1 = source.AddRow();

            Assert.AreEqual(1, target.RowCount);

            TestTableHelper.SetAndTestValue(source, target, sourceRow1, updateHandler.LastRowUpdated, 101, TestTableColumns.IdColumn);
            TestTableHelper.SetAndTestValue(source, target, sourceRow1, updateHandler.LastRowUpdated, "Blah", TestTableColumns.StringColumn);
            TestTableHelper.SetAndTestValue(source, target, sourceRow1, updateHandler.LastRowUpdated, 4324m, TestTableColumns.DecimalColumn);

            var sourceRow2 = source.AddRow();

            Assert.AreEqual(2, target.RowCount);

            var targetRow2 = updateHandler.LastRowUpdated;

            TestTableHelper.SetAndTestValue(source, target, sourceRow2, updateHandler.LastRowUpdated, 102, TestTableColumns.IdColumn);
            TestTableHelper.SetAndTestValue(source, target, sourceRow2, updateHandler.LastRowUpdated, "Blah2", TestTableColumns.StringColumn);
            TestTableHelper.SetAndTestValue(source, target, sourceRow2, updateHandler.LastRowUpdated, 42m, TestTableColumns.DecimalColumn);

            source.DeleteRow(sourceRow1);
            Assert.AreEqual(1, target.RowCount);
            Assert.AreEqual(102, target.GetValue <int>(TestTableColumns.IdColumn, targetRow2));

            source.DeleteRow(sourceRow2);
            Assert.AreEqual(0, target.RowCount);

            var sourceRow3 = source.AddRow();

            Assert.AreEqual(1, target.RowCount);

            TestTableHelper.SetAndTestValue(source, target, sourceRow3, updateHandler.LastRowUpdated, 101, TestTableColumns.IdColumn);
            TestTableHelper.SetAndTestValue(source, target, sourceRow3, updateHandler.LastRowUpdated, "Blah", TestTableColumns.StringColumn);
            TestTableHelper.SetAndTestValue(source, target, sourceRow3, updateHandler.LastRowUpdated, 4324m, TestTableColumns.DecimalColumn);
        }
Esempio n. 9
0
        public void TestUpdate()
        {
            var target = TestTableHelper.CreateReactiveTable();
            var source = new ReactiveBatchedPassThroughTable(target, new DefaultThreadMarshaller());

            var rowUpdates = new RowUpdateHandler();

            target.RowUpdates().Subscribe(rowUpdates.OnRowUpdate);
            var columnUpdates = new ColumnUpdateHandler();

            target.ColumnUpdates().Subscribe(columnUpdates.OnColumnUpdate);

            TestAdd(source, target, rowUpdates);

            source.SetValue(TestTableColumns.StringColumn, 0, "Changed");
            Assert.AreEqual("Blah", target.GetValue <string>(TestTableColumns.StringColumn, 0));

            source.SynchroniseChanges();

            Assert.AreEqual("Changed", target.GetValue <string>(TestTableColumns.StringColumn, 0));
        }
        public void TestAdd()
        {
            var source       = TestTableHelper.CreateReactiveTable();
            var target       = TestTableHelper.CreateReactiveTable();
            var synchroniser = new BatchedTableSynchroniser(source, target, new DefaultThreadMarshaller(), TimeSpan.FromMilliseconds(delay));

            var updateHandler = new RowUpdateHandler();

            target.RowUpdates().Subscribe(updateHandler.OnRowUpdate);

            var sourceRow1 = source.AddRow();

            Assert.AreEqual(0, target.RowCount);

            TestTableHelper.SetAndTestValueNotPresent(source, target, sourceRow1, updateHandler.LastRowUpdated, 101, TestTableColumns.IdColumn);
            TestTableHelper.SetAndTestValueNotPresent(source, target, sourceRow1, updateHandler.LastRowUpdated, "Blah", TestTableColumns.StringColumn);
            TestTableHelper.SetAndTestValueNotPresent(source, target, sourceRow1, updateHandler.LastRowUpdated, 4324m, TestTableColumns.DecimalColumn);

            var sourceRow2 = source.AddRow();

            Assert.AreEqual(0, target.RowCount);

            TestTableHelper.SetAndTestValueNotPresent(source, target, sourceRow2, updateHandler.LastRowUpdated, 102, TestTableColumns.IdColumn);
            TestTableHelper.SetAndTestValueNotPresent(source, target, sourceRow2, updateHandler.LastRowUpdated, "Blah2", TestTableColumns.StringColumn);
            TestTableHelper.SetAndTestValueNotPresent(source, target, sourceRow2, updateHandler.LastRowUpdated, 42m, TestTableColumns.DecimalColumn);

            Thread.Sleep(delay + 50);
            Assert.AreEqual(2, target.RowCount);

            TestTableHelper.TestValue(target, updateHandler.RowsUpdated[0], 101, TestTableColumns.IdColumn);
            TestTableHelper.TestValue(target, updateHandler.RowsUpdated[0], "Blah", TestTableColumns.StringColumn);
            TestTableHelper.TestValue(target, updateHandler.RowsUpdated[0], 4324m, TestTableColumns.DecimalColumn);

            TestTableHelper.TestValue(target, updateHandler.RowsUpdated[1], 102, TestTableColumns.IdColumn);
            TestTableHelper.TestValue(target, updateHandler.RowsUpdated[1], "Blah2", TestTableColumns.StringColumn);
            TestTableHelper.TestValue(target, updateHandler.RowsUpdated[1], 42m, TestTableColumns.DecimalColumn);
        }