public void Invoke_NotAttached_IsNoOp()
        {
            StubTrigger          trigger = CreateStubTrigger();
            ChangePropertyAction action  = CreateChangePropertyAction("Foo", Brushes.Green);

            trigger.FireStubTrigger();
        }
Пример #2
0
        /// <summary>
        /// Properties the name changed.
        /// </summary>
        /// <param name="dependencyObject">The dependency object.</param>
        /// <param name="arg">The <see cref="DependencyPropertyChangedEventArgs"/> instance containing the event data.</param>
        private static void PropertyNameChanged(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs arg)
        {
            var control            = (Control)dependencyObject;
            var collection         = new BehaviorCollection();
            var validationBehavior = new ValidationBehavior()
            {
                PropertyName = arg.NewValue.ToString()
            };
            var changePropertyIsValidAction = new ChangePropertyAction
            {
                PropertyName = new PropertyPath(nameof(Control.Style)),
                Value        = null
            };

            var errorStyle = new Style
            {
                TargetType = typeof(Control)
            };

            errorStyle.Setters.Add(new Setter(Control.BorderBrushProperty, new SolidColorBrush(Colors.Red)));

            var changePropertyIsInvalidAction = new ChangePropertyAction
            {
                PropertyName = new PropertyPath(nameof(Control.Style)),
                Value        = errorStyle
            };

            validationBehavior.WhenValidActions.Add(changePropertyIsValidAction);
            validationBehavior.WhenInvalidActions.Add(changePropertyIsInvalidAction);

            collection.Add(validationBehavior);
            control.SetValue(Interaction.BehaviorsProperty, collection);
        }
        public void Invoke_NoPropertyName_IsNoOp()
        {
            StubTrigger          trigger = CreateStubTrigger();
            ChangePropertyAction action  = CreateChangePropertyAction(null, Brushes.Green);

            trigger.Actions.Add(action);

            trigger.FireStubTrigger();
        }
        public void Invoke_ReadOnlyProperty_ThrowsArgumentException()
        {
            Button               button  = CreateButton();
            StubTrigger          trigger = CreateStubTrigger();
            ChangePropertyAction action  = CreateChangePropertyAction("IsDefaulted", true);

            AttachAction(button, trigger, action);

            trigger.FireStubTrigger();
        }
        public void Invoke_InvalidPropertyFormatString_ThrowsException()
        {
            Rectangle            rectangle = CreateRectangle();
            StubTrigger          trigger   = CreateStubTrigger();
            ChangePropertyAction action    = CreateChangePropertyAction("Width", "0.0.0.0");

            AttachAction(rectangle, trigger, action);

            trigger.FireStubTrigger();
        }
        public void Invoke_IncompatiblePropertyWithValueType_ThrowsArgumentException()
        {
            Rectangle            rectangle = CreateRectangle();
            StubTrigger          trigger   = CreateStubTrigger();
            ChangePropertyAction action    = CreateChangePropertyAction("Width", Brushes.Green);

            AttachAction(rectangle, trigger, action);

            trigger.FireStubTrigger();
        }
        public void Invoke_InvalidPropertyName_ThrowsArgumentException()
        {
            Rectangle            rectangle = CreateRectangle();
            StubTrigger          trigger   = CreateStubTrigger();
            ChangePropertyAction action    = CreateChangePropertyAction("Foo", Brushes.Green);

            AttachAction(rectangle, trigger, action);

            trigger.FireStubTrigger();
        }
        public void Invoke_AnimatedObjectChange_Changes()
        {
            Ellipse e = new Ellipse();
            ChangePropertyAction c = CreateChangePropertyAction("Fill", Brushes.Gray);
            StubTrigger          t = CreateStubTrigger();

            AttachAction(e, t, c);
            c.Duration = TimeSpan.FromMilliseconds(5);
            t.FireStubTrigger();
        }
        public void Invoke_AnimatedPointChange_Changes()
        {
            Ellipse e = new Ellipse();
            ChangePropertyAction c = CreateChangePropertyAction("RenderTransformOrigin", new System.Windows.Point(0.3, 0.3));
            StubTrigger          t = CreateStubTrigger();

            AttachAction(e, t, c);
            c.Duration = TimeSpan.FromMilliseconds(5);
            t.FireStubTrigger();
        }
        public void Invoke_AnimatedColorChange_Changes()
        {
            SolidColorBrush      brush = new SolidColorBrush(Colors.Red);
            ChangePropertyAction c     = CreateChangePropertyAction("Color", Colors.Gray);
            StubTrigger          t     = CreateStubTrigger();

            AttachAction(brush, t, c);
            c.Duration = TimeSpan.FromMilliseconds(5);
            t.FireStubTrigger();
        }
        public void Invoke_AnimatedDoubleChange_Changes()
        {
            Ellipse e = new Ellipse();
            ChangePropertyAction c = CreateChangePropertyAction("Opacity", 0.0d);
            StubTrigger          t = CreateStubTrigger();

            AttachAction(e, t, c);
            c.Duration = TimeSpan.FromMilliseconds(5);
            t.FireStubTrigger();
        }
        public void Invoke_RedFillToGreen_ChangesToGreen()
        {
            Rectangle            rectangle = CreateRectangle();
            StubTrigger          trigger   = CreateStubTrigger();
            ChangePropertyAction action    = CreateChangePropertyAction("Fill", Brushes.Green);

            AttachAction(rectangle, trigger, action);
            trigger.FireStubTrigger();

            Assert.AreEqual(rectangle.Fill, Brushes.Green, "rectangle.Fill == Green");
        }
        public void Invoke_InaccessibleProperty_ThrowsArgumentException()
        {
            Button      button  = CreateButton();
            StubTrigger trigger = CreateStubTrigger();
            // EffectiveValuesInitialSize is an internal property on Button, and should be inaccessible
            ChangePropertyAction action = CreateChangePropertyAction("EffectiveValuesInitialSize", 10);

            AttachAction(button, trigger, action);

            trigger.FireStubTrigger();
        }
        public void Invoke_IncrementWithInvalidAdditionType_SetsValueInstead()
        {
            Rectangle            host    = CreateRectangle();
            StubTrigger          trigger = CreateStubTrigger();
            ChangePropertyAction action  = CreateChangePropertyAction("Fill", Brushes.Red);

            action.Increment = true;
            AttachAction(host, trigger, action);

            trigger.FireStubTrigger();
            Assert.AreEqual(host.Fill, Brushes.Red, "Rectangle.Fill should be Red, as Increment was not possible.");
        }
        public void Invoke_IncrementUnsetNonAdditiveProperty_SetsPropertyToSpecifiedValue()
        {
            Rectangle            host    = CreateEmptyRectangle();
            StubTrigger          trigger = CreateStubTrigger();
            ChangePropertyAction action  = CreateChangePropertyAction("Fill", Brushes.Red);

            action.Increment = true;
            AttachAction(host, trigger, action);

            trigger.FireStubTrigger();
            Assert.AreEqual(host.Fill, Brushes.Red, "Rectangle's Fill should have been set to Red, ignoring the Increment.");
        }
        public void Invoke_IncrementWriteOnlyProperty_ThrowsInvalidOperationException()
        {
            Button host = CreateButton();
            ChangePropertyActionTargetStub target = CreateTargetStub();
            StubTrigger          trigger          = CreateStubTrigger();
            ChangePropertyAction action           = CreateChangePropertyAction(ChangePropertyActionTargetStub.WriteOnlyPropertyName, null);

            action.TargetObject = target;
            AttachAction(host, trigger, action);

            action.Increment = true;
            trigger.FireStubTrigger();
        }
        public void Invoke_IncrementWithDuration_ThrowsInvalidOperationException()
        {
            Button host = CreateButton();
            ChangePropertyActionTargetStub target = CreateTargetStub();
            StubTrigger          trigger          = CreateStubTrigger();
            ChangePropertyAction action           = CreateChangePropertyAction("Opacity", 0.5d);

            action.Increment = true;
            action.Duration  = new System.Windows.Duration(TimeSpan.FromSeconds(1));
            AttachAction(host, trigger, action);

            trigger.FireStubTrigger();
        }
        public void Invoke_AnimateChangeOnNonDependencyProperty_ThrowsInvalidOperationException()
        {
            Button button = CreateButton();
            ChangePropertyActionTargetStub stubTarget = CreateTargetStub();
            StubTrigger          trigger = CreateStubTrigger();
            ChangePropertyAction action  = CreateChangePropertyAction(ChangePropertyActionTargetStub.DoublePropertyName, 10);

            AttachAction(button, trigger, action);
            action.Duration     = TimeSpan.FromMilliseconds(10);
            action.TargetObject = stubTarget;

            trigger.FireStubTrigger();
        }
        // todo: might already have this one
        public void Invoke_ValueIsChanged_NewValueIsSet()
        {
            Button host = CreateButton();
            ChangePropertyActionTargetStub target = CreateTargetStub();
            StubTrigger          trigger          = CreateStubTrigger();
            ChangePropertyAction action           = CreateChangePropertyAction(ChangePropertyActionTargetStub.ObjectPropertyName, 10.0d);

            action.TargetObject = target;
            AttachAction(host, trigger, action);
            action.Value = host;
            trigger.FireStubTrigger();

            Assert.AreEqual(target.ObjectProperty, host, "target.DoubleProperty should be host after Invoke");
        }
        // todo: might already have this one
        public void Invoke_PropertyIsChanged_OldPropertyIsNotSet()
        {
            Button host = CreateButton();
            ChangePropertyActionTargetStub target = CreateTargetStub();
            StubTrigger          trigger          = CreateStubTrigger();
            ChangePropertyAction action           = CreateChangePropertyAction(ChangePropertyActionTargetStub.ObjectPropertyName, 10.0d);

            action.TargetObject = target;
            AttachAction(host, trigger, action);
            action.PropertyName = "DoubleProperty";
            trigger.FireStubTrigger();

            Assert.IsNull(target.ObjectProperty, "target.DoubleProperty should be null after Invoke");
        }
        public void Invoke_TargetObjectReferenceTypeProperty_SetsProperty()
        {
            Button value = CreateButton();
            Button host  = CreateButton();
            ChangePropertyActionTargetStub target = CreateTargetStub();
            StubTrigger          trigger          = CreateStubTrigger();
            ChangePropertyAction action           = CreateChangePropertyAction(ChangePropertyActionTargetStub.ObjectPropertyName, value);

            action.TargetObject = target;
            AttachAction(host, trigger, action);
            trigger.FireStubTrigger();

            Assert.AreEqual(target.ObjectProperty, value, "target.ObjectProperty should point to the Button after Invoke");
        }
        public void Invoke_TargetObjectValueTypeProperty_SetsProperty()
        {
            double value = 10.0d;
            Button host  = CreateButton();
            ChangePropertyActionTargetStub target = CreateTargetStub();
            StubTrigger          trigger          = CreateStubTrigger();
            ChangePropertyAction action           = CreateChangePropertyAction(ChangePropertyActionTargetStub.DoublePropertyName, value);

            action.TargetObject = target;
            AttachAction(host, trigger, action);
            trigger.FireStubTrigger();

            Assert.AreEqual(target.DoubleProperty, value, "target.DoubleProperty should be 10 after Invoke");
        }
        public void Invoke_ChangeValueFromGreenToYellow_ChangesToAppropriateValue()
        {
            Rectangle            rectangle = CreateRectangle();
            StubTrigger          trigger   = CreateStubTrigger();
            ChangePropertyAction action    = CreateChangePropertyAction("Fill", Brushes.Green);

            AttachAction(rectangle, trigger, action);
            trigger.FireStubTrigger();

            action.Value = Brushes.Yellow;
            trigger.FireStubTrigger();

            Assert.AreEqual(rectangle.Fill, Brushes.Yellow, "rectangle.Fill == Yellow");
        }
        public void Invoke_ChangePropertyFromFillToStroke_ChangesAppropriateProperty()
        {
            Rectangle            rectangle = CreateRectangle();
            StubTrigger          trigger   = CreateStubTrigger();
            ChangePropertyAction action    = CreateChangePropertyAction("Fill", Brushes.Green);

            AttachAction(rectangle, trigger, action);
            trigger.FireStubTrigger();

            action.PropertyName = "Stroke";
            trigger.FireStubTrigger();

            Assert.AreEqual(rectangle.Stroke, Brushes.Green, "rectangle.Stroke == Green");
        }
        public void Invoke_TargetObjectValueConflictingTypeProperty_AssignBoolToString()
        {
            Button host = CreateButton();
            ChangePropertyActionTargetStub target = CreateTargetStub();
            StubTrigger          trigger          = CreateStubTrigger();
            ChangePropertyAction action           = CreateChangePropertyAction(ChangePropertyActionTargetStub.StringPropertyName, true);

            AttachAction(host, trigger, action);

            action.TargetObject = target;
            trigger.FireStubTrigger();

            Assert.AreEqual(target.StringProperty, "True", "StringProperty should have been assigned True as a string");
        }
        public void Invoke_IncrementWithAmbiguousAdditionOverride_ThrowsArgumentException()
        {
            Button host = CreateButton();
            ChangePropertyActionTargetStub target = CreateTargetStub();
            StubTrigger          trigger          = CreateStubTrigger();
            ChangePropertyAction action           = CreateChangePropertyAction(ChangePropertyActionTargetStub.ObjectPropertyName, "#FF00FF00");

            target.ObjectProperty = CreateAdditiveObject();
            action.TargetObject   = target;
            action.Increment      = true;
            AttachAction(host, trigger, action);

            trigger.FireStubTrigger();
        }
        public void Invoke_IncrementDoubleProperty_IncrementsProperty()
        {
            ChangePropertyActionTargetStub target = CreateTargetStub();
            Button               host             = CreateButton();
            StubTrigger          trigger          = CreateStubTrigger();
            ChangePropertyAction action           = CreateChangePropertyAction(ChangePropertyActionTargetStub.DoublePropertyName, 10.5d);

            target.DoubleProperty = 10.0d;
            action.TargetObject   = target;
            action.Increment      = true;
            AttachAction(host, trigger, action);
            trigger.FireStubTrigger();

            Assert.AreEqual(target.DoubleProperty, 20.5d, "DoubleProperty should have been incremented by 10.5 to a total of 20.5");
        }
        public void Invoke_IncrementByNull_SetsNullInstead()
        {
            ChangePropertyActionTargetStub target = CreateTargetStub();
            Button               host             = CreateButton();
            StubTrigger          trigger          = CreateStubTrigger();
            ChangePropertyAction action           = CreateChangePropertyAction(ChangePropertyActionTargetStub.ObjectPropertyName, null);

            AttachAction(host, trigger, action);
            action.TargetObject   = target;
            action.Increment      = true;
            target.ObjectProperty = "not null";

            trigger.FireStubTrigger();
            Assert.IsNull(target.ObjectProperty, "Target.ObjectProperty should have been set to null, ignoring the increment.");
        }
        public void Invoke_IncrementStringProperty_AppendsStringValue()
        {
            ChangePropertyActionTargetStub target = CreateTargetStub();
            Button               host             = CreateButton();
            StubTrigger          trigger          = CreateStubTrigger();
            ChangePropertyAction action           = CreateChangePropertyAction(ChangePropertyActionTargetStub.StringPropertyName, " World!");

            target.StringProperty = "Hello";
            action.TargetObject   = target;
            action.Increment      = true;
            AttachAction(host, trigger, action);
            trigger.FireStubTrigger();

            Assert.AreEqual(target.StringProperty, "Hello World!", "StringProperty should have been appended with 'World!', resulting in 'Hello World!'");
        }
        public void Invoke_IncrementWithMultipleAdditionOverrides_CallsCorrectOverride()
        {
            Button host = CreateButton();
            ChangePropertyActionTargetStub target = CreateTargetStub();
            StubTrigger          trigger          = CreateStubTrigger();
            ChangePropertyAction action           = CreateChangePropertyAction(ChangePropertyActionTargetStub.ObjectPropertyName, 0.5d);

            target.ObjectProperty = CreateAdditiveObject();
            action.TargetObject   = target;
            action.Increment      = true;
            AttachAction(host, trigger, action);

            trigger.FireStubTrigger();

            Assert.AreEqual(((AdditiveObjectStub)target.ObjectProperty).AddType, "double", "Double addition override should have been called.");
        }