public void CloneCopyTest()
{
DataTable table = new DataTable();
table.TableName = "Table#1";
DataTable table1 = new DataTable();
table1.TableName = "Table#2";
table.AcceptChanges();
DataSet set = new DataSet("Data Set#1");
set.DataSetName = "Dataset#1";
set.Tables.Add(table);
set.Tables.Add(table1);
DataColumn col = new DataColumn();
col.ColumnName = "Id";
col.DataType = typeof(int);
table.Columns.Add(col);
UniqueConstraint uc = new UniqueConstraint("UK1", table.Columns[0]);
table.Constraints.Add(uc);
col = new DataColumn();
col.ColumnName = "Id";
col.DataType = typeof(int);
table1.Columns.Add(col);
col = new DataColumn();
col.ColumnName = "Name";
col.DataType = typeof(string);
table.Columns.Add(col);
col = new DataColumn();
col.ColumnName = "Name";
col.DataType = typeof(string);
table1.Columns.Add(col);
DataRow row = table.NewRow();
row["Id"] = 147;
row["name"] = "Abc";
row.RowError = "Error#1";
table.Rows.Add(row);
row = table.NewRow();
row["Id"] = 47;
row["name"] = "Efg";
table.Rows.Add(row);
table.AcceptChanges();
table.CaseSensitive = true;
table1.CaseSensitive = true;
table.MinimumCapacity = 100;
table.Prefix = "PrefixNo:1";
table.Namespace = "Namespace#1";
table.DisplayExpression = "Id / Name + (Id * Id)";
DataColumn[] colArray = { table.Columns[0] };
table.PrimaryKey = colArray;
table.ExtendedProperties.Add("TimeStamp", DateTime.Now);
row = table1.NewRow();
row["Name"] = "Abc";
row["Id"] = 147;
table1.Rows.Add(row);
row = table1.NewRow();
row["Id"] = 47;
row["Name"] = "Efg";
table1.Rows.Add(row);
DataRelation dr = new DataRelation("DR", table.Columns[0], table1.Columns[0]);
set.Relations.Add(dr);
//Testing properties of clone
DataTable cloneTable = table.Clone();
Assert.True(cloneTable.CaseSensitive);
Assert.Equal(0, cloneTable.ChildRelations.Count);
Assert.Equal(0, cloneTable.ParentRelations.Count);
Assert.Equal(2, cloneTable.Columns.Count);
Assert.Equal(1, cloneTable.Constraints.Count);
Assert.Equal("Id / Name + (Id * Id)", cloneTable.DisplayExpression);
Assert.Equal(1, cloneTable.ExtendedProperties.Count);
Assert.False(cloneTable.HasErrors);
Assert.Equal(100, cloneTable.MinimumCapacity);
Assert.Equal("Namespace#1", cloneTable.Namespace);
Assert.Equal("PrefixNo:1", cloneTable.Prefix);
Assert.Equal("Id", cloneTable.PrimaryKey[0].ColumnName);
Assert.Equal(0, cloneTable.Rows.Count);
Assert.Equal("Table#1", cloneTable.TableName);
//Testing properties of copy
DataTable copyTable = table.Copy();
Assert.True(copyTable.CaseSensitive);
Assert.Equal(0, copyTable.ChildRelations.Count);
Assert.Equal(0, copyTable.ParentRelations.Count);
Assert.Equal(2, copyTable.Columns.Count);
Assert.Equal(1, copyTable.Constraints.Count);
Assert.Equal("Id / Name + (Id * Id)", copyTable.DisplayExpression);
Assert.Equal(1, copyTable.ExtendedProperties.Count);
Assert.True(copyTable.HasErrors);
Assert.Equal(100, copyTable.MinimumCapacity);
Assert.Equal("Namespace#1", copyTable.Namespace);
Assert.Equal("PrefixNo:1", copyTable.Prefix);
Assert.Equal("Id", copyTable.PrimaryKey[0].ColumnName);
Assert.Equal(2, copyTable.Rows.Count);
Assert.Equal("Table#1", copyTable.TableName);
}