public void TestWithCalculatedColumns() { var baseTable = TestTableHelper.CreateReactiveTable(); var groupedTable = new AggregatedTable(baseTable); var column = groupedTable.GroupBy <string>(TestTableColumns.StringColumn); var rowUpdates = new RowUpdateHandler(); groupedTable.Subscribe(rowUpdates); var colUpdates = new ColumnUpdateHandler(); groupedTable.Subscribe(colUpdates.OnColumnUpdate); var groupedColumn = (IReactiveColumn <string>)column; const string groupedCalc1 = "Grouped.Calc1"; groupedTable.AddColumn(new ReactiveCalculatedColumn1 <string, string>(groupedCalc1, groupedColumn, s => s + "Calc")); var row1 = baseTable.AddRow(); baseTable.SetValue(TestTableColumns.StringColumn, row1, "Value1"); Assert.AreEqual(1, groupedTable.RowCount); Assert.AreEqual(1, rowUpdates.CurrentRowCount); Assert.AreEqual("Value1", groupedTable.GetValue <string>(TestTableColumns.StringColumn, colUpdates.LastRowUpdated)); Assert.AreEqual("Value1Calc", groupedTable.GetValue <string>(groupedCalc1, colUpdates.LastRowUpdated)); var row2 = baseTable.AddRow(); baseTable.SetValue(TestTableColumns.StringColumn, row2, "Value3"); Assert.AreEqual(2, groupedTable.RowCount); Assert.AreEqual(2, rowUpdates.CurrentRowCount); Assert.AreEqual("Value3", groupedTable.GetValue <string>(TestTableColumns.StringColumn, colUpdates.LastRowUpdated)); Assert.AreEqual("Value3Calc", groupedTable.GetValue <string>(groupedCalc1, colUpdates.LastRowUpdated)); var row3 = baseTable.AddRow(); baseTable.SetValue(TestTableColumns.StringColumn, row3, "Value3"); Assert.AreEqual(2, groupedTable.RowCount); Assert.AreEqual(2, rowUpdates.CurrentRowCount); Assert.AreEqual("Value3", groupedTable.GetValue <string>(TestTableColumns.StringColumn, colUpdates.LastRowUpdated)); Assert.AreEqual("Value3Calc", groupedTable.GetValue <string>(groupedCalc1, colUpdates.LastRowUpdated)); baseTable.SetValue(TestTableColumns.StringColumn, row1, "Value2"); Assert.AreEqual(2, groupedTable.RowCount); Assert.AreEqual(2, rowUpdates.CurrentRowCount); Assert.AreEqual("Value2", groupedTable.GetValue <string>(TestTableColumns.StringColumn, colUpdates.LastRowUpdated)); Assert.AreEqual("Value2Calc", groupedTable.GetValue <string>(groupedCalc1, colUpdates.LastRowUpdated)); }