コード例 #1
0
        public void CoerceValueTest()
        {
            string coercionSuffix = "-coerced";
            DependencyPropertyValueEntry entry = new DependencyPropertyValueEntry(new TestObject(), TestObject.ValueProperty, (dependencyObject, value) => (string)value + coercionSuffix);

            int valueChangedCount = 0;

            entry.ValueChanged += (sender, e) => valueChangedCount++;

            entry.SetValue(1, "value1");
            Assert.AreEqual("value1-coerced", entry.Value);
            Assert.AreEqual(1, entry.ValuePriority);
            Assert.AreEqual(1, valueChangedCount);

            entry.CoerceValue();
            Assert.AreEqual("value1-coerced", entry.Value);
            Assert.AreEqual(1, entry.ValuePriority);
            Assert.AreEqual(1, valueChangedCount);

            coercionSuffix = "-coerced2";
            entry.CoerceValue();
            Assert.AreEqual("value1-coerced2", entry.Value);
            Assert.AreEqual(1, entry.ValuePriority);
            Assert.AreEqual(2, valueChangedCount);
        }
コード例 #2
0
        public void SetHiddenValueTest()
        {
            DependencyPropertyValueEntry entry = new DependencyPropertyValueEntry(new TestObject(), TestObject.ValueProperty, null);

            int valueChangedCount = 0;

            entry.ValueChanged += (sender, e) => valueChangedCount++;

            entry.SetValue(2, "value1");
            Assert.AreEqual("value1", entry.Value);
            Assert.AreEqual(2, entry.ValuePriority);
            Assert.AreEqual(1, valueChangedCount);

            entry.SetValue(1, "value2");
            Assert.AreEqual("value1", entry.Value);
            Assert.AreEqual(2, entry.ValuePriority);
            Assert.AreEqual(1, valueChangedCount);
        }
コード例 #3
0
        public void ClearValueTest()
        {
            DependencyPropertyValueEntry entry = new DependencyPropertyValueEntry(new TestObject(), TestObject.ValueProperty, null);

            int valueChangedCount = 0;

            entry.ValueChanged += (sender, e) => valueChangedCount++;

            entry.SetValue(2, "value1");
            Assert.AreEqual("value1", entry.Value);
            Assert.AreEqual(2, entry.ValuePriority);
            Assert.AreEqual(1, valueChangedCount);

            entry.SetValue(2, ObservableValue.UnsetValue);
            Assert.AreEqual(ObservableValue.UnsetValue, entry.Value);
            Assert.AreEqual(0, entry.ValuePriority);
            Assert.AreEqual(2, valueChangedCount);
        }
コード例 #4
0
        public void SetObservableValueTest()
        {
            DependencyPropertyValueEntry entry = new DependencyPropertyValueEntry(new TestObject(), TestObject.ValueProperty, null);

            int valueChangedCount = 0;

            entry.ValueChanged += (sender, e) => valueChangedCount++;

            ObservableValue observableValue1     = new ObservableValue();
            ObservableValue innerObservableValue = new ObservableValue();

            entry.SetValue(1, "value1");
            entry.SetValue(2, observableValue1);
            Assert.AreEqual("value1", entry.Value);
            Assert.AreEqual(1, entry.ValuePriority);
            Assert.AreEqual(1, valueChangedCount);

            observableValue1.BaseValue = "value2";
            Assert.AreEqual("value2", entry.Value);
            Assert.AreEqual(2, entry.ValuePriority);
            Assert.AreEqual(2, valueChangedCount);

            observableValue1.BaseValue = innerObservableValue;
            Assert.AreEqual("value1", entry.Value);
            Assert.AreEqual(1, entry.ValuePriority);
            Assert.AreEqual(3, valueChangedCount);

            innerObservableValue.BaseValue = "value3";
            Assert.AreEqual("value3", entry.Value);
            Assert.AreEqual(2, entry.ValuePriority);
            Assert.AreEqual(4, valueChangedCount);

            innerObservableValue.BaseValue = ObservableValue.UnsetValue;
            Assert.AreEqual("value1", entry.Value);
            Assert.AreEqual(1, entry.ValuePriority);
            Assert.AreEqual(5, valueChangedCount);
        }
コード例 #5
0
        public void SetNotifyChangedValueTest()
        {
            DependencyPropertyValueEntry entry = new DependencyPropertyValueEntry(new TestObject(), TestObject.NotifyChangedValueProperty, null);

            int valueChangedCount = 0;

            entry.ValueChanged += (sender, e) => valueChangedCount++;

            NotifyChangedValue value = new NotifyChangedValue();

            entry.SetValue(1, value);
            Assert.AreEqual(value, entry.Value);
            Assert.AreEqual(1, entry.ValuePriority);
            Assert.AreEqual(1, valueChangedCount);

            value.RaiseChanged();
            Assert.AreEqual(2, valueChangedCount);
        }
コード例 #6
0
        public void GetBaseValuePriorityTest()
        {
            DependencyPropertyValueEntry entry = new DependencyPropertyValueEntry(new TestObject(), TestObject.ValueProperty, null);

            int valueChangedCount = 0;

            entry.ValueChanged += (sender, e) => valueChangedCount++;

            entry.SetValue(1, "value1");
            Assert.AreEqual("value1", entry.Value);
            Assert.AreEqual(1, entry.ValuePriority);
            Assert.AreEqual(1, entry.GetBaseValuePriority());
            Assert.AreEqual(1, valueChangedCount);

            entry.SetValue(2, "value2");
            Assert.AreEqual("value2", entry.Value);
            Assert.AreEqual(2, entry.ValuePriority);
            Assert.AreEqual(2, entry.GetBaseValuePriority());
            Assert.AreEqual(2, valueChangedCount);

            entry.SetValue(DependencyPropertyValueEntry.BaseValueHighestPriority, "value3");
            Assert.AreEqual("value3", entry.Value);
            Assert.AreEqual(DependencyPropertyValueEntry.BaseValueHighestPriority, entry.ValuePriority);
            Assert.AreEqual(DependencyPropertyValueEntry.BaseValueHighestPriority, entry.GetBaseValuePriority());
            Assert.AreEqual(3, valueChangedCount);

            entry.SetValue(DependencyPropertyValueEntry.BaseValueHighestPriority + 1, "value4");
            Assert.AreEqual("value4", entry.Value);
            Assert.AreEqual(DependencyPropertyValueEntry.BaseValueHighestPriority + 1, entry.ValuePriority);
            Assert.AreEqual(DependencyPropertyValueEntry.BaseValueHighestPriority, entry.GetBaseValuePriority());
            Assert.AreEqual(4, valueChangedCount);

            entry.SetValue(DependencyPropertyValueEntry.BaseValueHighestPriority, TestObject.InvalidValue);
            Assert.AreEqual("value4", entry.Value);
            Assert.AreEqual(DependencyPropertyValueEntry.BaseValueHighestPriority + 1, entry.ValuePriority);
            Assert.AreEqual(2, entry.GetBaseValuePriority());
            Assert.AreEqual(4, valueChangedCount);

            entry.SetValue(DependencyPropertyValueEntry.BaseValueHighestPriority + 1, TestObject.InvalidValue);
            Assert.AreEqual("value2", entry.Value);
            Assert.AreEqual(2, entry.ValuePriority);
            Assert.AreEqual(2, entry.GetBaseValuePriority());
            Assert.AreEqual(5, valueChangedCount);
        }