public void ClearBaseValueTest()
        {
            int valueChangedCount = 0;
            IDependencyPropertyValueEntry dependencyPropertyValue = new DependencyPropertyValueEntry(new DependencyObject(), TestObject.ValueProperty);

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

            dependencyPropertyValue.SetBaseValue(0, "value0");
            dependencyPropertyValue.SetBaseValue(1, "value1");
            dependencyPropertyValue.SetBaseValue(2, "value2");
            Assert.AreEqual(3, valueChangedCount);

            dependencyPropertyValue.ClearBaseValue(1);
            Assert.AreEqual("value2", dependencyPropertyValue.GetBaseValue(false));
            Assert.AreEqual(3, valueChangedCount);

            dependencyPropertyValue.ClearBaseValue(2);
            Assert.AreEqual("value0", dependencyPropertyValue.GetBaseValue(false));
            Assert.AreEqual(4, valueChangedCount);
        }
        public void SetBaseValueTest()
        {
            int valueChangedCount = 0;
            IDependencyPropertyValueEntry dependencyPropertyValue = new DependencyPropertyValueEntry(new DependencyObject(), TestObject.ValueProperty);

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

            ObservableValue observableValue = new ObservableValue("value3");

            dependencyPropertyValue.SetBaseValue(0, "value0");
            Assert.AreEqual("value0", dependencyPropertyValue.GetBaseValue(false));
            Assert.AreEqual(1, valueChangedCount);

            dependencyPropertyValue.SetBaseValue(0, "value0a");
            Assert.AreEqual("value0a", dependencyPropertyValue.GetBaseValue(false));
            Assert.AreEqual(2, valueChangedCount);

            dependencyPropertyValue.SetBaseValue(2, "value2");
            Assert.AreEqual("value2", dependencyPropertyValue.GetBaseValue(false));
            Assert.AreEqual(3, valueChangedCount);

            dependencyPropertyValue.SetBaseValue(1, "value1");
            Assert.AreEqual("value2", dependencyPropertyValue.GetBaseValue(false));
            Assert.AreEqual(3, valueChangedCount);

            dependencyPropertyValue.SetBaseValue(3, observableValue);
            Assert.AreEqual(observableValue, dependencyPropertyValue.GetBaseValue(false));
            Assert.AreEqual(4, valueChangedCount);

            observableValue.Value = "value3a";
            Assert.AreEqual(observableValue, dependencyPropertyValue.GetBaseValue(false));
            Assert.AreEqual(5, valueChangedCount);

            dependencyPropertyValue.SetBaseValue(4, "value4");
            Assert.AreEqual("value4", dependencyPropertyValue.GetBaseValue(false));
            Assert.AreEqual(6, valueChangedCount);

            observableValue.Value = "value3b";
            Assert.AreEqual("value4", dependencyPropertyValue.GetBaseValue(false));
            Assert.AreEqual(6, valueChangedCount);
        }
        public void GetBaseValueTest()
        {
            IDependencyPropertyValueEntry dependencyPropertyValue = new DependencyPropertyValueEntry(new DependencyObject(), TestObject.ValueProperty);

            dependencyPropertyValue.SetAnimationValue("animation1");

            dependencyPropertyValue.SetBaseValue(0, "value0");
            Assert.AreEqual("value0", dependencyPropertyValue.GetBaseValue(false));

            dependencyPropertyValue.SetBaseValue(2, "value2");
            Assert.AreEqual("value2", dependencyPropertyValue.GetBaseValue(false));

            dependencyPropertyValue.SetBaseValue(1, "value1");
            Assert.AreEqual("value2", dependencyPropertyValue.GetBaseValue(false));

            Assert.AreEqual("value0", dependencyPropertyValue.GetBaseValue(0, false));
            Assert.AreEqual("value1", dependencyPropertyValue.GetBaseValue(1, false));
            Assert.AreEqual("value2", dependencyPropertyValue.GetBaseValue(2, false));
        }