Example #1
0
        public void ActionTestWithStartTimeDeadlineTest(bool useStartTime, bool useDeadLine)
        {
            //Arrange
            Quest quest  = new FakeQuest();
            Quest parent = new FakeQuest();

            IQuestViewModel questViewModel = MockRepository.GenerateStrictMock <IQuestViewModel>();

            questViewModel.Expect(qvm => qvm.Model).
            Repeat.Once().
            Return(quest);

            ICommand addCommand = MockRepository.GenerateStrictMock <ICommand>();

            addCommand.Expect(ac => ac.Execute()).
            Return(true).
            Repeat.Once();
            addCommand.Expect(ac => ac.Commit()).
            Return(true).
            Repeat.Once();

            IQuestTree questRepository = MockRepository.GenerateStrictMock <IQuestTree>();

            questRepository.Expect(qt => qt.Get(Arg <Predicate <Quest> > .Is.NotNull)).
            Repeat.Once().
            Return(parent);

            ITreeCommandsFactory factory = MockRepository.GenerateStrictMock <ITreeCommandsFactory>();

            factory.Expect(f => f.AddQuest(Arg <Quest> .Is.Equal(parent), Arg <Quest> .Is.Equal(quest)))
            .Return(addCommand)
            .Repeat.Once();

            IQuestValidator <ClarifiedResponse <int> > questValidator =
                MockRepository.GenerateStrictMock <IQuestValidator <ClarifiedResponse <int> > >();

            IQuestViewModelFactory questViewModelFactory = MockRepository.GenerateStrictMock <IQuestViewModelFactory>();

            questViewModelFactory.Expect(qc => qc.CreateQuestViewModel()).
            Repeat.Once().
            Return(questViewModel);

            QuestCreateViewModel viewModel = new QuestCreateViewModel(
                questViewModelFactory,
                questValidator,
                questRepository,
                factory);

            //Act
            viewModel.Initialize();
            viewModel.Action();

            //Assert
            questViewModel.VerifyAllExpectations();
            addCommand.VerifyAllExpectations();
            questRepository.VerifyAllExpectations();
            factory.VerifyAllExpectations();
            questValidator.VerifyAllExpectations();
            questViewModelFactory.VerifyAllExpectations();
        }
Example #2
0
        public void RestartQuestValidPositionTest()
        {
            //Arrange
            int   position  = 0;
            Quest toRestart = new FakeQuest();

            List <Quest> leaves = new List <Quest> {
                toRestart
            };

            ICommand startCommand = MockRepository.GenerateStrictMock <ICommand>();

            startCommand.Expect(dc => dc.Execute()).
            Repeat.Once().
            Return(true);
            startCommand.Expect(dc => dc.Commit()).
            Repeat.Once().
            Return(true);

            ICommand cancelCommand = MockRepository.GenerateStrictMock <ICommand>();

            cancelCommand.Expect(dc => dc.Execute()).
            Repeat.Once().
            Return(true);
            cancelCommand.Expect(dc => dc.Commit()).
            Repeat.Once().
            Return(true);

            IQuestListModel model = MockRepository.GenerateStrictMock <IQuestListModel>();

            model.Expect(rep => rep.Leaves).
            Repeat.Once().
            Return(leaves);

            IStateCommandsFactory stateCommands = MockRepository.GenerateStrictMock <IStateCommandsFactory>();

            stateCommands.Expect(sc => sc.CancelQuest(Arg <Quest> .Is.Equal(toRestart))).
            Repeat.Once().
            Return(cancelCommand);
            stateCommands.Expect(sc => sc.StartQuest(Arg <Quest> .Is.Equal(toRestart))).
            Repeat.Once().
            Return(startCommand);

            ITreeCommandsFactory repoCommands = MockRepository.GenerateStrictMock <ITreeCommandsFactory>();

            ResultsQuestListViewModel viewModel = new ResultsQuestListViewModel(model, stateCommands, repoCommands);

            //Act
            Task startTask = viewModel.RestartQuest(position);

            //Assert
            Assert.IsNotNull(startTask);
            startTask.Wait();

            cancelCommand.VerifyAllExpectations();
            startCommand.VerifyAllExpectations();
            model.VerifyAllExpectations();
            stateCommands.VerifyAllExpectations();
            repoCommands.VerifyAllExpectations();
        }
Example #3
0
        public void UndoAfterExecuteCommitTest()
        {
            //Arrange
            ICommand innerCommand = MockRepository.GenerateStrictMock <ICommand>();

            innerCommand.Expect(ic => ic.Execute()).
            Repeat.Once().
            Return(true);
            innerCommand.Expect(ic => ic.Commit()).
            Repeat.Once().
            Return(true);
            innerCommand.Expect(ic => ic.Undo()).
            Repeat.Never();

            SwitchCommand command = new SwitchCommand(innerCommand);

            //Act
            bool execteResult = command.Execute();
            bool commitResult = command.Commit();
            bool undoResult   = command.Undo();

            //Assert
            Assert.IsTrue(execteResult);
            Assert.IsTrue(commitResult);
            Assert.IsFalse(undoResult);

            innerCommand.VerifyAllExpectations();
        }
        public void DeleteQuestValidPositionTest()
        {
            //Arrange
            int   position = 0;
            Quest parent   = new FakeQuest();
            Quest toDelete = new FakeQuest();

            List <Quest> leaves = new List <Quest> {
                toDelete
            };

            ICommand deleteCommand = MockRepository.GenerateStrictMock <ICommand>();

            deleteCommand.Expect(dc => dc.Execute()).
            Repeat.Once().
            Return(true);
            deleteCommand.Expect(dc => dc.Commit()).
            Repeat.Once().
            Return(true);

            IQuestListModel model = MockRepository.GenerateStrictMock <IQuestListModel>();

            model.Expect(rep => rep.Leaves).
            Repeat.Once().
            Return(leaves);
            model.Expect(m => m.Parent).
            Repeat.Once().
            Return(parent);

            IStateCommandsFactory stateCommands = MockRepository.GenerateStrictMock <IStateCommandsFactory>();

            ITreeCommandsFactory repoCommands = MockRepository.GenerateStrictMock <ITreeCommandsFactory>();

            repoCommands.Expect(rc => rc.DeleteQuest(Arg <Quest> .Is.Equal(parent), Arg <Quest> .Is.Equal(toDelete))).
            Repeat.Once().
            Return(deleteCommand);

            QuestListViewModel viewModel = new QuestListViewModel(model, stateCommands, repoCommands);

            //Act
            Task deleteTask = viewModel.DeleteQuest(position);

            //Assert
            Assert.IsNotNull(deleteTask);
            deleteTask.Wait();

            model.VerifyAllExpectations();
            deleteCommand.VerifyAllExpectations();
            repoCommands.VerifyAllExpectations();
        }
Example #5
0
        public void CancelQuestTest()
        {
            //Arrange
            int position = 0;

            Quest toFail = new FakeQuest();

            List <Quest> leaves = new List <Quest> {
                toFail
            };

            ICommand returnedCommand = MockRepository.GenerateStrictMock <ICommand>();

            returnedCommand.Expect(rc => rc.Execute()).
            Repeat.Once().
            Return(true);
            returnedCommand.Expect(rc => rc.Commit()).
            Repeat.Once().
            Return(true);

            IQuestListModel model = MockRepository.GenerateStrictMock <IQuestListModel>();

            model.Expect(m => m.Leaves).
            Repeat.Once().
            Return(leaves);

            IStateCommandsFactory stateCommands = MockRepository.GenerateStrictMock <IStateCommandsFactory>();

            stateCommands.Expect(sc => sc.CancelQuest(Arg <Quest> .Is.Equal(toFail))).
            Repeat.Once().
            Return(returnedCommand);

            ITreeCommandsFactory repoCommands = MockRepository.GenerateStrictMock <ITreeCommandsFactory>();


            ActiveQuestListViewModel viewModel = new ActiveQuestListViewModel(model, stateCommands, repoCommands);


            //Act
            Task cancelTask = viewModel.CancelQuest(position);

            //Assert
            Assert.IsNotNull(cancelTask);
            cancelTask.Wait();

            returnedCommand.VerifyAllExpectations();
            stateCommands.VerifyAllExpectations();
            repoCommands.VerifyAllExpectations();
            model.VerifyAllExpectations();
        }
Example #6
0
        public void UndoOrderTest()
        {
            //Arrange
            Stack <int> stack = new Stack <int>();

            ICommand firstOne = MockRepository.GenerateStrictMock <ICommand>();

            firstOne.Expect(c => c.Undo()).Repeat.Once().Return(true).Do(new Func <bool>((() =>
            {
                stack.Push(1);
                return(true);
            })));

            ICommand secondOne = MockRepository.GenerateStrictMock <ICommand>();

            secondOne.Expect(c => c.Undo()).Repeat.Once().Return(true).Do(new Func <bool>((() =>
            {
                stack.Push(2);
                return(true);
            })));

            ICommand composite = new CompositeCommand(new[] { firstOne, secondOne });

            //Act
            composite.Undo();

            //Assert
            Assert.AreEqual(1, stack.Pop());
            Assert.AreEqual(2, stack.Pop());

            firstOne.VerifyAllExpectations();
            secondOne.VerifyAllExpectations();
        }
        public void SetUp()
        {
            command = MockRepository.GenerateMock<ICommand>();
            command.Expect(x => x.CanExecute(null)).Return(true).IgnoreArguments();

            screenAction = new ScreenAction
            {
                Binding = new InputBinding(command, new KeyGesture(Key.F3)),
                Name = "some text"
            };

            item = new CommandMenuItem(screenAction);
        }
Example #8
0
        public void UndoWithoutExecuteTest()
        {
            //Arrange
            ICommand innerCommand = MockRepository.GenerateStrictMock <ICommand>();

            innerCommand.Expect(ic => ic.Undo()).
            Repeat.Never();

            SwitchCommand command = new SwitchCommand(innerCommand);

            //Act
            bool undoResult = command.Undo();

            //Assert
            Assert.IsFalse(undoResult);

            innerCommand.VerifyAllExpectations();
        }
Example #9
0
        public void CommitTest()
        {
            //Arrange
            ICommand innerCommand = MockRepository.GenerateStrictMock <ICommand>();

            innerCommand.Expect(ic => ic.Commit()).
            Repeat.Once().
            Return(true);

            SwitchCommand command = new SwitchCommand(innerCommand);

            //Act
            bool commitResult = command.Commit();

            //Assert
            Assert.IsTrue(commitResult);

            innerCommand.VerifyAllExpectations();
        }
Example #10
0
        public void ValidFalseTest()
        {
            //Arrange
            ICommand firstOne = MockRepository.GenerateStrictMock <ICommand>();

            firstOne.Expect(c => c.IsValid()).Repeat.Once().Return(true);

            ICommand secondOne = MockRepository.GenerateStrictMock <ICommand>();

            secondOne.Expect(c => c.IsValid()).Repeat.Once().Return(false);

            ICommand composite = new CompositeCommand(new[] { firstOne, secondOne });

            //Act
            bool isValid = composite.IsValid();

            //Assert
            Assert.IsFalse(isValid);

            firstOne.VerifyAllExpectations();
            secondOne.VerifyAllExpectations();
        }
Example #11
0
        public void ActionTest(bool isCommandExecuted)
        {
            int questId = 42;

            Quest model = new FakeQuest()
            {
                StartTime = DateTime.Now,
                Deadline  = DateTime.Now
            };

            IQuestViewModel questViewModel = MockRepository.GenerateStrictMock <IQuestViewModel>();

            questViewModel.Expect(qvm => qvm.Model).
            SetPropertyWithArgument(model).
            Repeat.Once();
            questViewModel.Expect(qvm => qvm.Model).
            Repeat.Once().
            Return(model);
            questViewModel.Expect(qvm => qvm.UseStartTime).
            SetPropertyWithArgument(true).
            Repeat.Once();
            questViewModel.Expect(qvm => qvm.UseDeadline).
            SetPropertyWithArgument(true).
            Repeat.Once();

            IQuestTree questTree = MockRepository.GenerateStrictMock <IQuestTree>();

            questTree.Expect(qt => qt.Get(Arg <Predicate <Quest> > .Is.NotNull)).
            Repeat.Once().
            Return(model);

            IQuestViewModelFactory questFactory = MockRepository.GenerateStrictMock <IQuestViewModelFactory>();

            questFactory.Expect(qf => qf.CreateQuestViewModel()).
            Repeat.Once().
            Return(questViewModel);

            IQuestValidator <ClarifiedResponse <int> > questValidator =
                MockRepository.GenerateStrictMock <IQuestValidator <ClarifiedResponse <int> > >();

            ICommand updateCommand = MockRepository.GenerateStrictMock <ICommand>();

            updateCommand.Expect(uc => uc.Execute()).
            Repeat.Once().
            Return(isCommandExecuted);
            if (isCommandExecuted)
            {
                updateCommand.Expect(uc => uc.Commit()).
                Repeat.Once().
                Return(true);
            }

            ITreeCommandsFactory treeCommands =
                MockRepository.GenerateStrictMock <ITreeCommandsFactory>();

            treeCommands.Expect(tc => tc.UpdateQuest(Arg <Quest> .Is.Equal(model))).
            Repeat.Once().
            Return(updateCommand);

            QuestEditViewModel vm = new QuestEditViewModel(questFactory, questValidator, questTree, treeCommands)
            {
                QuestId = questId
            };

            //Act
            vm.Initialize();
            vm.Action();

            //Assert
            questViewModel.VerifyAllExpectations();
            questTree.VerifyAllExpectations();
            questFactory.VerifyAllExpectations();
            questValidator.VerifyAllExpectations();
            updateCommand.VerifyAllExpectations();
            treeCommands.VerifyAllExpectations();
        }
Example #12
0
        public void SetUp()
        {
            _mocks = new MockRepository();

            _outputWriter = _mocks.DynamicMock<ICommandAccess>();
            _executor = _mocks.DynamicMock<ICommand>();
            _commandManager = new CommandManager(_outputWriter);

            _executor.Expect(x => x.Identifier).Return("test");
        }