Esempio n. 1
0
        public async Task AsyncronousMacroCommand()
        {
            var cmdNoop = new DelegateCommand(() =>
            {
                System.Threading.Thread.Sleep(20);
                return(true);
            });
            var cmdAddNumbers = new DelegateCommand((s, c) =>
            {
                var v1  = PropertyResolver.GetPropertyValue <int>(c, "Val1");
                var v2  = PropertyResolver.GetPropertyValue <int>(c, "Val2");
                var sum = v1 + v2;
                return(new BoolCommandResult(true, string.Format("Sum of {0} + {1} = {2}", v1, v2, sum)));
            });
            var cmdMacro = new MacroCommand();

            cmdMacro.Commands.Add(cmdNoop);
            cmdMacro.Commands.Add(cmdAddNumbers);
            cmdMacro.Commands.Add(cmdNoop);
            cmdMacro.Commands.Add(cmdAddNumbers);
            cmdMacro.AllowAsyncExecution = true;
            var contextObj = new
            {
                Val1   = 2,
                Val2   = 5,
                Result = -1
            };
            var cmdRes = await cmdMacro.ExecuteAsync(this.svcProvider, contextObj);

            Assert.IsTrue(cmdRes.IsSuccess);
            Assert.AreEqual(cmdRes.Description, "4 commands executed - 4 successful and 0 failed");
        }