public void HasVersion_ByDataRowVersion()
{
DataTable t = new DataTable("atable");
t.Columns.Add("id", typeof(int));
t.Columns.Add("name", typeof(string));
t.Columns[0].DefaultValue = 1;
t.Columns[1].DefaultValue = "something";
// row r is detached
DataRow r = t.NewRow();
// HasVersion Test #10
Assert.Equal(false, r.HasVersion(DataRowVersion.Current));
// HasVersion Test #11
Assert.Equal(false, r.HasVersion(DataRowVersion.Original));
// HasVersion Test #12
Assert.Equal(true, r.HasVersion(DataRowVersion.Default));
// HasVersion Test #13
Assert.Equal(true, r.HasVersion(DataRowVersion.Proposed));
r[0] = 4;
r[1] = "four";
// HasVersion Test #20
Assert.Equal(false, r.HasVersion(DataRowVersion.Current));
// HasVersion Test #21
Assert.Equal(false, r.HasVersion(DataRowVersion.Original));
// HasVersion Test #22
Assert.Equal(true, r.HasVersion(DataRowVersion.Default));
// HasVersion Test #23
Assert.Equal(true, r.HasVersion(DataRowVersion.Proposed));
t.Rows.Add(r);
// now it is "added"
// HasVersion Test #30
Assert.Equal(true, r.HasVersion(DataRowVersion.Current));
// HasVersion Test #31
Assert.Equal(false, r.HasVersion(DataRowVersion.Original));
// HasVersion Test #32
Assert.Equal(true, r.HasVersion(DataRowVersion.Default));
// HasVersion Test #33
Assert.Equal(false, r.HasVersion(DataRowVersion.Proposed));
t.AcceptChanges();
// now it is "unchanged"
// HasVersion Test #40
Assert.Equal(true, r.HasVersion(DataRowVersion.Current));
// HasVersion Test #41
Assert.Equal(true, r.HasVersion(DataRowVersion.Original));
// HasVersion Test #42
Assert.Equal(true, r.HasVersion(DataRowVersion.Default));
// HasVersion Test #43
Assert.Equal(false, r.HasVersion(DataRowVersion.Proposed));
r.BeginEdit();
r[1] = "newvalue";
// HasVersion Test #50
Assert.Equal(true, r.HasVersion(DataRowVersion.Current));
// HasVersion Test #51
Assert.Equal(true, r.HasVersion(DataRowVersion.Original));
// HasVersion Test #52
Assert.Equal(true, r.HasVersion(DataRowVersion.Default));
// HasVersion Test #53
Assert.Equal(true, r.HasVersion(DataRowVersion.Proposed));
r.EndEdit();
// now it is "modified"
// HasVersion Test #60
Assert.Equal(true, r.HasVersion(DataRowVersion.Current));
// HasVersion Test #61
Assert.Equal(true, r.HasVersion(DataRowVersion.Original));
// HasVersion Test #62
Assert.Equal(true, r.HasVersion(DataRowVersion.Default));
// HasVersion Test #63
Assert.Equal(false, r.HasVersion(DataRowVersion.Proposed));
// this or t.AcceptChanges
r.AcceptChanges();
// now it is "unchanged" again
// HasVersion Test #70
Assert.Equal(true, r.HasVersion(DataRowVersion.Current));
// HasVersion Test #71
Assert.Equal(true, r.HasVersion(DataRowVersion.Original));
// HasVersion Test #72
Assert.Equal(true, r.HasVersion(DataRowVersion.Default));
// HasVersion Test #73
Assert.Equal(false, r.HasVersion(DataRowVersion.Proposed));
r.Delete();
// now it is "deleted"
// HasVersion Test #80
Assert.Equal(false, r.HasVersion(DataRowVersion.Current));
// HasVersion Test #81
Assert.Equal(true, r.HasVersion(DataRowVersion.Original));
// HasVersion Test #82
Assert.Equal(false, r.HasVersion(DataRowVersion.Default));
// HasVersion Test #83
Assert.Equal(false, r.HasVersion(DataRowVersion.Proposed));
r.AcceptChanges();
// back to detached
// HasVersion Test #90
Assert.Equal(false, r.HasVersion(DataRowVersion.Current));
// HasVersion Test #91
Assert.Equal(false, r.HasVersion(DataRowVersion.Original));
// HasVersion Test #92
Assert.Equal(false, r.HasVersion(DataRowVersion.Default));
// HasVersion Test #93
Assert.Equal(false, r.HasVersion(DataRowVersion.Proposed));
}