public void HasChanges_ByDataRowState()
{
var ds = new DataSet();
DataRow dr;
ds.Tables.Add(DataProvider.CreateParentDataTable());
// HasChanges 1
Assert.Equal(false, ds.HasChanges());
//make some changes
dr = ds.Tables[0].Rows[1];
dr.Delete();
dr = ds.Tables[0].Rows[2];
dr[1] = "NewValue";
dr = ds.Tables[0].Select("", "", DataViewRowState.Unchanged)[0];
dr = ds.Tables[0].NewRow();
dr[0] = 1;
ds.Tables[0].Rows.Add(dr);
// HasChanges Added
Assert.Equal(true, ds.HasChanges(DataRowState.Added));
// HasChanges Deleted
Assert.Equal(true, ds.HasChanges(DataRowState.Deleted));
// HasChanges Modified
Assert.Equal(true, ds.HasChanges(DataRowState.Modified));
// HasChanges Unchanged
Assert.Equal(true, ds.HasChanges(DataRowState.Unchanged));
}