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(); }
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(); }
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(); }
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(); }
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(); }
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(); }
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(); }
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(); }
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(); }