public void EditableObjectModelBase_EditableObjectTest() { var person = new EditablePerson(); person.FirstName = "Albert"; person.Age = 10; person.Boss.Age = 99; person.AcceptChanges(); Assert.IsFalse(person.IsChangedLocal); person.BeginEdit(); Assert.IsFalse(person.IsChangedLocal); person.FirstName = "Bob"; Assert.IsTrue(person.IsChangedLocal); Assert.AreEqual("Bob", person.FirstName); person.CancelEdit(); Assert.AreEqual("Albert", person.FirstName); Assert.AreEqual(10, person.Age); Assert.IsFalse(person.IsChangedLocal); person.BeginEdit(); Assert.IsFalse(person.IsChangedLocal); person.FirstName = "Chris"; Assert.IsTrue(person.IsChangedLocal); Assert.AreEqual("Chris", person.FirstName); person.EndEdit(); Assert.IsTrue(person.IsChangedLocal); Assert.AreEqual("Chris", person.FirstName); person.BeginEdit(); Assert.IsTrue(person.IsChangedLocal); person.FirstName = "David"; Assert.IsTrue(person.IsChangedLocal); Assert.AreEqual("David", person.FirstName); person.EndEdit(); Assert.IsTrue(person.IsChangedLocal); Assert.AreEqual("David", person.FirstName); person.BeginEdit(); person.BeginEdit(); person.EndEdit(); person.EndEdit(); person.BeginEdit(); person.BeginEdit(); person.CancelEdit(); person.CancelEdit(); }