public void ApplyTest2()
{
DataTable input = new DataTable("Sample data");
input.Columns.Add("Age", typeof(int));
input.Columns.Add("Classification", typeof(string));
for (int i = 0; i < 80; i++)
input.Rows.Add(i, 0);
for (int i = 0; i < 20; i++)
input.Rows.Add(i, 1);
{
Grouping target = new Grouping();
target.Proportion = 0.2;
DataTable actual = target.Apply(input);
DataRow[] a = actual.Select("Group = 0");
DataRow[] b = actual.Select("Group = 1");
Assert.AreEqual(20, a.Length);
Assert.AreEqual(80, b.Length);
}
{
Grouping target = new Grouping();
target.Proportion = 0.5;
DataTable actual = target.Apply(input);
DataRow[] a = actual.Select("Group = 0");
DataRow[] b = actual.Select("Group = 1");
Assert.AreEqual(50, a.Length);
Assert.AreEqual(50, b.Length);
}
{
Grouping target = new Grouping();
target.Columns.Add(new Grouping.Options("Classification"));
target.Proportion = 0.5;
DataTable actual = target.Apply(input);
DataRow[] a = actual.Select("Group = 0");
DataRow[] b = actual.Select("Group = 1");
Assert.AreEqual(50, a.Length);
Assert.AreEqual(50, b.Length);
DataRow[] a0 = actual.Select("Group = 0 AND Classification = 0");
DataRow[] a1 = actual.Select("Group = 0 AND Classification = 1");
DataRow[] b0 = actual.Select("Group = 1 AND Classification = 0");
DataRow[] b1 = actual.Select("Group = 1 AND Classification = 1");
Assert.AreEqual(40, a0.Length);
Assert.AreEqual(10, a1.Length);
Assert.AreEqual(40, b0.Length);
Assert.AreEqual(10, b1.Length);
}
{
Grouping target = new Grouping();
target.Columns.Add(new Grouping.Options("Classification"));
target.Proportion = 0.6;
DataTable actual = target.Apply(input);
DataRow[] a = actual.Select("Group = 0");
DataRow[] b = actual.Select("Group = 1");
Assert.AreEqual(60, a.Length);
Assert.AreEqual(40, b.Length);
DataRow[] a0 = actual.Select("Group = 0 AND Classification = 0");
DataRow[] a1 = actual.Select("Group = 0 AND Classification = 1");
DataRow[] b0 = actual.Select("Group = 1 AND Classification = 0");
DataRow[] b1 = actual.Select("Group = 1 AND Classification = 1");
Assert.AreEqual(48, a0.Length);
Assert.AreEqual(12, a1.Length);
Assert.AreEqual(32, b0.Length);
Assert.AreEqual(8, b1.Length);
}
}