public void Expression_Aggregate()
{
DataTable dt = DataProvider.CreateParentDataTable();
//Simple expression --> aggregate
DataColumn dc = new DataColumn("expr", Type.GetType("System.Decimal"));
dt.Columns.Add(dc);
dt.Columns["expr"].Expression = "sum(" + dt.Columns[0].ColumnName + ") + count(" + dt.Columns[0].ColumnName + ")";
dt.Columns["expr"].Expression += " + avg(" + dt.Columns[0].ColumnName + ") + Min(" + dt.Columns[0].ColumnName + ")";
//Check the values
double temp;
string str;
double sum = Convert.ToDouble(dt.Compute("sum(" + dt.Columns[0].ColumnName + ")", string.Empty));
double count = Convert.ToDouble(dt.Compute("count(" + dt.Columns[0].ColumnName + ")", string.Empty));
double avg = Convert.ToDouble(dt.Compute("avg(" + dt.Columns[0].ColumnName + ")", string.Empty));
double min = Convert.ToDouble(dt.Compute("min(" + dt.Columns[0].ColumnName + ")", string.Empty));
str = (sum + count + avg + min).ToString();
foreach (DataRow dr in dt.Rows)
{
if (str.Length > 3)
{
temp = Convert.ToDouble(str.Substring(0, 4));
}
else
{
temp = Convert.ToDouble(str);
}
Assert.Equal(temp, Convert.ToDouble(dr["expr"]));
}
}