public void ctor_DataColumn()
{
Exception tmpEx = new Exception();
var ds = new DataSet();
DataTable dtParent = DataProvider.CreateParentDataTable();
ds.Tables.Add(dtParent);
ds.EnforceConstraints = true;
UniqueConstraint uc = null;
// DataColumn.Unique - without constraint
Assert.Equal(false, dtParent.Columns[0].Unique);
uc = new UniqueConstraint(dtParent.Columns[0]);
// Ctor
Assert.Equal(false, uc == null);
// DataColumn.Unique - with constraint
Assert.Equal(false, dtParent.Columns[0].Unique);
// Ctor - add exisiting column
dtParent.Rows.Add(new object[] { 99, "str1", "str2" });
dtParent.Constraints.Add(uc);
Assert.Throws<ConstraintException>(() => dtParent.Rows.Add(new object[] { 99, "str1", "str2" }));
DataTable dtChild = DataProvider.CreateChildDataTable();
uc = new UniqueConstraint(dtChild.Columns[1]);
//Column[1] is not unique, will throw exception
// ArgumentException
Assert.Throws<ArgumentException>(() => dtChild.Constraints.Add(uc));
//reset the table
dtParent = DataProvider.CreateParentDataTable();
// DataColumn.Unique = true, will add UniqueConstraint
dtParent.Columns[0].Unique = true;
Assert.Equal(1, dtParent.Constraints.Count);
// Check the created UniqueConstraint
dtParent.Columns[0].Unique = true;
Assert.Equal(typeof(UniqueConstraint).FullName, dtParent.Constraints[0].GetType().FullName);
// add UniqueConstarint that don't belong to the table
Assert.Throws<ArgumentException>(() =>
{
dtParent.Constraints.Add(uc);
});
}