public void ctor_ByNameDataColumnsArraysCreateConstraints()
{
DataRelation dRel;
DataTable dtChild = DataProvider.CreateChildDataTable();
DataTable dtParent = DataProvider.CreateParentDataTable();
var ds = new DataSet();
ds.Tables.Add(dtParent);
ds.Tables.Add(dtChild);
//parameter createConstraints = true
bool createConstraints = true;
for (int i = 0; i <= 1; i++)
{
if (i == 0)
createConstraints = false;
else
createConstraints = true;
ds.Relations.Clear();
dtParent.Constraints.Clear();
dtChild.Constraints.Clear();
//add duplicated row
dtParent.Rows.Add(dtParent.Rows[0].ItemArray);
dRel = new DataRelation("MyRelation", new DataColumn[] { dtParent.Columns[0] }, new DataColumn[] { dtChild.Columns[0] }, createConstraints);
// Add relation which will create invalid constraint
if (createConstraints == true)
{
Assert.Throws<ArgumentException>(() => ds.Relations.Add(dRel));
}
else
ds.Relations.Add(dRel);
ds.Relations.Clear();
dtParent.Constraints.Clear();
dtChild.Constraints.Clear();
dtParent.Rows.Remove(dtParent.Rows[dtParent.Rows.Count - 1]);
dRel = new DataRelation("MyRelation", new DataColumn[] { dtParent.Columns[0] }, new DataColumn[] { dtChild.Columns[0] }, createConstraints);
ds.Relations.Add(dRel);
// DataRelation - CTor,createConstraints=
Assert.Equal(false, dRel == null);
// DataRelation - parent Constraints,createConstraints=
Assert.Equal(i, dtParent.Constraints.Count);
// DataRelation - child Constraints,createConstraints=
Assert.Equal(i, dtChild.Constraints.Count);
// DataRelation - child relations,createConstraints=
Assert.Equal(dRel, dtParent.ChildRelations[0]);
// DataRelation - parent relations,createConstraints=
Assert.Equal(dRel, dtChild.ParentRelations[0]);
// DataRelation - name
Assert.Equal("MyRelation", dRel.RelationName);
}
}