Beispiel #1
0
        public void ReplaceParentChangesChildrenIfParentDifferentTypes()
        {
            // Arrange
            var bnd = new Binder();

            bnd.PropertyScanner.Add(new ReflectionPropertyScanner());
            bnd.PropertyScanner.Add(new NotifyPropertyChangedPropertyScanner());
            var view = new MockView {
                Control = new MockControl("ViewOrig")
            };
            var vm = new MockViewModel2 {
                Control = new MockControlViewModel("VmOrig")
            };

            _bindings = bnd.Bind(new object[] { vm, view });

            // Act
            view.Control = new MockControl("ViewNew")
            {
                Text = "banaan",
                Size = 11
            };

            // Assert
            Assert.Greater(_bindings.Count(), 0);
            Assert.AreEqual("banaan", vm.Control.Text);
            Assert.AreEqual(11, vm.Control.Size);
        }
Beispiel #2
0
        public void BindObjectsOfDifferentTypesResultsInPropertiesBeingSetOnce()
        {
            // Arrange
            int ob1cnt = 0, ob2cnt = 0;
            var bnd = new Binder();

            bnd.PropertyScanner.Add(new ReflectionPropertyScanner());
            bnd.PropertyScanner.Add(new NotifyPropertyChangedPropertyScanner());
            var ob1 = new NotifyPropertyChangedClass();
            var ob2 = new ClassWithPropertyAndEvents();

            ob1.PropertyChanged += delegate
            {
                ob1cnt++;
            };
            ob2.PropertyChanged += delegate
            {
                ob2cnt++;
            };
            _bindings = bnd.Bind(new object[] { ob1, ob2 });
            ob1cnt    = 0;
            ob2cnt    = 0;

            // Act
            ob2.Property = "a";

            // Assert
            Assert.Greater(_bindings.Count(), 0);
            Assert.AreEqual(1, ob1cnt);
            Assert.AreEqual(1, ob2cnt);
        }
Beispiel #3
0
        public void BindDifferentlyDistributedObjectHierarchiesChangeParent()
        {
            // Arrange
            var bnd = new Binder();

            bnd.PropertyScanner.Add(new ReflectionPropertyScanner());
            bnd.PropertyScanner.Add(new NotifyPropertyChangedPropertyScanner());
            var ob1 = new Abcd1();
            var ob2 = new Abcd2();
            var ob3 = new Abcd3();

            _bindings             = bnd.Bind(new object[] { ob1, ob2, ob3 });
            ob2.AaaBee.CeeDee.Eee = "x";

            // Act
            Abcd2.AB oldAaaBee = ob2.AaaBee;
            ob2.AaaBee = new Abcd2.AB
            {
                CeeDee = new Abcd2.CD
                {
                    Eee = "y"
                }
            };


            // Assert
            Assert.Greater(_bindings.Count(), 0);
            Assert.AreEqual("y", ob1.Aaa.Bee.Cee.Dee.Eee);
            Assert.AreEqual("y", ob3.Aaa.BeeCee.Dee.Eee);
            Assert.AreEqual("x", oldAaaBee.CeeDee.Eee);
        }
Beispiel #4
0
        public void BindThreeNotifyPropertyChangedObjects()
        {
            {
                // Arrange
                var bnd = new Binder();
                bnd.PropertyScanner.Add(new NotifyPropertyChangedPropertyScanner());
                var ob1 = new NotifyPropertyChangedClass();
                var ob2 = new NotifyPropertyChangedClass();
                var ob3 = new NotifyPropertyChangedClass();
                _bindings = bnd.Bind(new object[] { ob1, ob2, ob3 });

                // Act
                ob1.Property = "a";

                // Assert
                Assert.Greater(_bindings.Count(), 0);
                Assert.AreEqual("a", ob1.Property);
                Assert.AreEqual("a", ob2.Property);
                Assert.AreEqual("a", ob3.Property);
            }

            {
                // Arrange
                var bnd = new Binder();
                bnd.PropertyScanner.Add(new NotifyPropertyChangedPropertyScanner());
                var ob1 = new NotifyPropertyChangedClass();
                var ob2 = new NotifyPropertyChangedClass();
                var ob3 = new NotifyPropertyChangedClass();
                _bindings = bnd.Bind(new object[] { ob1, ob2, ob3 });

                // Act
                ob2.Property = "a";

                // Assert
                Assert.Greater(_bindings.Count(), 0);
                Assert.AreEqual("a", ob1.Property);
                Assert.AreEqual("a", ob2.Property);
                Assert.AreEqual("a", ob3.Property);
            }

            {
                // Arrange
                var bnd = new Binder();
                bnd.PropertyScanner.Add(new NotifyPropertyChangedPropertyScanner());
                var ob1 = new NotifyPropertyChangedClass();
                var ob2 = new NotifyPropertyChangedClass();
                var ob3 = new NotifyPropertyChangedClass();
                _bindings = bnd.Bind(new object[] { ob1, ob2, ob3 });

                // Act
                ob3.Property = "a";

                // Assert
                Assert.Greater(_bindings.Count(), 0);
                Assert.AreEqual("a", ob1.Property);
                Assert.AreEqual("a", ob2.Property);
                Assert.AreEqual("a", ob3.Property);
            }
        }
Beispiel #5
0
        public void BindReflectedObjects()
        {
            // Arrange
            var bnd = new Binder();

            bnd.PropertyScanner.Add(new ReflectionPropertyScanner());
            bnd.PropertyScanner.Add(new NotifyPropertyChangedPropertyScanner());
            var ob1 = new ClassWithPropertyAndEvents();
            var ob2 = new ClassWithPropertyAndEvents();

            _bindings = bnd.Bind(new object[] { ob1, ob2 });

            // Act
            ob2.Property = "a";

            // Assert
            Assert.Greater(_bindings.Count(), 0);
            Assert.AreEqual("a", ob1.Property);
        }
        public void BindSpecialPropertyOnExtensionsWithNotifyPropertyChanged()
        {
            // Arrange
            var bnd = new Binder();
            var customExtensionsScanner = new TypeExtensionsScanner(bnd.PropertyScanner);

            customExtensionsScanner.AdapterRegistry.Register <MockViewExtensions>();
            bnd.PropertyScanner.Add(new NotifyPropertyChangedPropertyScanner());
            bnd.PropertyScanner.Add(customExtensionsScanner);
            var ob1 = new MockView();
            var ob2 = new MockViewModel();

            _bindings = bnd.Bind(new object[] { ob1, ob2 });

            // Act
            ob2.SpecialProperty = 666;

            // Assert
            Assert.Greater(_bindings.Count(), 0);
            Assert.AreEqual(666, ob1.GetSpecialProperty());
        }
Beispiel #7
0
        public void ReplaceParentWithSameTypeChangesParentAndLeavesChildrenAlone()
        {
            // Arrange
            var bnd = new Binder();

            bnd.PropertyScanner.Add(new ReflectionPropertyScanner());
            bnd.PropertyScanner.Add(new NotifyPropertyChangedPropertyScanner());
            var view = new MockView {
                Control = new MockControl("ViewOrig")
                {
                    Text = "Appel", Size = 100
                }
            };
            var viewCtl = view.Control;
            var vm      = new MockView {
                Control = new MockControl("VmOrig")
                {
                    Text = "Peer", Size = 200
                }
            };
            var vmCtl = vm.Control;

            _bindings = bnd.Bind(new object[] { vm, view });

            // Act
            view.Control = new MockControl("ViewNew")
            {
                Text = "banaan",
                Size = 11
            };

            // Assert
            Assert.Greater(_bindings.Count(), 0);
            Assert.AreSame(view.Control, vm.Control);
            Assert.AreEqual("Appel", viewCtl.Text);
            Assert.AreEqual(100, viewCtl.Size);
            Assert.AreEqual("Peer", vmCtl.Text);
            Assert.AreEqual(200, vmCtl.Size);
        }
Beispiel #8
0
        public void BindViewToViewmodel()
        {
            // Arrange
            var bnd = new Binder();

            bnd.PropertyScanner.Add(new ReflectionPropertyScanner());
            bnd.PropertyScanner.Add(new NotifyPropertyChangedPropertyScanner());
            var view = new MockView {
                Control = new MockControl("ViewOrig")
            };
            var vm = new MockViewModel();

            _bindings = bnd.Bind(new object[] { vm, view });

            // Act
            view.Control.Text = "banaan";
            view.Control.Size = 11;

            // Assert
            Assert.Greater(_bindings.Count(), 0);
            Assert.AreEqual("banaan", vm.ControlText);
            Assert.AreEqual(11, vm.ControlSize);
        }