public void ConsoleTaskIsCancelledTest()
        {
            var cancelKey    = new ConsoleKeyInfo('\u0011', ConsoleKey.Q, false, false, true);
            var notCancelKey = new ConsoleKeyInfo('A', ConsoleKey.A, false, false, true);

            var consoleMock = MockRepository.GenerateStrictMock <IConsole>();

            consoleMock
            .Expect(x => x.KeyAvailable)
            .Return(false)
            .Return(true)
            .Return(true);

            consoleMock
            .Expect(x => x.ReadKey(Arg <bool> .Is.Anything))
            .Return(notCancelKey)
            .Return(cancelKey);

            var task = ConsoleTask.StartNew
                       (
                LongRunningAction,
                cancelKey,
                consoleMock
                       );

            try
            {
                task.Wait();
            }
            catch (Exception)
            {
                Assert.IsTrue(task.IsCanceled);
            }
            consoleMock.VerifyAllExpectations();
        }
Exemplo n.º 2
0
        private void HandleCommand(Command cmd)
        {
            ConsoleTask task = null;

            try
            {
                if (cmd.Action == null)
                {
                    return;
                }

                if (!_tasksByCommand.TryGetValue(cmd.Action.ToLower(), out task))
                {
                    Console.WriteLine("> Unknown command");
                    return;
                }

                _currentTask = task;

                task.Parse(cmd.Arguments);
                task.Exec();

                _exit = task.IsExit;

                _currentTask = null;
            }
            catch (TerminalArgumentException ex)
            {
                Console.WriteLine("> {0} error : {1}", task.Name, ex.Message);
            }
            catch (Exception ex)
            {
                Console.WriteLine("> {0} error : {1}", task.Name, ex.Message);
            }
        }
Exemplo n.º 3
0
        public void AddTask(ConsoleTask task)
        {
            if (_tasksByCommand.ContainsKey(task.Command))
            {
                throw new TerminalTaskDuplicatedCommandException();
            }

            _tasks.Add(task);
            _tasksByCommand.Add(task.Command.ToLower(), task);

            foreach (var alias in task.Aliases)
            {
                if (_tasksByCommand.ContainsKey(alias))
                {
                    throw new TerminalTaskDuplicatedCommandException();
                }

                _tasksByCommand.Add(alias.ToLower(), task);
            }
        }
        public void ConsoleTaskFailsOnNullActionTest()
        {
            const Action <CancellationToken> nullExecuteAction = null;
            var cancelKey = new ConsoleKeyInfo();

            var aggregateException = Assert.Throws <AggregateException>
                                     (
                () =>
            {
                ConsoleTask
                .StartNew(nullExecuteAction, cancelKey)
                .Wait(CancellationToken.None);
            }
                                     );

            var exception = aggregateException.InnerExceptions.FirstOrDefault();

            Assert.IsNotNull(exception);
            Assert.IsInstanceOf <ArgumentNullException>(exception);
            Assert.AreEqual("executeAction", ((ArgumentNullException)exception).ParamName);
        }
        public void ConsoleTaskCompletesItselfTest()
        {
            var cancelKey = new ConsoleKeyInfo('\u0011', ConsoleKey.Q, false, false, true);

            var consoleMock = MockRepository.GenerateStrictMock <IConsole>();

            consoleMock.Stub(x => x.KeyAvailable).Return(true);
            consoleMock
            .Stub(x => x.ReadKey(Arg <bool> .Is.Anything))
            .Return(new ConsoleKeyInfo('A', ConsoleKey.A, false, false, true));

            var task = ConsoleTask.StartNew
                       (
                LongRunningAction,
                cancelKey,
                consoleMock
                       );

            task.Wait(CancellationToken.None);

            Assert.IsFalse(task.IsCanceled);
        }
Exemplo n.º 6
0
 /// <summary>
 /// Constructor starts a repeating kernel task that moves
 /// messages from the insert queue to the log.
 /// </summary>
 public ConsoleManager(UserSession parent) : base(parent)
 {
     _task = new ConsoleTask(this);
 }
Exemplo n.º 7
0
 public static void Display(ConsoleTask task)
 {
     Queue.Enqueue(task);
     DisplayCore();
 }