private void VerifyTableSchema(DataTable table, string tableName, DataSet ds)
{
//Test Schema
//Check Properties of Table
Assert.Equal(string.Empty, table.Namespace);
Assert.Equal(ds, table.DataSet);
Assert.Equal(3, table.Columns.Count);
Assert.Equal(false, table.CaseSensitive);
Assert.Equal(tableName, table.TableName);
Assert.Equal(2, table.Constraints.Count);
Assert.Equal(string.Empty, table.Prefix);
Assert.Equal("Constraint2", table.Constraints[0].ToString());
Assert.Equal("Constraint1", table.Constraints[1].ToString());
Assert.Equal(typeof(UniqueConstraint), table.Constraints[0].GetType());
Assert.Equal(typeof(UniqueConstraint), table.Constraints[1].GetType());
Assert.Equal(2, table.PrimaryKey.Length);
Assert.Equal("id", table.PrimaryKey[0].ToString());
Assert.Equal("DepartmentID", table.PrimaryKey[1].ToString());
Assert.Equal(0, table.ParentRelations.Count);
Assert.Equal(0, table.ChildRelations.Count);
//Check properties of each column
//First Column
DataColumn col = table.Columns[0];
Assert.Equal(false, col.AllowDBNull);
Assert.Equal(false, col.AutoIncrement);
Assert.Equal(0, col.AutoIncrementSeed);
Assert.Equal(1, col.AutoIncrementStep);
Assert.Equal("Element", col.ColumnMapping.ToString());
Assert.Equal("id", col.Caption);
Assert.Equal("id", col.ColumnName);
Assert.Equal("System.Int32", col.DataType.ToString());
Assert.Equal(string.Empty, col.DefaultValue.ToString());
Assert.Equal(false, col.DesignMode);
Assert.Equal("System.Data.PropertyCollection", col.ExtendedProperties.ToString());
Assert.Equal(-1, col.MaxLength);
Assert.Equal(0, col.Ordinal);
Assert.Equal(string.Empty, col.Prefix);
Assert.Equal("ParentTable", col.Table.ToString());
Assert.Equal(true, col.Unique);
//Second Column
col = table.Columns[1];
Assert.Equal(true, col.AllowDBNull);
Assert.Equal(false, col.AutoIncrement);
Assert.Equal(0, col.AutoIncrementSeed);
Assert.Equal(1, col.AutoIncrementStep);
Assert.Equal("Element", col.ColumnMapping.ToString());
Assert.Equal("ParentItem", col.Caption);
Assert.Equal("ParentItem", col.ColumnName);
Assert.Equal("System.String", col.DataType.ToString());
Assert.Equal(string.Empty, col.DefaultValue.ToString());
Assert.Equal(false, col.DesignMode);
Assert.Equal("System.Data.PropertyCollection", col.ExtendedProperties.ToString());
Assert.Equal(-1, col.MaxLength);
Assert.Equal(1, col.Ordinal);
Assert.Equal(string.Empty, col.Prefix);
Assert.Equal("ParentTable", col.Table.ToString());
Assert.Equal(false, col.Unique);
//Third Column
col = table.Columns[2];
Assert.Equal(false, col.AllowDBNull);
Assert.Equal(false, col.AutoIncrement);
Assert.Equal(0, col.AutoIncrementSeed);
Assert.Equal(1, col.AutoIncrementStep);
Assert.Equal("Element", col.ColumnMapping.ToString());
Assert.Equal("DepartmentID", col.Caption);
Assert.Equal("DepartmentID", col.ColumnName);
Assert.Equal("System.Int32", col.DataType.ToString());
Assert.Equal(string.Empty, col.DefaultValue.ToString());
Assert.Equal(false, col.DesignMode);
Assert.Equal("System.Data.PropertyCollection", col.ExtendedProperties.ToString());
Assert.Equal(-1, col.MaxLength);
Assert.Equal(2, col.Ordinal);
Assert.Equal(string.Empty, col.Prefix);
Assert.Equal("ParentTable", col.Table.ToString());
Assert.Equal(false, col.Unique);
//Test the Xml
Assert.Equal(3, table.Rows.Count);
//Test values of each row
DataRow row = table.Rows[0];
Assert.Equal(1, row["id"]);
Assert.Equal("ParentItem 1", row["ParentItem"]);
Assert.Equal(1, row["DepartmentID"]);
row = table.Rows[1];
Assert.Equal(2, row["id"]);
Assert.Equal("ParentItem 2", row["ParentItem"]);
Assert.Equal(2, row["DepartmentID"]);
row = table.Rows[2];
Assert.Equal(3, row["id"]);
Assert.Equal("ParentItem 3", row["ParentItem"]);
Assert.Equal(3, row["DepartmentID"]);
}