public void RemoveEventRaised() { BindableCollection<SimpleBusinessObject> lBindableCollection = new BindableCollection<SimpleBusinessObject>(); bool removingRaised = false; lBindableCollection.ItemRemovedEvent += delegate(object sender, ItemRemovedEventArgs ea) { removingRaised = true; }; Assert.IsFalse(removingRaised); lBindableCollection.Add(new SimpleBusinessObject()); Assert.IsFalse(removingRaised); lBindableCollection.RemoveAt(0); Assert.IsTrue(removingRaised); SimpleBusinessObject sbo = new SimpleBusinessObject(); lBindableCollection.Add(sbo); removingRaised = false; lBindableCollection.Remove(sbo); Assert.IsTrue(removingRaised); }
public void UndoNestedChanges() { BindableWrapper<ComplexBusinessObject> bindableObj = new BindableWrapper<ComplexBusinessObject>(new ComplexBusinessObject()); SimpleBusinessObject sbo1 = new SimpleBusinessObject(); sbo1.Name = "sbo1"; SimpleBusinessObject sbo2 = new SimpleBusinessObject(); sbo2.Name = "sbo2"; bindableObj.Data.BusinessObj.NestedObject = sbo1; Assert.AreEqual(bindableObj.Data.BusinessObj.NestedObject.Name, sbo1.Name); bindableObj.Data.BusinessObj.NestedObject = sbo2; Assert.AreEqual(bindableObj.Data.BusinessObj.NestedObject.Name, sbo2.Name); bindableObj.Undo(); // As the nested object is not intercepted undo does not have any effect Assert.AreEqual(bindableObj.Data.BusinessObj.NestedObject.Name, sbo2.Name); // the nested object is not IBindableWrapper so changes on its internal properties are not intercepted bindableObj.Data.BusinessObj.NestedObject.Name = "whatever"; bindableObj.Data.BusinessObj.NestedObject.Name = "somethingelse"; }
private ComplexBusinessObject(bool flag, SimpleBusinessObject nested) { _someFlag = flag; _nestedObject = nested; }
public void UndoRedoNestedChanges() { BindableWrapper<ComplexBusinessObject> bindableObj = new BindableWrapper<ComplexBusinessObject>(new ComplexBusinessObject()); SimpleBusinessObject sbo1 = new SimpleBusinessObject(); sbo1.Name = "sbo1"; SimpleBusinessObject sbo2 = new SimpleBusinessObject(); sbo2.Name = "sbo2"; bindableObj.Data.BusinessObj.NestedObject = sbo1; Assert.AreEqual(bindableObj.Data.BusinessObj.NestedObject.Name, sbo1.Name); bindableObj.Data.BusinessObj.NestedObject = sbo2; Assert.AreEqual(bindableObj.Data.BusinessObj.NestedObject.Name, sbo2.Name); bindableObj.Undo(); Assert.AreEqual(bindableObj.Data.BusinessObj.NestedObject.Name, sbo2.Name); bindableObj.Redo(); Assert.AreEqual(bindableObj.Data.BusinessObj.NestedObject.Name, sbo2.Name); }
public void ObjectReferencesOnUndo() { BindableWrapper<SimpleBusinessObject> bindableReference; SimpleBusinessObject businessObjReference; SimpleBusinessObject businessObj = new SimpleBusinessObject(); businessObjReference = businessObj; BindableWrapper<SimpleBusinessObject> bindableObj = new BindableWrapper<SimpleBusinessObject>(businessObj); bindableReference = bindableObj; bindableObj.Data.BusinessObj.Name = "asdf"; bindableObj.Data.BusinessObj.Description = "asdfsdf"; bindableObj.Data.BusinessObj.Age = 25; bindableObj.Data.BusinessObj.Name = "qwerty"; Assert.AreEqual(bindableObj.Data.BusinessObj.Name, "qwerty"); Assert.AreEqual(bindableReference.Data.BusinessObj.Name, "qwerty"); Assert.IsNull(businessObjReference.Name); bindableObj.Undo(); Assert.AreEqual(bindableObj.Data.BusinessObj.Name, "asdf"); Assert.AreEqual(bindableReference.Data.BusinessObj.Name, "asdf"); Assert.IsNull(businessObjReference.Name); }