public void Add()
{
DataColumn dc = null;
DataTable dt = new DataTable();
//----------------------------- check default --------------------
dc = dt.Columns.Add();
// Add column 1
Assert.Equal("Column1", dc.ColumnName);
// Add column 2
dc = dt.Columns.Add();
Assert.Equal("Column2", dc.ColumnName);
dc = dt.Columns.Add();
// Add column 3
Assert.Equal("Column3", dc.ColumnName);
dc = dt.Columns.Add();
// Add column 4
Assert.Equal("Column4", dc.ColumnName);
dc = dt.Columns.Add();
// Add column 5
Assert.Equal("Column5", dc.ColumnName);
Assert.Equal(5, dt.Columns.Count);
//----------------------------- check Add/Remove from begining --------------------
dt = initTable();
dt.Columns.Remove(dt.Columns[0]);
dt.Columns.Remove(dt.Columns[0]);
dt.Columns.Remove(dt.Columns[0]);
// check column 4 - remove - from begining
Assert.Equal("Column4", dt.Columns[0].ColumnName);
// check column 5 - remove - from begining
Assert.Equal("Column5", dt.Columns[1].ColumnName);
Assert.Equal(2, dt.Columns.Count);
dt.Columns.Add();
dt.Columns.Add();
dt.Columns.Add();
dt.Columns.Add();
// check column 0 - Add new - from begining
Assert.Equal("Column4", dt.Columns[0].ColumnName);
// check column 1 - Add new - from begining
Assert.Equal("Column5", dt.Columns[1].ColumnName);
// check column 2 - Add new - from begining
Assert.Equal("Column6", dt.Columns[2].ColumnName);
// check column 3 - Add new - from begining
Assert.Equal("Column7", dt.Columns[3].ColumnName);
// check column 4 - Add new - from begining
Assert.Equal("Column8", dt.Columns[4].ColumnName);
// check column 5 - Add new - from begining
Assert.Equal("Column9", dt.Columns[5].ColumnName);
//----------------------------- check Add/Remove from middle --------------------
dt = initTable();
dt.Columns.Remove(dt.Columns[2]);
dt.Columns.Remove(dt.Columns[2]);
dt.Columns.Remove(dt.Columns[2]);
// check column 0 - remove - from Middle
Assert.Equal("Column1", dt.Columns[0].ColumnName);
// check column 1 - remove - from Middle
Assert.Equal("Column2", dt.Columns[1].ColumnName);
dt.Columns.Add();
dt.Columns.Add();
dt.Columns.Add();
dt.Columns.Add();
// check column 0 - Add new - from Middle
Assert.Equal("Column1", dt.Columns[0].ColumnName);
// check column 1 - Add new - from Middle
Assert.Equal("Column2", dt.Columns[1].ColumnName);
// check column 2 - Add new - from Middle
Assert.Equal("Column3", dt.Columns[2].ColumnName);
// check column 3 - Add new - from Middle
Assert.Equal("Column4", dt.Columns[3].ColumnName);
// check column 4 - Add new - from Middle
Assert.Equal("Column5", dt.Columns[4].ColumnName);
// check column 5 - Add new - from Middle
Assert.Equal("Column6", dt.Columns[5].ColumnName);
//----------------------------- check Add/Remove from end --------------------
dt = initTable();
dt.Columns.Remove(dt.Columns[4]);
dt.Columns.Remove(dt.Columns[3]);
dt.Columns.Remove(dt.Columns[2]);
// check column 0 - remove - from end
Assert.Equal("Column1", dt.Columns[0].ColumnName);
// check column 1 - remove - from end
Assert.Equal("Column2", dt.Columns[1].ColumnName);
dt.Columns.Add();
dt.Columns.Add();
dt.Columns.Add();
dt.Columns.Add();
// check column 0 - Add new - from end
Assert.Equal("Column1", dt.Columns[0].ColumnName);
// check column 1 - Add new - from end
Assert.Equal("Column2", dt.Columns[1].ColumnName);
// check column 2 - Add new - from end
Assert.Equal("Column3", dt.Columns[2].ColumnName);
// check column 3 - Add new - from end
Assert.Equal("Column4", dt.Columns[3].ColumnName);
// check column 4 - Add new - from end
Assert.Equal("Column5", dt.Columns[4].ColumnName);
// check column 5 - Add new - from end
Assert.Equal("Column6", dt.Columns[5].ColumnName);
}