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 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");
        }