示例#1
0
        private bool Evaluate(IDynamicBinding <ICondition> binding)
        {
            using (var context = binding.CreateDynamicContext(this))
            {
                context.AddInterfaceLayer(this.Owner);
                context.AddInterfaceLayer(this.Owner);
                var isBindingValid = binding.Evaluate(context);
                var isValid        = false;

                if (!isBindingValid)
                {
                    tracer.Warn(Resources.MenuAutomation_ConditionBindingFailed,
                                this.Name,
                                binding.UserMessage,
                                ObjectDumper.ToString(binding.EvaluationResults, 5));
                }
                else
                {
                    isValid = binding.Value.Evaluate();
                    if (!isValid)
                    {
                        tracer.Verbose(Resources.MenuAutomation_ConditionEvaluatedFalse,
                                       this.Name,
                                       binding.UserMessage,
                                       ObjectDumper.ToString(binding.EvaluationResults, 5));
                    }
                }

                return(isBindingValid && isValid);
            }
        }
示例#2
0
        /// <summary>
        /// Creates the dynamic context and adds the extension and its owner as dynamic context values.
        /// </summary>
        public static IDynamicBindingContext CreateDynamicContext <T>(this IDynamicBinding <T> binding, IAutomationExtension extension)
            where T : class
        {
            Guard.NotNull(() => binding, binding);
            Guard.NotNull(() => extension, extension);

            var context = binding.CreateDynamicContext();

            context.AddAutomation(extension);

            return(context);
        }
        public void Initialize()
        {
            this.tracer = Mock.Of<ITracer>();
            this.context = Mock.Of<IDynamicBindingContext>();
            this.valueProvider = Mock.Of<IValueProvider>(vp => (string)vp.Evaluate() == "Foo");

            this.binding = Mock.Of<IDynamicBinding<IValueProvider>>(binding =>
                binding.Evaluate(It.IsAny<IDynamicBindingContext>()) == true &&
                binding.Value == this.valueProvider &&
                binding.CreateDynamicContext() == this.context);

            this.bindingFactory = Mock.Of<IBindingFactory>(factory =>
                factory.CreateBinding<IValueProvider>(It.IsAny<IBindingSettings>()) == this.binding);
        }
        public void Initialize()
        {
            this.tracer        = Mock.Of <ITracer>();
            this.context       = Mock.Of <IDynamicBindingContext>();
            this.valueProvider = Mock.Of <IValueProvider>(vp => (string)vp.Evaluate() == "Foo");

            this.binding = Mock.Of <IDynamicBinding <IValueProvider> >(binding =>
                                                                       binding.Evaluate(It.IsAny <IDynamicBindingContext>()) == true &&
                                                                       binding.Value == this.valueProvider &&
                                                                       binding.CreateDynamicContext() == this.context);

            this.bindingFactory = Mock.Of <IBindingFactory>(factory =>
                                                            factory.CreateBinding <IValueProvider>(It.IsAny <IBindingSettings>()) == this.binding);
        }
示例#5
0
        private bool Evaluate(IDynamicBinding <ICondition> binding, IEvent <EventArgs> args)
        {
            using (var context = binding.CreateDynamicContext(this))
            {
                AddEventArgsToBindingContext(args, context);

                var result = binding.Evaluate(context) && binding.Value.Evaluate();

                if (!result)
                {
                    tracer.Verbose(Resources.MenuAutomation_ConditionEvaluatedFalse,
                                   this.Name, binding.UserMessage, ObjectDumper.ToString(binding.EvaluationResults, 5));
                }

                return(result);
            }
        }
示例#6
0
        private ICondition EvaluateBinding(IDynamicBinding <ICondition> binding)
        {
            using (var context = binding.CreateDynamicContext(this))
            {
                context.AddInterfaceLayer(this.Owner);

                if (!binding.Evaluate(context))
                {
                    tracer.Warn(Resources.EventAutomation_ConditionBindingFailed,
                                this.Name, binding.UserMessage, ObjectDumper.ToString(binding.EvaluationResults, 5));

                    return(InvalidBindingCondition.Instance);
                }
                else
                {
                    return(binding.Value);
                }
            }
        }