System.Data.Tests.DataColumnTest2.Expression_AggregateRelation C# (CSharp) Method

Expression_AggregateRelation() private method

private Expression_AggregateRelation ( ) : void
return void
        public void Expression_AggregateRelation()
        {
            DataTable parent = DataProvider.CreateParentDataTable();
            DataTable child = DataProvider.CreateChildDataTable();
            var ds = new DataSet();
            ds.Tables.Add(parent);
            ds.Tables.Add(child);

            ds.Relations.Add("Relation1", parent.Columns[0], child.Columns[0], false);

            //Create the computed columns 

            DataColumn dcComputedParent = new DataColumn("computedParent", Type.GetType("System.Double"));
            parent.Columns.Add(dcComputedParent);
            dcComputedParent.Expression = "sum(child(Relation1)." + child.Columns[1].ColumnName + ")";

            double preCalculatedExpression;

            foreach (DataRow dr in parent.Rows)
            {
                object o = child.Compute("sum(" + child.Columns[1].ColumnName + ")",
                    parent.Columns[0].ColumnName + "=" + dr[0]);
                if (o == DBNull.Value)
                {
                    Assert.Equal(dr["computedParent"], o);
                }
                else
                {
                    preCalculatedExpression = Convert.ToDouble(o);
                    Assert.Equal(dr["computedParent"], preCalculatedExpression);
                }
            }

            DataColumn dcComputedChild = new DataColumn("computedChild", Type.GetType("System.Double"));
            child.Columns.Add(dcComputedChild);
            dcComputedChild.Expression = "Parent." + parent.Columns[0].ColumnName;

            int index = 0;
            double val;
            foreach (DataRow dr in child.Rows)
            {
                val = Convert.ToDouble(dr.GetParentRow("Relation1")[0]);
                Assert.Equal(dr["computedChild"], val);
                index++;
            }
        }