public void GetParentRows_DataRelation_DataRowVersion()
{
DataRow drParent, drChild;
DataRow[] drArrExcepted, drArrResult;
DataTable dtChild, dtParent;
var ds = new DataSet();
//Create tables
dtChild = DataProvider.CreateChildDataTable();
dtParent = DataProvider.CreateParentDataTable();
//Add tables to dataset
ds.Tables.Add(dtChild);
ds.Tables.Add(dtParent);
drParent = dtParent.Rows[0];
drChild = dtChild.Select("ParentId=" + drParent["ParentId"])[0];
//Duplicate several rows in order to create Many to Many relation
dtParent.ImportRow(drParent);
dtParent.ImportRow(drParent);
dtParent.ImportRow(drParent);
//Add Relation
DataRelation dRel = new DataRelation("Parent-Child", dtParent.Columns["ParentId"], dtChild.Columns["ParentId"], false);
ds.Relations.Add(dRel);
//Get Excepted result
drArrExcepted = dtParent.Select("ParentId=" + drParent["ParentId"], "", DataViewRowState.CurrentRows);
//Get Result DataRowVersion.Current
drArrResult = drChild.GetParentRows(dRel, DataRowVersion.Current);
Assert.Equal(drArrExcepted, drArrResult);
//Get Excepted result
drArrExcepted = dtParent.Select("ParentId=" + drParent["ParentId"], "", DataViewRowState.OriginalRows);
//Get Result DataRowVersion.Current
drArrResult = drChild.GetParentRows(dRel, DataRowVersion.Original);
Assert.Equal(drArrExcepted, drArrResult);
//Get Excepted result, in this case Current = Default
drArrExcepted = dtParent.Select("ParentId=" + drParent["ParentId"], "", DataViewRowState.CurrentRows);
//Get Result DataRowVersion.Current
drArrResult = drChild.GetParentRows(dRel, DataRowVersion.Default);
Assert.Equal(drArrExcepted, drArrResult);
Assert.Throws<InvalidConstraintException>(() =>
{
DataTable dtOtherParent = DataProvider.CreateParentDataTable();
DataTable dtOtherChild = DataProvider.CreateChildDataTable();
DataRelation drl = new DataRelation("newRelation", dtOtherParent.Columns[0], dtOtherChild.Columns[0]);
drChild.GetParentRows(drl, DataRowVersion.Current);
});
}