public void Remove()
{
//prepare a DataSet with DataTable to be checked
DataTable dtSource = new DataTable();
dtSource.Columns.Add("Col_0", typeof(int));
dtSource.Columns.Add("Col_1", typeof(int));
dtSource.Columns.Add("Col_2", typeof(int));
dtSource.Rows.Add(new object[] { 0, 1, 2 });
DataTable dt = null;
//------Check Remove first column---------
dt = dtSource.Clone();
dt.ImportRow(dtSource.Rows[0]);
dt.Columns.Remove(dt.Columns[0].ColumnName);
Assert.Equal(2, dt.Columns.Count);
Assert.Equal(false, dt.Columns.Contains("Col_0"));
Assert.Equal(1, dt.Rows[0][0]);
Assert.Equal(2, dt.Rows[0][1]);
//------Check Remove middle column---------
dt = dtSource.Clone();
dt.ImportRow(dtSource.Rows[0]);
dt.Columns.Remove(dt.Columns[1].ColumnName);
Assert.Equal(2, dt.Columns.Count);
Assert.Equal(false, dt.Columns.Contains("Col_1"));
Assert.Equal(0, dt.Rows[0][0]);
Assert.Equal(2, dt.Rows[0][1]);
//------Check Remove last column---------
dt = dtSource.Clone();
dt.ImportRow(dtSource.Rows[0]);
dt.Columns.Remove(dt.Columns[2].ColumnName);
Assert.Equal(2, dt.Columns.Count);
Assert.Equal(false, dt.Columns.Contains("Col_2"));
Assert.Equal(0, dt.Rows[0][0]);
Assert.Equal(1, dt.Rows[0][1]);
//------Check Remove column exception---------
dt = dtSource.Clone();
dt.ImportRow(dtSource.Rows[0]);
Assert.Throws<ArgumentException>(() =>
{
dt.Columns.Remove("NotExist");
});
dt.Columns.Clear();
Assert.Throws<ArgumentException>(() =>
{
dt.Columns.Remove("Col_0");
});
}