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" })); }
private void ViewModel_PropertyChanged(object sender, PropertyChangedEventArgs e) { var vm = (WordListsViewModel)sender; switch (e.PropertyName) { case "Meanings": vm.Meanings.CollectionChanged += Meanings_CollectionChanged; break; case "Varieties": DispatcherHelper.CheckBeginInvokeOnUI(LoadCollectionView); break; case "SelectedVarietyMeaning": DispatcherHelper.CheckBeginInvokeOnUI(() => { if (_selectMonitor.Busy) { return; } using (_selectMonitor.Enter()) { WordListsGrid.SelectedCellRanges.Clear(); if (vm.SelectedVarietyMeaning != null) { WordListsVarietyViewModel variety = vm.SelectedVarietyMeaning.Variety; int itemIndex = WordListsGrid.Items.IndexOf(variety); WordListsGrid.BringItemIntoView(variety); WordListsGrid.Dispatcher.BeginInvoke(new Action(() => { var row = (DataRow)WordListsGrid.GetContainerFromIndex(itemIndex); if (row != null) { Cell cell = row.Cells.Single(c => c.Content == vm.SelectedVarietyMeaning); WordListsGrid.SelectedCellRanges.Add(new SelectionCellRange(itemIndex, cell.ParentColumn.Index)); WordListsGrid.CurrentItem = variety; WordListsGrid.CurrentColumn = cell.ParentColumn; cell.BringIntoView(); } }), DispatcherPriority.Background); } } }); break; } }