public void TraverseToRoot()
        {
            //Arrange
            int position = 0;

            List <Quest> children = new List <Quest>()
            {
                new FakeQuest(),
            };

            Quest parent = new FakeQuest {
                Children = children
            };


            Quest childToTraverse = children[position];

            childToTraverse.Parent = parent;


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

            tree.Expect(tr => tr.IsInitialized()).
            Repeat.Once().
            Return(true);
            tree.Expect(tr => tr.Initialize()).
            Repeat.Never();
            tree.Expect(tr => tr.Root).
            Repeat.Times(7).
            Return(parent);
            tree.Expect(tr => tr.LoadChildren(Arg <Quest> .Is.Equal(childToTraverse))).
            Repeat.Once();
            tree.Expect(tr => tr.UnloadChildren(Arg <Quest> .Is.Equal(childToTraverse))).
            Repeat.Once();

            QuestListModelTopChildrenPredicate list = new QuestListModelTopChildrenPredicate(tree, q => true);

            //Act
            list.Initialize();
            bool traverseResult       = list.TraverseToLeaf(position);
            bool traverseToRootResult = list.TraverseToRoot();

            Quest        listParent   = list.Parent;
            List <Quest> listChildren = list.Leaves;

            //Assert
            Assert.AreEqual(parent, listParent);
            Assert.AreEqual(children, listChildren);

            Assert.IsTrue(traverseResult);
            Assert.IsTrue(traverseToRootResult);

            tree.VerifyAllExpectations();
        }
Exemple #2
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();
        }
Exemple #3
0
        public void UndoWithParentsTest()
        {
            //Arrange
            Quest root    = new FakeQuest();
            Quest parent0 = new FakeQuest();
            Quest parent1 = new FakeQuest();
            Quest parent2 = new FakeQuest();

            root.Parent    = null;
            parent0.Parent = root;
            parent1.Parent = parent0;
            parent2.Parent = parent1;

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

            tree.Expect(tr => tr.Root).Return(root).Repeat.Times(4);

            IQuestCommand innerCommand = MockRepository.GenerateStrictMock <IQuestCommand>();

            innerCommand.Expect(ic => ic.Undo(Arg <Quest> .Is.Equal(parent2))).Repeat.Once().Return(true);
            innerCommand.Expect(ic => ic.Undo(Arg <Quest> .Is.Equal(parent1))).Repeat.Once().Return(true);
            innerCommand.Expect(ic => ic.Undo(Arg <Quest> .Is.Equal(parent0))).Repeat.Once().Return(true);
            innerCommand.Expect(ic => ic.Undo(Arg <Quest> .Is.Equal(root))).Repeat.Never();

            UpToRootQuestCommand command = new UpToRootQuestCommand(parent2, tree, innerCommand);


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

            //Assert
            Assert.IsTrue(result);

            innerCommand.VerifyAllExpectations();
        }
        public void RefreshAfterInitializeTest()
        {
            //Arrange
            List <Quest> children = new List <Quest>()
            {
                new FakeQuest(),
                new FakeQuest(),
                new FakeQuest(),
                new FakeQuest()
            };

            Quest parent = new FakeQuest {
                Children = children
            };

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

            tree.Expect(tr => tr.IsInitialized()).
            Repeat.Once().
            Return(true);
            tree.Expect(tr => tr.Initialize()).
            Repeat.Never();
            tree.Expect(tr => tr.Root).
            Repeat.Times(3).
            Return(parent);

            IQuestOrderStrategy strategy = MockRepository.GenerateStrictMock <IQuestOrderStrategy>();

            strategy.Expect(str => str.Order(Arg <IEnumerable <Quest> > .Is.Anything)).
            Repeat.Twice().
            Return(children.OrderBy(q => q.IsImportant));

            QuestListModelTopChildrenPredicate list = new QuestListModelTopChildrenPredicate(tree, q => true)
            {
                OrderStrategy = strategy
            };

            //Act
            list.Initialize();
            list.Refresh();

            //Assert
            tree.VerifyAllExpectations();
            strategy.VerifyAllExpectations();
        }
Exemple #5
0
        public void InitializeRetrieveQuestWithoutStartDeadlineFromTreeByIdTest()
        {
            int questId = 42;

            Quest model = new FakeQuest()
            {
                StartTime = null,
                Deadline  = null
            };

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

            questViewModel.Expect(qvm => qvm.Model).
            SetPropertyWithArgument(model).
            Repeat.Once();
            questViewModel.Expect(qvm => qvm.UseStartTime).
            SetPropertyWithArgument(false).
            Repeat.Once();
            questViewModel.Expect(qvm => qvm.UseDeadline).
            SetPropertyWithArgument(false).
            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> > >();
            ITreeCommandsFactory treeCommands =
                MockRepository.GenerateStrictMock <ITreeCommandsFactory>();


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

            //Act
            vm.Initialize();

            //Assert
            questViewModel.VerifyAllExpectations();
            questTree.VerifyAllExpectations();
            questFactory.VerifyAllExpectations();
            questValidator.VerifyAllExpectations();
            treeCommands.VerifyAllExpectations();
        }
        public void InitializeWithInitializedQuestTreeWithoutChildrenTest()
        {
            //Arrange
            Quest parent = new FakeQuest {
                Children = null
            };

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

            tree.Expect(tr => tr.IsInitialized()).
            Repeat.Once().
            Return(false);
            tree.Expect(tr => tr.Initialize()).
            Repeat.Once();
            tree.Expect(tr => tr.Root).
            Repeat.Once().
            Return(parent);
            tree.Expect(tr => tr.LoadChildren(Arg <Quest> .Is.Equal(parent))).
            Repeat.Once();

            QuestListModelTopChildrenPredicate list = new QuestListModelTopChildrenPredicate(tree, q => q.State == State.Idle || q.State == State.Done);

            //Act
            bool isInitializedBeforeInitialization = list.IsInitialized();

            list.Initialize();
            bool isInitializedAfterInitialization = list.IsInitialized();

            //Assert
            Assert.IsFalse(isInitializedBeforeInitialization);
            Assert.IsTrue(isInitializedAfterInitialization);

            Quest listParent = list.Parent;

            Assert.AreEqual(parent, listParent);
            List <Quest> listChildren = list.Leaves;

            Assert.IsNull(listChildren);

            tree.VerifyAllExpectations();
        }
Exemple #7
0
        public void UndoAfterExecutionTest()
        {
            //Arrange
            IQuestTree repository = MockRepository.GenerateStrictMock <IQuestTree>();

            Quest parent   = new Quest();
            Quest toDelete = new Quest();

            repository.Expect(rep => rep.RemoveChild(Arg <Quest> .Is.Equal(parent), Arg <Quest> .Is.Equal(toDelete))).
            Repeat.Once();
            repository.Expect(rep => rep.AddChild(Arg <Quest> .Is.Equal(parent), Arg <Quest> .Is.Equal(toDelete))).Repeat.Once();

            ICommand command = new DeleteQuestCommand(repository, parent, toDelete);

            //Act
            command.Execute();
            command.Undo();

            //Assert
            repository.VerifyAllExpectations();
        }
Exemple #8
0
        public void ActionWithModelNullTest()
        {
            //Arrange
            IQuestViewModel questViewModel = MockRepository.GenerateStrictMock <IQuestViewModel>();

            questViewModel.Expect(qvm => qvm.Model).
            Repeat.Once().
            Return(null);
            questViewModel.Expect(qvm => qvm.UseStartTime).
            Repeat.Never();
            questViewModel.Expect(qvm => qvm.UseDeadline).
            Repeat.Never();


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

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

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

            factory.Expect(f => f.AddQuest(Arg <Quest> .Is.Anything, Arg <Quest> .Is.Anything))
            .Repeat.Never();

            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();
            questRepository.VerifyAllExpectations();
            factory.VerifyAllExpectations();
            questValidator.VerifyAllExpectations();
            questViewModelFactory.VerifyAllExpectations();
        }
        public void TraverseToRootInTheRootAlreadyTest()
        {
            //Arrange
            List <Quest> children = new List <Quest>()
            {
                new FakeQuest(),
                new FakeQuest(),
                new FakeQuest(),
                new FakeQuest()
            };

            Quest parent = new FakeQuest {
                Children = children
            };

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

            tree.Expect(tr => tr.IsInitialized()).
            Repeat.Once().
            Return(true);
            tree.Expect(tr => tr.Initialize()).
            Repeat.Never();
            tree.Expect(tr => tr.Root).
            Repeat.Times(3).
            Return(parent);

            QuestListModelTopChildrenPredicate list = new QuestListModelTopChildrenPredicate(tree, q => true);

            //Act
            list.Initialize();
            bool traverseResult = list.TraverseToRoot();

            //Assert

            Assert.IsFalse(traverseResult);
            tree.VerifyAllExpectations();
        }
        public void CommitTest()
        {
            //Arrange
            IQuestTree tree = MockRepository.GenerateStrictMock <IQuestTree>();

            tree.Expect(tr => tr.Save()).Repeat.Once();

            UpdateQuestCommand command = new UpdateQuestCommand(tree);

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

            //Assert
            Assert.IsTrue(result);

            tree.VerifyAllExpectations();
        }
        public void CommitTest()
        {
            //Arrange
            IQuestTree tree = MockRepository.GenerateStrictMock <IQuestTree>();

            tree.Expect(tr => tr.Save()).Repeat.Once();

            AbstractTreeMock mock = new AbstractTreeMock(tree);

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

            //Assert
            Assert.IsTrue(commitResult);

            tree.VerifyAllExpectations();
        }
        public void ExecuteTest()
        {
            //Arrange
            IQuestTree repository = MockRepository.GenerateStrictMock <IQuestTree>();

            Quest parent = new Quest();
            Quest toAdd  = new Quest();

            repository.Expect(rep => rep.AddChild(Arg <Quest> .Is.Equal(parent), Arg <Quest> .Is.Equal(toAdd))).
            Repeat.Once();

            ICommand command = new AddQuestCommand(repository, parent, toAdd);

            //Act
            command.Execute();

            //Assert
            repository.VerifyAllExpectations();
        }
        public void UndoTest()
        {
            //Arrange
            Quest quest = QuestHelper.CreateQuest();

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

            tree.Expect(tr => tr.RevertUpdate(Arg <Quest> .Is.Equal(quest))).Repeat.Once();

            UpdateQuestCommand command = new UpdateQuestCommand(tree);

            //Act
            bool result = command.Undo(quest);

            //Assert
            Assert.IsTrue(result);

            tree.VerifyAllExpectations();
        }
Exemple #14
0
        public void ExecuteTest()
        {
            //Arrange
            Quest quest = QuestHelper.CreateQuest();

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

            tree.Expect(tr => tr.LoadChildren(Arg <Quest> .Is.Equal(quest))).Repeat.Once();

            LoadChildrenQuestCommand command = new LoadChildrenQuestCommand(tree);

            //Act
            bool result = command.Execute(quest);

            //Assert
            Assert.IsTrue(result);

            tree.VerifyAllExpectations();
        }
Exemple #15
0
        public void ExecuteTest()
        {
            //Arrange
            IQuestTree repository = MockRepository.GenerateStrictMock <IQuestTree>();

            Quest parent   = QuestHelper.CreateQuest();
            Quest toDelete = QuestHelper.CreateQuest(42);

            repository.Expect(rep => rep.RemoveChild(Arg <Quest> .Is.Equal(parent), Arg <Quest> .Is.Equal(toDelete))).
            Repeat.Once();

            ICommand command = new DeleteQuestCommand(repository, parent, toDelete);

            //Act
            bool result = command.Execute();

            //Assert
            Assert.IsTrue(result);

            repository.VerifyAllExpectations();
        }
        public void TraverseToLeafWithOrderStrategy()
        {
            //Arrange
            int position = 0;
            Func <Quest, bool> predicate = q => true;
            List <Quest>       children  = new List <Quest>()
            {
                new FakeQuest(),
                new FakeQuest(),
                new FakeQuest(),
                new FakeQuest()
            };

            Quest        childToTraverse = children[position];
            List <Quest> childChildren   = new List <Quest>();

            Quest parent = new FakeQuest {
                Children = children
            };

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

            tree.Expect(tr => tr.IsInitialized()).
            Repeat.Once().
            Return(true);
            tree.Expect(tr => tr.Initialize()).
            Repeat.Never();
            tree.Expect(tr => tr.Root).
            Repeat.Times(3).
            Return(parent);
            tree.Expect(tr => tr.LoadChildren(Arg <Quest> .Is.Equal(childToTraverse))).
            Repeat.Once().
            Do(new Action <Quest>((q) =>
            {
                q.Children = childChildren;
            }));

            IQuestOrderStrategy strategy = MockRepository.GenerateStrictMock <IQuestOrderStrategy>();

            strategy.Expect(str => str.Order(Arg <IEnumerable <Quest> > .Is.Anything))
            .Repeat.Once()
            .Return(children.OrderBy(q => q.IsImportant));
            strategy.Expect(str => str.Order(Arg <IEnumerable <Quest> > .Is.Anything))
            .Repeat.Once()
            .Return(childChildren.OrderBy(q => q.IsImportant));

            QuestListModelTopChildrenPredicate list = new QuestListModelTopChildrenPredicate(tree, predicate)
            {
                OrderStrategy = strategy
            };

            //Act
            list.Initialize();
            bool traverseResult = list.TraverseToLeaf(position);

            Quest        listParent   = list.Parent;
            List <Quest> listChildren = list.Leaves;

            //Assert
            Assert.AreEqual(childToTraverse, listParent);
            Assert.AreEqual(childChildren, listChildren);

            Assert.IsTrue(traverseResult);

            tree.VerifyAllExpectations();
            strategy.VerifyAllExpectations();
        }
        public void InitializeWithInitializedQuestTreeTest()
        {
            //Arrange
            List <Quest> children = new List <Quest>()
            {
                new FakeQuest()
                {
                    State = State.Done
                },
                new FakeQuest()
                {
                    State = State.Done
                },
                new FakeQuest()
                {
                    State = State.Failed
                },
                new FakeQuest()
                {
                    State = State.Idle
                }
            };
            Quest parent = new FakeQuest()
            {
                Children = children
            };

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

            tree.Expect(tr => tr.IsInitialized()).
            Repeat.Once().
            Return(true);
            tree.Expect(tr => tr.Initialize()).
            Repeat.Never();
            tree.Expect(tr => tr.Root).
            Repeat.Twice().
            Return(parent);

            QuestListModelTopChildrenPredicate list = new QuestListModelTopChildrenPredicate(tree, q => q.State == State.Idle || q.State == State.Done);

            //Act
            bool isInitializedBeforeInitialization = list.IsInitialized();

            list.Initialize();
            bool isInitializedAfterInitialization = list.IsInitialized();

            //Assert
            Assert.IsFalse(isInitializedBeforeInitialization);
            Assert.IsTrue(isInitializedAfterInitialization);

            Quest listParent = list.Parent;

            Assert.AreEqual(parent, listParent);
            List <Quest> listChildren = list.Leaves;

            Assert.IsNotNull(listChildren);
            Assert.IsNotEmpty(listChildren);
            Assert.AreEqual(3, listChildren.Count);
            Assert.IsTrue(listChildren.All(c => c.State == State.Done || c.State == State.Idle));

            tree.VerifyAllExpectations();
        }
Exemple #18
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();
        }