System.Data.Tests.DataColumnTest.Aggregation_CheckIfChangesDynamically C# (CSharp) Method

Aggregation_CheckIfChangesDynamically() private method

private Aggregation_CheckIfChangesDynamically ( ) : void
return void
        public void Aggregation_CheckIfChangesDynamically()
        {
            DataTable table = new DataTable();

            table.Columns.Add("test", typeof(int));
            table.Columns.Add("result_count", typeof(int), "count(test)");
            table.Columns.Add("result_sum", typeof(int), "sum(test)");
            table.Columns.Add("result_avg", typeof(int), "avg(test)");
            table.Columns.Add("result_max", typeof(int), "max(test)");
            table.Columns.Add("result_min", typeof(int), "min(test)");
            table.Columns.Add("result_var", typeof(double), "var(test)");
            table.Columns.Add("result_stdev", typeof(double), "stdev(test)");

            // Adding the rows after all the expression columns are added
            table.Rows.Add(new object[] { 0 });
            Assert.Equal(1, table.Rows[0]["result_count"]);
            Assert.Equal(0, table.Rows[0]["result_sum"]);
            Assert.Equal(0, table.Rows[0]["result_avg"]);
            Assert.Equal(0, table.Rows[0]["result_max"]);
            Assert.Equal(0, table.Rows[0]["result_min"]);
            Assert.Equal(DBNull.Value, table.Rows[0]["result_var"]);
            Assert.Equal(DBNull.Value, table.Rows[0]["result_stdev"]);

            table.Rows.Add(new object[] { 1 });
            table.Rows.Add(new object[] { -2 });

            // Check if the aggregate columns are updated correctly
            Assert.Equal(3, table.Rows[0]["result_count"]);
            Assert.Equal(-1, table.Rows[0]["result_sum"]);
            Assert.Equal(0, table.Rows[0]["result_avg"]);
            Assert.Equal(1, table.Rows[0]["result_max"]);
            Assert.Equal(-2, table.Rows[0]["result_min"]);
            Assert.Equal((7.0 / 3), table.Rows[0]["result_var"]);
            Assert.Equal(Math.Sqrt(7.0 / 3), table.Rows[0]["result_stdev"]);
        }