public void GotoAutoCompleteNavigationCommandsWork() { var tab = new StubViewPort { Goto = new StubCommand { CanExecute = ICommandExtensions.CanAlwaysExecute }, Model = new StubDataModel { GetAutoCompleteAnchorNameOptions = str => new List <string> { "Option 1", "Option 2", "Option 3", } }, }; var viewModel = new GotoControlViewModel(tab); Assert.False(viewModel.ControlVisible); viewModel.ShowGoto.Execute(true); Assert.True(viewModel.ControlVisible); Assert.False(viewModel.ShowAutoCompleteOptions); viewModel.Text = "Something"; Assert.True(viewModel.ShowAutoCompleteOptions); Assert.Equal(3, viewModel.AutoCompleteOptions.Count); Assert.All(viewModel.AutoCompleteOptions, option => Assert.False(option.IsSelected)); viewModel.MoveAutoCompleteSelectionDown.Execute(); Assert.True(viewModel.AutoCompleteOptions[0].IsSelected); viewModel.MoveAutoCompleteSelectionDown.Execute(); Assert.True(viewModel.AutoCompleteOptions[1].IsSelected); viewModel.MoveAutoCompleteSelectionUp.Execute(); Assert.True(viewModel.AutoCompleteOptions[0].IsSelected); }
public void EditorShowsErrorIfNoneFound() { var tab = new StubViewPort(); var editor = new EditorViewModel(new StubFileSystem()) { tab }; tab.Find = str => new (int, int)[0];
public void EditorUpdatesFileSystemWatchesWhenViewPortFileNameChanges() { var fileSystem = new StubFileSystem(); int addCalls = 0, removeCalls = 0; fileSystem.AddListenerToFile = (fileName, action) => addCalls++; fileSystem.RemoveListenerForFile = (fileName, action) => removeCalls++; var editor = new EditorViewModel(fileSystem); var tab = new StubViewPort(); editor.Add(tab); Assert.Equal(0, addCalls); Assert.Equal(0, removeCalls); tab.FileName = "file.txt"; tab.PropertyChanged.Invoke(tab, new ExtendedPropertyChangedEventArgs(null, nameof(tab.FileName))); Assert.Equal(1, addCalls); Assert.Equal(0, removeCalls); tab.FileName = "file2.txt"; tab.PropertyChanged.Invoke(tab, new ExtendedPropertyChangedEventArgs("file.txt", nameof(tab.FileName))); Assert.Equal(2, addCalls); Assert.Equal(1, removeCalls); }