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"; }
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 UndoRedoChangesSIC() { BindableWrapper<SimpleIndexedClass> bindableObj = new BindableWrapper<SimpleIndexedClass>(new SimpleIndexedClass()); bindableObj.Data.BusinessObj["test"] = 1; bindableObj.Data.BusinessObj["test"] = 2; bindableObj.Data.BusinessObj.Code = "asdf"; bindableObj.Data.BusinessObj.Code = "12345"; bindableObj.Undo(); Assert.AreEqual(bindableObj.Data.BusinessObj["test"], 2); Assert.AreEqual(bindableObj.Data.BusinessObj.Code, "asdf"); bindableObj.Redo(); Assert.AreEqual(bindableObj.Data.BusinessObj["test"], 2); Assert.AreEqual(bindableObj.Data.BusinessObj.Code, "12345"); }
public void UndoRedoChangesSOBCP() { BindableWrapper<SimpleObjectComplexProperties> bindableObj = new BindableWrapper<SimpleObjectComplexProperties>(new SimpleObjectComplexProperties()); bindableObj.Data.BusinessObj.Code = "asdf"; bindableObj.Data.BusinessObj.Ages[1] = 0; bindableObj.Data.BusinessObj.Names = new System.Collections.Generic.List<string>(); bindableObj.Data.BusinessObj.Names.Add("test"); bindableObj.Data.BusinessObj.Ages[1] = 80; Assert.AreEqual(bindableObj.Data.BusinessObj.Ages[1], 80); bindableObj.Undo(); Assert.AreEqual(bindableObj.Data.BusinessObj.Ages[1], 80); bindableObj.Redo(); Assert.AreEqual(bindableObj.Data.BusinessObj.Ages[1], 80); }
public void UndoChangesSOVT() { BindableWrapper<SimpleObjectValueTypes> bindableObj = new BindableWrapper<SimpleObjectValueTypes>(new SimpleObjectValueTypes()); bindableObj.Data.BusinessObj.Boolean = false; bindableObj.Data.BusinessObj.Char = 'a'; bindableObj.Data.BusinessObj.Double = 100; bindableObj.Data.BusinessObj.Float = 100; bindableObj.Data.BusinessObj.Enum = SimpleEnum.line1; bindableObj.Data.BusinessObj.Integer = 5; bindableObj.Data.BusinessObj.Struct = new SimpleStruct(); Assert.AreEqual(bindableObj.Data.BusinessObj.Boolean, false); Assert.AreEqual(bindableObj.Data.BusinessObj.Char, 'a'); Assert.AreEqual(bindableObj.Data.BusinessObj.Double, 100); Assert.AreEqual(bindableObj.Data.BusinessObj.Float, 100); Assert.AreEqual(bindableObj.Data.BusinessObj.Enum, SimpleEnum.line1); Assert.AreEqual(bindableObj.Data.BusinessObj.Integer, 5); //Assert.AreEqual(bindableObj.Data.BusinessObj.Struct._int1, 1); bindableObj.Data.BusinessObj.Boolean = true; bindableObj.Undo(); Assert.AreEqual(bindableObj.Data.BusinessObj.Boolean, false); bindableObj.Data.BusinessObj.Char = 'b'; bindableObj.Undo(); Assert.AreEqual(bindableObj.Data.BusinessObj.Char, 'a'); bindableObj.Data.BusinessObj.Double = 200; bindableObj.Undo(); Assert.AreEqual(bindableObj.Data.BusinessObj.Double, 100); bindableObj.Data.BusinessObj.Float = 200; bindableObj.Undo(); Assert.AreEqual(bindableObj.Data.BusinessObj.Float, 100); bindableObj.Data.BusinessObj.Enum = SimpleEnum.line2; bindableObj.Undo(); Assert.AreEqual(bindableObj.Data.BusinessObj.Enum, SimpleEnum.line1); bindableObj.Data.BusinessObj.Integer = 7; bindableObj.Undo(); Assert.AreEqual(bindableObj.Data.BusinessObj.Integer, 5); }
public void UndoRedoChangesSBO() { BindableWrapper<SimpleBusinessObject> bindableObj = new BindableWrapper<SimpleBusinessObject>(new SimpleBusinessObject()); 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"); bindableObj.Undo(); Assert.AreEqual(bindableObj.Data.BusinessObj.Name, "asdf"); bindableObj.Redo(); Assert.AreEqual(bindableObj.Data.BusinessObj.Name, "qwerty"); }
public void UndoChangesSOCP() { BindableWrapper<SimpleObjectComplexProperties> bindableObj = new BindableWrapper<SimpleObjectComplexProperties>(new SimpleObjectComplexProperties()); bindableObj.Data.BusinessObj.Code = "asdf"; bindableObj.Data.BusinessObj.Ages[3] = 777; bindableObj.Data.BusinessObj.Names = new System.Collections.Generic.List<string>(); bindableObj.Data.BusinessObj.Names.Add("test"); bindableObj.Data.BusinessObj.Code = "change"; bindableObj.Data.BusinessObj.Ages[3] = 22; Assert.AreEqual(bindableObj.Data.BusinessObj.Code, "change"); Assert.AreEqual(bindableObj.Data.BusinessObj.Ages[3], 22); bindableObj.Undo(); Assert.AreEqual(bindableObj.Data.BusinessObj.Code, "asdf"); // array is not intercepted so it does not change Assert.AreEqual(bindableObj.Data.BusinessObj.Ages[3], 22); Assert.IsTrue(bindableObj.Data.BusinessObj.Names.Contains("test")); // no undo for this as it is not intercepted bindableObj.Data.BusinessObj.Ages[3] = 22; bindableObj.Data.BusinessObj.Ages[3] = 25; bindableObj.Undo(); Assert.AreEqual(bindableObj.Data.BusinessObj.Ages[3], 25); // not intercepted so nothing to undo }
public void UndoChangesSIC() { BindableWrapper<SimpleIndexedClass> bindableObj = new BindableWrapper<SimpleIndexedClass>(new SimpleIndexedClass()); bindableObj.Data.BusinessObj["test"] = 1; bindableObj.Data.BusinessObj["test"] = 2; Assert.AreEqual(bindableObj.Data.BusinessObj["test"], 2); bindableObj.Undo(); // changes in the objects within the collection are not intercepted so no undo changes Assert.AreEqual(bindableObj.Data.BusinessObj["test"], 2); }
public void UndoChangesSGO() { BindableWrapper<SimpleGenericObject<string>> bindableObj = new BindableWrapper<SimpleGenericObject<string>>(new SimpleGenericObject<string>()); bindableObj.Data.BusinessObj.GenericArray = new string[] { "test1", "test2" }; bindableObj.Data.BusinessObj.GenericArray[0] = "test3"; bindableObj.Data.BusinessObj.Code = "code1"; bindableObj.Data.BusinessObj.Code = "code2"; Assert.AreEqual(bindableObj.Data.BusinessObj.Code, "code2"); bindableObj.Undo(); Assert.AreEqual(bindableObj.Data.BusinessObj.Code, "code1"); // changes in array elements are not intercepted Assert.AreEqual(bindableObj.Data.BusinessObj.GenericArray[0], "test3"); }
public void UndoChangesSBONoInterception() { BindableWrapper<SimpleBusinessObject> bindableObj = new BindableWrapper<SimpleBusinessObject>(new SimpleBusinessObject(), true); 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"); bindableObj.Undo(); Assert.AreEqual(bindableObj.Data.BusinessObj.Name, "qwerty"); // no changes, no interception }
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); }