示例#1
0
        public void CanExecutionTestAtLeastOneChild()
        {
            StringBuilder strBld = new StringBuilder(1000);
            var           child1 = new RelayCommand(new Action <object>(p1 => strBld.Append("1")), new Predicate <object>(p2 => true));
            var           child2 = new RelayCommand(new Action <object>(p1 => strBld.Append("2")), new Predicate <object>(p2 => false));
            var           child3 = new RelayCommand(new Action <object>(p1 => strBld.Append("3")), new Predicate <object>(p2 => false));

            HierarchyCommand hierCmd = new HierarchyCommand(
                new List <ICommand> {
                child1, child2, child3
            },
                new Action <object>(p1 => strBld.Append("Master")),
                new Predicate <object>(p2 => true),
                HierarchyExecuteStrategy.MasterAndAllChilds,
                HierarchyCanExecuteStrategy.DependsOnAtLeastOneChild);

            Assert.AreEqual(3, hierCmd.ChildCommands.Count());
            Assert.IsTrue(hierCmd.CanExecute(null));

            hierCmd.ClearCommands();
            var child1b = new RelayCommand(new Action <object>(p1 => strBld.Append("1")), new Predicate <object>(p2 => false));
            var child2b = new RelayCommand(new Action <object>(p1 => strBld.Append("2")), new Predicate <object>(p2 => false));
            var child3b = new RelayCommand(new Action <object>(p1 => strBld.Append("3")), new Predicate <object>(p2 => false));

            hierCmd.AddChildsCommand(new List <ICommand> {
                child1b, child2b, child3b
            });
            Assert.AreEqual(3, hierCmd.ChildCommands.Count());
            Assert.IsFalse(hierCmd.CanExecute(null));
        }
示例#2
0
        public void AddChildTest()
        {
            StringBuilder strBld = new StringBuilder(1000);

            HierarchyCommand hierCmd = new HierarchyCommand(
                new Action <object>(p1 => strBld.Append("Master")),
                new Predicate <object>(p2 => true),
                HierarchyExecuteStrategy.AllChildsOnly,
                HierarchyCanExecuteStrategy.DependsOnAllChilds);

            var child1 = new RelayCommand(new Action <object>(p1 => strBld.Append("1")), new Predicate <object>(p2 => true));
            var child2 = new RelayCommand(new Action <object>(p1 => strBld.Append("2")), new Predicate <object>(p2 => true));
            var child3 = new RelayCommand(new Action <object>(p1 => strBld.Append("3")), new Predicate <object>(p2 => true));

            hierCmd.AddChildCommand(child1);
            Assert.AreEqual(1, hierCmd.ChildCommands.Count());

            hierCmd.AddChildsCommand(new List <ICommand> {
                child2, child3, null
            });
            Assert.AreEqual(3, hierCmd.ChildCommands.Count());

            hierCmd.AddChildCommand(null);
            Assert.AreEqual(3, hierCmd.ChildCommands.Count());
        }
示例#3
0
        public void ExecutionTestMasterOnly()
        {
            StringBuilder strBld = new StringBuilder(1000);

            HierarchyCommand hierCmd = new HierarchyCommand(
                new Action <object>(p1 => strBld.Append("Master")),
                new Predicate <object>(p2 => true),
                HierarchyExecuteStrategy.MasterCommandOnly,
                HierarchyCanExecuteStrategy.DependsOnAllChilds);

            var child1 = new RelayCommand(new Action <object>(p1 => strBld.Append("1")), new Predicate <object>(p2 => true));
            var child2 = new RelayCommand(new Action <object>(p1 => strBld.Append("2")), new Predicate <object>(p2 => true));
            var child3 = new RelayCommand(new Action <object>(p1 => strBld.Append("3")), new Predicate <object>(p2 => true));

            hierCmd.AddChildsCommand(new List <ICommand> {
                child1, child2, child3
            });
            Assert.AreEqual(3, hierCmd.ChildCommands.Count());

            hierCmd.Execute(null);
            Assert.IsFalse(strBld.ToString().Contains("1"));
            Assert.IsFalse(strBld.ToString().Contains("2"));
            Assert.IsFalse(strBld.ToString().Contains("3"));
            Assert.IsTrue(strBld.ToString().Contains("Master"));
        }
示例#4
0
        public void ChildCommandsTest()
        {
            StringBuilder strBld = new StringBuilder(1000);

            HierarchyCommand hierCmd = new HierarchyCommand(
                new Action <object>(p1 => strBld.Append("Master")),
                new Predicate <object>(p2 => true),
                HierarchyExecuteStrategy.AllChildsOnly,
                HierarchyCanExecuteStrategy.DependsOnAllChilds);

            Assert.IsNotNull(hierCmd.ChildCommands);

            hierCmd.ChildCommands = null;
            Assert.IsNotNull(hierCmd.ChildCommands);
            Assert.IsFalse(hierCmd.ChildCommands.Any());

            hierCmd.Execute(null);
            Assert.IsTrue(string.IsNullOrEmpty(strBld.ToString()));
        }