public void CopyTo()
{
//create the source datatable
DataTable dt = DataProvider.CreateChildDataTable();
//create the dataview for the table
DataView dv = new DataView(dt);
DataRowView[] drvExpected = null;
DataRowView[] drvResult = null;
// ------- Copy from Index=0
drvExpected = new DataRowView[dv.Count];
for (int i = 0; i < dv.Count; i++)
{
drvExpected[i] = dv[i];
}
drvResult = new DataRowView[dv.Count];
// CopyTo from index 0
dv.CopyTo(drvResult, 0);
Assert.Equal(drvResult, drvExpected);
// ------- Copy from Index=3
drvExpected = new DataRowView[dv.Count + 3];
for (int i = 0; i < dv.Count; i++)
{
drvExpected[i + 3] = dv[i];
}
drvResult = new DataRowView[dv.Count + 3];
// CopyTo from index 3
dv.CopyTo(drvResult, 3);
Assert.Equal(drvResult, drvExpected);
// ------- Copy from Index=3,larger array
drvExpected = new DataRowView[dv.Count + 9];
for (int i = 0; i < dv.Count; i++)
{
drvExpected[i + 3] = dv[i];
}
drvResult = new DataRowView[dv.Count + 9];
// CopyTo from index 3,larger array
dv.CopyTo(drvResult, 3);
Assert.Equal(drvResult, drvExpected);
// ------- CopyTo smaller array, check exception
drvResult = new DataRowView[dv.Count - 1];
// CopyTo smaller array, check exception
Assert.Throws<IndexOutOfRangeException>(() =>
{
dv.CopyTo(drvResult, 0);
});
}