public void ctor_ByNameDataColumnsArrays()
{
var ds = new DataSet();
DataTable dtChild = DataProvider.CreateChildDataTable();
DataTable dtParent = DataProvider.CreateParentDataTable();
ds.Tables.Add(dtParent);
ds.Tables.Add(dtChild);
DataRelation dRel;
//check some exception
// DataRelation - CTor ArgumentException, two columns child
Assert.Throws<ArgumentException>(() =>
{
dRel = new DataRelation("MyRelation", new DataColumn[] { dtParent.Columns[0] }, new DataColumn[] { dtChild.Columns[0], dtChild.Columns[2] });
});
dRel = new DataRelation("MyRelation", new DataColumn[] { dtParent.Columns[0], dtParent.Columns[1] }, new DataColumn[] { dtChild.Columns[0], dtChild.Columns[2] });
// DataRelation - Add Relation ArgumentException, fail on creating child Constraints
Assert.Throws<ArgumentException>(() =>
{
ds.Relations.Add(dRel);
});
// DataRelation ArgumentException - parent Constraints
Assert.Equal(1, dtParent.Constraints.Count);
// DataRelation ArgumentException - child Constraints
Assert.Equal(0, dtChild.Constraints.Count);
// DataRelation ArgumentException - DataSet.Relation count
Assert.Equal(1, ds.Relations.Count);
//begin to check the relation ctor
dtParent.Constraints.Clear();
dtChild.Constraints.Clear();
ds.Relations.Clear();
dRel = new DataRelation("MyRelation", new DataColumn[] { dtParent.Columns[0] }, new DataColumn[] { dtChild.Columns[0] });
ds.Relations.Add(dRel);
// DataSet DataRelation count
Assert.Equal(1, ds.Relations.Count);
// DataRelation - CTor
Assert.Equal(false, dRel == null);
// DataRelation - parent Constraints
Assert.Equal(1, dtParent.Constraints.Count);
// DataRelation - child Constraints
Assert.Equal(1, dtChild.Constraints.Count);
// DataRelation - child relations
Assert.Equal(dRel, dtParent.ChildRelations[0]);
// DataRelation - parent relations
Assert.Equal(dRel, dtChild.ParentRelations[0]);
// DataRelation - name
Assert.Equal("MyRelation", dRel.RelationName);
}