Esempio n. 1
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);
        }
Esempio n. 2
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);
            }
        }
Esempio n. 3
0
        public void NotifyPropertyChangedPropertyClone()
        {
            int cnt   = 0;
            var props = new NotifyPropertyChangedPropertyScanner().Scan(typeof(NotifyPropertyChangedClass));

            foreach (var prop in props)
            {
                object o1 = new NotifyPropertyChangedClass();
                object o2 = new NotifyPropertyChangedClass();
                CloneYieldsIndependentPropertiesWithSameObject(prop, o1);
                ClonedPropertyCanChangeObjectIndependently(prop, o1, o2);
                ClonedPropertyCanChangeObjectIndependently(prop, o2, null);
                cnt++;
            }
            Assert.IsTrue(cnt > 0);
        }
Esempio n. 4
0
        public void BindObjectsOfDifferentTypesReflectedToNotprop()
        {
            // Arrange
            var bnd = new Binder();

            bnd.PropertyScanner.Add(new ReflectionPropertyScanner());
            bnd.PropertyScanner.Add(new NotifyPropertyChangedPropertyScanner());
            var ob1 = new NotifyPropertyChangedClass();
            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 ValueIsSetAndEventIsRaised()
        {
            // Arrange
            var    scanner  = new NotifyPropertyChangedPropertyScanner();
            object newValue = null;
            var    property = scanner.Scan(typeof(NotifyPropertyChangedClass))
                              .FirstOrDefault(p => Equals(p.Path, (PropertyPath)"property"));
            var ob = new NotifyPropertyChangedClass();

            ob.Property = "banaan";
            property.SetObject(ob);
            property.ValueChanged += (sender, e) => newValue = e.NewValue;

            // Act
            property.TrySetValue("asdf");

            // Assert
            Assert.AreEqual("asdf", ob.Property);
            Assert.AreEqual("asdf", newValue);
        }