public void TaskAreas() { DispatcherHelper.Initialize(); var projectService = Substitute.For <IProjectService>(); var dialogService = Substitute.For <IDialogService>(); var busyService = Substitute.For <IBusyService>(); var analysisService = Substitute.For <IAnalysisService>(); var importService = Substitute.For <IImportService>(); var exportService = Substitute.For <IExportService>(); WordViewModel.Factory wordFactory = word => new WordViewModel(busyService, analysisService, word); WordListsVarietyMeaningViewModel.Factory varietyglossFactory = (variety, meaning) => new WordListsVarietyMeaningViewModel(busyService, analysisService, wordFactory, variety, meaning); WordListsVarietyViewModel.Factory varietyFactory = variety => new WordListsVarietyViewModel(projectService, varietyglossFactory, variety); var wordLists = new WordListsViewModel(projectService, dialogService, importService, exportService, analysisService, varietyFactory); var project = new CogProject(_spanFactory) { Varieties = { new Variety("variety1"), new Variety("variety2"), new Variety("variety3") } }; projectService.Project.Returns(project); projectService.ProjectOpened += Raise.Event(); var commonTasks = (TaskAreaItemsViewModel)wordLists.TaskAreas[0]; // add a new variety var addVariety = (TaskAreaCommandViewModel)commonTasks.Items[0]; dialogService.ShowModalDialog(wordLists, Arg.Do <EditVarietyViewModel>(vm => vm.Name = "variety4")).Returns(true); addVariety.Command.Execute(null); Assert.That(project.Varieties.Select(v => v.Name), Is.EqualTo(new[] { "variety1", "variety2", "variety3", "variety4" })); }
public WordListsVarietyViewModel(IProjectService projectService, WordListsVarietyMeaningViewModel.Factory varietyMeaningFactory, Variety variety) : base(variety) { _meanings = new VarietyMeaningViewModelCollection(projectService.Project.Meanings, DomainVariety.Words, meaning => varietyMeaningFactory(this, meaning)); _switchToVarietyCommand = new RelayCommand(() => Messenger.Default.Send(new SwitchViewMessage(typeof(VarietiesViewModel), DomainVariety))); CheckForErrors(); }
public void StrRep() { DispatcherHelper.Initialize(); var busyService = Substitute.For <IBusyService>(); var projectService = Substitute.For <IProjectService>(); var analysisService = Substitute.For <IAnalysisService>(); var project = new CogProject(_spanFactory); project.Meanings.Add(new Meaning("gloss1", "cat1")); project.Varieties.Add(new Variety("variety1")); WordViewModel.Factory wordFactory = word => new WordViewModel(busyService, analysisService, word); WordListsVarietyMeaningViewModel.Factory varietyMeaningFactory = (v, meaning) => new WordListsVarietyMeaningViewModel(busyService, analysisService, wordFactory, v, meaning); projectService.Project.Returns(project); var variety = new WordListsVarietyViewModel(projectService, varietyMeaningFactory, project.Varieties[0]); WordListsVarietyMeaningViewModel varietyMeaning = variety.Meanings[0]; Assert.That(varietyMeaning.Words, Is.Empty); Assert.That(varietyMeaning.StrRep, Is.Empty); project.Varieties[0].Words.Add(new Word("hɛ.loʊ", project.Meanings[0])); Assert.That(varietyMeaning.StrRep, Is.EqualTo("hɛ.loʊ")); Assert.That(varietyMeaning.Words.Select(w => w.StrRep), Is.EqualTo(new[] { "hɛ.loʊ" })); project.Varieties[0].Words.Add(new Word("gu.gəl", project.Meanings[0])); Assert.That(varietyMeaning.StrRep, Is.EqualTo("hɛ.loʊ,gu.gəl")); Assert.That(varietyMeaning.Words.Select(w => w.StrRep), Is.EqualTo(new[] { "hɛ.loʊ", "gu.gəl" })); varietyMeaning.StrRep = "hɛ.lp,gu.gəl"; Assert.That(varietyMeaning.Words.Select(w => w.StrRep), Is.EqualTo(new[] { "hɛ.lp", "gu.gəl" })); varietyMeaning.StrRep = "hɛ.lp"; Assert.That(varietyMeaning.Words.Select(w => w.StrRep), Is.EqualTo(new[] { "hɛ.lp" })); varietyMeaning.StrRep = ""; Assert.That(varietyMeaning.Words, Is.Empty); varietyMeaning.StrRep = null; Assert.That(varietyMeaning.Words, Is.Empty); varietyMeaning.StrRep = " hɛ.lp,gu.gəl ,gu.fi "; Assert.That(varietyMeaning.Words.Select(w => w.StrRep), Is.EqualTo(new[] { "hɛ.lp", "gu.gəl", "gu.fi" })); Assert.That(varietyMeaning.StrRep, Is.EqualTo("hɛ.lp,gu.gəl,gu.fi")); varietyMeaning.StrRep = "hɛ.lp,gu.gəl,gu"; Assert.That(varietyMeaning.Words.Select(w => w.StrRep), Is.EqualTo(new[] { "hɛ.lp", "gu.gəl", "gu" })); }
public void Varieties() { DispatcherHelper.Initialize(); var projectService = Substitute.For <IProjectService>(); var dialogService = Substitute.For <IDialogService>(); var busyService = Substitute.For <IBusyService>(); var analysisService = Substitute.For <IAnalysisService>(); var importService = Substitute.For <IImportService>(); var exportService = Substitute.For <IExportService>(); WordViewModel.Factory wordFactory = word => new WordViewModel(busyService, analysisService, word); WordListsVarietyMeaningViewModel.Factory varietyMeaningFactory = (variety, meaning) => new WordListsVarietyMeaningViewModel(busyService, analysisService, wordFactory, variety, meaning); WordListsVarietyViewModel.Factory varietyFactory = variety => new WordListsVarietyViewModel(projectService, varietyMeaningFactory, variety); var wordLists = new WordListsViewModel(projectService, dialogService, importService, exportService, analysisService, varietyFactory); var project = new CogProject(_spanFactory) { Varieties = { new Variety("variety1"), new Variety("variety2"), new Variety("variety3") } }; projectService.Project.Returns(project); projectService.ProjectOpened += Raise.Event(); Assert.That(wordLists.Varieties.Select(v => v.Name), Is.EqualTo(new[] { "variety1", "variety2", "variety3" })); Assert.That(wordLists.IsEmpty, Is.False); project.Varieties.RemoveAt(0); Assert.That(wordLists.Varieties.Select(v => v.Name), Is.EqualTo(new[] { "variety2", "variety3" })); Assert.That(wordLists.IsEmpty, Is.False); project.Varieties.Add(new Variety("variety1")); Assert.That(wordLists.Varieties.Select(v => v.Name), Is.EqualTo(new[] { "variety2", "variety3", "variety1" })); Assert.That(wordLists.IsEmpty, Is.False); project.Varieties.Clear(); Assert.That(wordLists.Varieties.Count, Is.EqualTo(0)); Assert.That(wordLists.IsEmpty, Is.True); project = new CogProject(_spanFactory) { Varieties = { new Variety("variety1") } }; projectService.Project.Returns(project); projectService.ProjectOpened += Raise.Event(); Assert.That(wordLists.Varieties.Select(v => v.Name), Is.EqualTo(new[] { "variety1" })); Assert.That(wordLists.IsEmpty, Is.False); }
public WordListsViewModelTestEnvironment() { DispatcherHelper.Initialize(); _projectService = Substitute.For <IProjectService>(); _dialogService = Substitute.For <IDialogService>(); var busyService = Substitute.For <IBusyService>(); _analysisService = Substitute.For <IAnalysisService>(); var importService = Substitute.For <IImportService>(); var exportService = Substitute.For <IExportService>(); WordViewModel.Factory wordFactory = word => new WordViewModel(busyService, _analysisService, word); WordListsVarietyMeaningViewModel.Factory varietyMeaningFactory = (variety, meaning) => new WordListsVarietyMeaningViewModel(busyService, _analysisService, wordFactory, variety, meaning); WordListsVarietyViewModel.Factory varietyFactory = (parent, variety) => new WordListsVarietyViewModel(_projectService, varietyMeaningFactory, parent, variety); _wordListsViewModel = new WordListsViewModel(_projectService, _dialogService, importService, exportService, _analysisService, varietyFactory); }
public void FindCommand() { DispatcherHelper.Initialize(); var projectService = Substitute.For <IProjectService>(); var dialogService = Substitute.For <IDialogService>(); var busyService = Substitute.For <IBusyService>(); var analysisService = Substitute.For <IAnalysisService>(); var importService = Substitute.For <IImportService>(); var exportService = Substitute.For <IExportService>(); WordViewModel.Factory wordFactory = word => new WordViewModel(busyService, analysisService, word); WordListsVarietyMeaningViewModel.Factory varietyglossFactory = (variety, meaning) => new WordListsVarietyMeaningViewModel(busyService, analysisService, wordFactory, variety, meaning); WordListsVarietyViewModel.Factory varietyFactory = variety => new WordListsVarietyViewModel(projectService, varietyglossFactory, variety); var wordLists = new WordListsViewModel(projectService, dialogService, importService, exportService, analysisService, varietyFactory); var project = new CogProject(_spanFactory) { Meanings = { new Meaning("gloss1", "cat1"), new Meaning("gloss2", "cat2"), new Meaning("gloss3", "cat3") }, Varieties = { new Variety("variety1"), new Variety("variety2") } }; project.Varieties[0].Words.AddRange(new[] { new Word("hello", project.Meanings[0]), new Word("good", project.Meanings[1]), new Word("bad", project.Meanings[2]) }); project.Varieties[1].Words.AddRange(new[] { new Word("help", project.Meanings[0]), new Word("google", project.Meanings[1]), new Word("batter", project.Meanings[2]) }); projectService.Project.Returns(project); projectService.ProjectOpened += Raise.Event(); wordLists.VarietiesView = new ListCollectionView(wordLists.Varieties); FindViewModel findViewModel = null; Action closeCallback = null; dialogService.ShowModelessDialog(wordLists, Arg.Do <FindViewModel>(vm => findViewModel = vm), Arg.Do <Action>(callback => closeCallback = callback)); wordLists.FindCommand.Execute(null); Assert.That(findViewModel, Is.Not.Null); Assert.That(closeCallback, Is.Not.Null); // already open, shouldn't get opened twice dialogService.ClearReceivedCalls(); wordLists.FindCommand.Execute(null); dialogService.DidNotReceive().ShowModelessDialog(wordLists, Arg.Any <FindViewModel>(), Arg.Any <Action>()); // form searches findViewModel.Field = FindField.Form; // nothing selected, no match findViewModel.String = "fall"; findViewModel.FindNextCommand.Execute(null); Assert.That(wordLists.SelectedVarietyMeaning, Is.Null); // nothing selected, matches findViewModel.String = "he"; findViewModel.FindNextCommand.Execute(null); Assert.That(wordLists.SelectedVarietyMeaning, Is.EqualTo(wordLists.Varieties[0].Meanings[0])); findViewModel.FindNextCommand.Execute(null); Assert.That(wordLists.SelectedVarietyMeaning, Is.EqualTo(wordLists.Varieties[1].Meanings[0])); findViewModel.FindNextCommand.Execute(null); Assert.That(wordLists.SelectedVarietyMeaning, Is.EqualTo(wordLists.Varieties[1].Meanings[0])); // first word selected, matches wordLists.SelectedVarietyMeaning = wordLists.Varieties[0].Meanings[0]; findViewModel.String = "o"; findViewModel.FindNextCommand.Execute(null); Assert.That(wordLists.SelectedVarietyMeaning, Is.EqualTo(wordLists.Varieties[0].Meanings[1])); findViewModel.FindNextCommand.Execute(null); Assert.That(wordLists.SelectedVarietyMeaning, Is.EqualTo(wordLists.Varieties[1].Meanings[1])); findViewModel.FindNextCommand.Execute(null); Assert.That(wordLists.SelectedVarietyMeaning, Is.EqualTo(wordLists.Varieties[0].Meanings[0])); findViewModel.FindNextCommand.Execute(null); Assert.That(wordLists.SelectedVarietyMeaning, Is.EqualTo(wordLists.Varieties[0].Meanings[0])); // start search over findViewModel.FindNextCommand.Execute(null); Assert.That(wordLists.SelectedVarietyMeaning, Is.EqualTo(wordLists.Varieties[0].Meanings[1])); // last word selected, matches wordLists.SelectedVarietyMeaning = wordLists.Varieties[1].Meanings[2]; findViewModel.String = "ba"; findViewModel.FindNextCommand.Execute(null); Assert.That(wordLists.SelectedVarietyMeaning, Is.EqualTo(wordLists.Varieties[0].Meanings[2])); findViewModel.FindNextCommand.Execute(null); Assert.That(wordLists.SelectedVarietyMeaning, Is.EqualTo(wordLists.Varieties[1].Meanings[2])); findViewModel.FindNextCommand.Execute(null); Assert.That(wordLists.SelectedVarietyMeaning, Is.EqualTo(wordLists.Varieties[1].Meanings[2])); // last word selected, matches, change selected word findViewModel.String = "ba"; findViewModel.FindNextCommand.Execute(null); Assert.That(wordLists.SelectedVarietyMeaning, Is.EqualTo(wordLists.Varieties[0].Meanings[2])); wordLists.SelectedVarietyMeaning = wordLists.Varieties[0].Meanings[0]; findViewModel.FindNextCommand.Execute(null); Assert.That(wordLists.SelectedVarietyMeaning, Is.EqualTo(wordLists.Varieties[0].Meanings[2])); findViewModel.FindNextCommand.Execute(null); Assert.That(wordLists.SelectedVarietyMeaning, Is.EqualTo(wordLists.Varieties[1].Meanings[2])); findViewModel.FindNextCommand.Execute(null); Assert.That(wordLists.SelectedVarietyMeaning, Is.EqualTo(wordLists.Varieties[1].Meanings[2])); // gloss searches // nothing selected, no match wordLists.SelectedVarietyMeaning = null; findViewModel.Field = FindField.Gloss; findViewModel.String = "gloss4"; findViewModel.FindNextCommand.Execute(null); Assert.That(wordLists.SelectedVarietyMeaning, Is.Null); // nothing selected, matches wordLists.SelectedVarietyMeaning = null; findViewModel.Field = FindField.Gloss; findViewModel.String = "gloss2"; findViewModel.FindNextCommand.Execute(null); Assert.That(wordLists.SelectedVarietyMeaning, Is.EqualTo(wordLists.Varieties[0].Meanings[1])); findViewModel.FindNextCommand.Execute(null); Assert.That(wordLists.SelectedVarietyMeaning, Is.EqualTo(wordLists.Varieties[0].Meanings[1])); // selected, matches findViewModel.String = "gloss"; wordLists.SelectedVarietyMeaning = wordLists.Varieties[1].Meanings[1]; findViewModel.FindNextCommand.Execute(null); Assert.That(wordLists.SelectedVarietyMeaning, Is.EqualTo(wordLists.Varieties[1].Meanings[2])); findViewModel.FindNextCommand.Execute(null); Assert.That(wordLists.SelectedVarietyMeaning, Is.EqualTo(wordLists.Varieties[1].Meanings[0])); findViewModel.FindNextCommand.Execute(null); Assert.That(wordLists.SelectedVarietyMeaning, Is.EqualTo(wordLists.Varieties[1].Meanings[1])); findViewModel.FindNextCommand.Execute(null); Assert.That(wordLists.SelectedVarietyMeaning, Is.EqualTo(wordLists.Varieties[1].Meanings[1])); }