示例#1
0
        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" }));
        }
示例#2
0
 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();
 }
示例#3
0
        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" }));
        }
示例#4
0
        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);
        }
示例#6
0
        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]));
        }