Exemple #1
0
        public CommandModeTest()
        {
            _textView   = CreateTextView();
            _textBuffer = _textView.TextBuffer;
            _vimBuffer  = CreateVimBuffer(CreateVimBufferData(_textView));

            var factory          = new MockRepository(MockBehavior.Strict);
            var commonOperations = CommonOperationsFactory.GetCommonOperations(_vimBuffer.VimBufferData);

            _modeRaw = new CommandMode(_vimBuffer, commonOperations);
            _mode    = _modeRaw;
            _mode.OnEnter(ModeArgument.None);
        }
Exemple #2
0
        /// <summary>
        /// Create the IVimBuffer with the given set of lines.  Note that we intentionally don't
        /// set the mode to Insert here because the given commands should work irrespective of the
        /// mode. There are a few tests that rely on behavior from SelectionChangeTracker so they set
        /// the mode to Insert.
        /// </summary>
        /// <param name="lines"></param>
        protected virtual void Create(params string[] lines)
        {
            _textView       = CreateTextView(lines);
            _textBuffer     = _textView.TextBuffer;
            _vimBuffer      = Vim.CreateVimBuffer(_textView);
            _globalSettings = _vimBuffer.GlobalSettings;
            _localSettings  = _vimBuffer.LocalSettings;

            var operations = CommonOperationsFactory.GetCommonOperations(_vimBuffer.VimBufferData);
            var motionUtil = new MotionUtil(_vimBuffer.VimBufferData, operations);

            _insertUtilRaw = new InsertUtil(_vimBuffer.VimBufferData, motionUtil, operations);
            _insertUtil    = _insertUtilRaw;
        }
        private void Create(VisualKind kind, int caretPosition, params string[] lines)
        {
            _textView = CreateTextView(lines);
            _textView.MoveCaretTo(caretPosition);
            _globalSettings = new GlobalSettings();
            var localSettings = new LocalSettings(_globalSettings);
            var vimTextBuffer = MockObjectFactory.CreateVimTextBuffer(_textView.TextBuffer, localSettings);

            vimTextBuffer.SetupGet(x => x.UseVirtualSpace).Returns(false);
            _vimBufferData     = MockObjectFactory.CreateVimBufferData(vimTextBuffer.Object, _textView);
            _incrementalSearch = new Mock <IIncrementalSearch>(MockBehavior.Loose);
            _commonOperations  = CommonOperationsFactory.GetCommonOperations(_vimBufferData);
            _tracker           = new SelectionTracker(_vimBufferData, _commonOperations, _incrementalSearch.Object, kind);
            _tracker.Start();
        }
Exemple #4
0
        public CommandMarginControllerIntegrationTest()
        {
            _vimBuffer = CreateVimBuffer();

            var parentElement = new FrameworkElement();

            _control    = new CommandMarginControl();
            _controller = new CommandMarginController(
                _vimBuffer,
                parentElement,
                _control,
                VimEditorHost.EditorFormatMapService.GetEditorFormatMap(_vimBuffer.TextView),
                VimEditorHost.ClassificationFormatMapService.GetClassificationFormatMap(_vimBuffer.TextView),
                CommonOperationsFactory.GetCommonOperations(_vimBuffer.VimBufferData));
        }
Exemple #5
0
        public MotionCaptureTest()
        {
            _textView = CreateTextView();

            var vimTextBuffer = Vim.CreateVimTextBuffer(_textView.TextBuffer);
            var vimBufferData = CreateVimBufferData(vimTextBuffer, _textView);

            _incrementalSearch = new IncrementalSearch(
                vimBufferData,
                CommonOperationsFactory.GetCommonOperations(vimBufferData));
            _localSettings = vimTextBuffer.LocalSettings;
            _captureRaw    = new MotionCapture(
                vimBufferData,
                _incrementalSearch);
            _capture = _captureRaw;
        }
Exemple #6
0
        public CommandMarginControllerIntegrationTest()
        {
            _vimBuffer       = CreateVimBuffer();
            _clipboardDevice = (TestableClipboardDevice)CompositionContainer.GetExportedValue <IClipboardDevice>();

            var parentElement = new FrameworkElement();

            _control    = new CommandMarginControl();
            _controller = new CommandMarginController(
                _vimBuffer,
                parentElement,
                _control,
                VimEditorHost.EditorFormatMapService.GetEditorFormatMap(_vimBuffer.TextView),
                VimEditorHost.ClassificationFormatMapService.GetClassificationFormatMap(_vimBuffer.TextView),
                CommonOperationsFactory.GetCommonOperations(_vimBuffer.VimBufferData),
                _clipboardDevice);
        }
Exemple #7
0
        public CommandModeTest()
        {
            _textView   = CreateTextView();
            _textBuffer = _textView.TextBuffer;
            _vimBuffer  = CreateVimBuffer(CreateVimBufferData(_textView));

            var factory          = new MockRepository(MockBehavior.Strict);
            var commonOperations = CommonOperationsFactory.GetCommonOperations(_vimBuffer.VimBufferData);
            var interpreter      = new Interpreter.Interpreter(
                _vimBuffer,
                commonOperations,
                factory.Create <IFoldManager>().Object,
                factory.Create <IFileSystem>().Object,
                factory.Create <IBufferTrackingService>().Object);

            _modeRaw = new CommandMode(_vimBuffer, commonOperations, interpreter);
            _mode    = _modeRaw;
        }
Exemple #8
0
 internal CommandUtil CreateCommandUtil(
     IVimBufferData vimBufferData,
     IMotionUtil motionUtil       = null,
     ICommonOperations operations = null,
     IFoldManager foldManager     = null,
     InsertUtil insertUtil        = null)
 {
     motionUtil  = motionUtil ?? new MotionUtil(vimBufferData, operations);
     operations  = operations ?? CommonOperationsFactory.GetCommonOperations(vimBufferData);
     foldManager = foldManager ?? VimUtil.CreateFoldManager(vimBufferData.TextView, vimBufferData.StatusUtil);
     insertUtil  = insertUtil ?? new InsertUtil(vimBufferData, operations);
     return(new CommandUtil(
                vimBufferData,
                motionUtil,
                operations,
                foldManager,
                insertUtil,
                _bulkOperations));
 }
Exemple #9
0
        protected CommandMarginControllerTest()
        {
            _factory       = new MockRepository(MockBehavior.Strict);
            _marginControl = new CommandMarginControl();
            _marginControl.CommandLineTextBox.Text = string.Empty;

            _search = _factory.Create <IIncrementalSearch>();
            _search.SetupGet(x => x.HasActiveSession).Returns(false);
            _search.SetupGet(x => x.InPasteWait).Returns(false);
            _vimBuffer = new MockVimBuffer
            {
                IncrementalSearchImpl = _search.Object,
                VimImpl         = MockObjectFactory.CreateVim(factory: _factory).Object,
                CommandModeImpl = _factory.Create <ICommandMode>(MockBehavior.Loose).Object
            };
            var textBuffer = CreateTextBuffer(new[] { "" });

            _vimBuffer.TextViewImpl = TextEditorFactoryService.CreateTextView(textBuffer);

            var vimBufferData = CreateVimBufferData(_vimBuffer.TextView);

            _globalSettings = new Mock <IVimGlobalSettings>();
            _vimBuffer.GlobalSettingsImpl = _globalSettings.Object;

            var editorFormatMap = _factory.Create <IEditorFormatMap>(MockBehavior.Loose);

            editorFormatMap.Setup(x => x.GetProperties(It.IsAny <string>())).Returns(new ResourceDictionary());

            var parentVisualElement = _factory.Create <FrameworkElement>();

            _clipboardDevice = (TestableClipboardDevice)CompositionContainer.GetExportedValue <IClipboardDevice>();

            _controller = new CommandMarginController(
                _vimBuffer,
                parentVisualElement.Object,
                _marginControl,
                VimEditorHost.EditorFormatMapService.GetEditorFormatMap(_vimBuffer.TextView),
                VimEditorHost.ClassificationFormatMapService.GetClassificationFormatMap(_vimBuffer.TextView),
                CommonOperationsFactory.GetCommonOperations(vimBufferData),
                _clipboardDevice,
                false);
        }
Exemple #10
0
        protected virtual void Create(params string[] lines)
        {
            _factory       = new MockRepository(MockBehavior.Strict);
            _marginControl = new CommandMarginControl();
            _marginControl.CommandLineTextBox.Text = string.Empty;
            _vimBuffer      = CreateVimBuffer(lines);
            _textBuffer     = _vimBuffer.TextBuffer;
            _textView       = _vimBuffer.TextView;
            _keyboardDevice = new MockKeyboardDevice();

            var parentVisualElement = _factory.Create <FrameworkElement>();

            _controller = new CommandMarginController(
                _vimBuffer,
                parentVisualElement.Object,
                _marginControl,
                VimEditorHost.EditorFormatMapService.GetEditorFormatMap(_vimBuffer.TextView),
                VimEditorHost.ClassificationFormatMapService.GetClassificationFormatMap(_vimBuffer.TextView),
                CommonOperationsFactory.GetCommonOperations(_vimBuffer.VimBufferData));
        }
Exemple #11
0
 protected void Create(params string[] lines)
 {
     _statusUtil    = new TestableStatusUtil();
     _vimData       = Vim.VimData;
     _vimBufferData = CreateVimBufferData(
         CreateTextView(lines),
         statusUtil: _statusUtil);
     _vimBuffer      = CreateVimBuffer(_vimBufferData);
     _vimTextBuffer  = _vimBufferData.VimTextBuffer;
     _localSettings  = _vimBufferData.LocalSettings;
     _globalSettings = _localSettings.GlobalSettings;
     _textBuffer     = _vimBufferData.TextBuffer;
     _textView       = _vimBufferData.TextView;
     _interpreter    = new global::Vim.Interpreter.Interpreter(
         _vimBuffer,
         CommonOperationsFactory.GetCommonOperations(_vimBufferData),
         FoldManagerFactory.GetFoldManager(_vimBufferData.TextView),
         new FileSystem(),
         BufferTrackingService);
     _keyMap = Vim.KeyMap;
 }
        private void Create(params string[] lines)
        {
            _vimHost = (MockVimHost)Vim.VimHost;
            _textView = CreateTextView(lines);
            _globalSettings = Vim.GlobalSettings;
            _globalSettings.IncrementalSearch = true;
            _globalSettings.WrapScan = true;

            var vimTextBuffer = Vim.CreateVimTextBuffer(_textView.TextBuffer);

            _factory = new MockRepository(MockBehavior.Strict);
            _statusUtil = _factory.Create<IStatusUtil>();
            _statusUtil.Setup(x => x.OnWarning(Resources.Common_SearchBackwardWrapped));
            _statusUtil.Setup(x => x.OnWarning(Resources.Common_SearchForwardWrapped));

            _vimData = Vim.VimData;
            var vimBufferData = CreateVimBufferData(vimTextBuffer, _textView);
            var operations = CommonOperationsFactory.GetCommonOperations(vimBufferData);
            _searchRaw = new IncrementalSearch(vimBufferData, operations);
            _search = _searchRaw;
        }
Exemple #13
0
        public void Start4()
        {
            Create(VisualKind.Character);
            var view = CreateTextView("foo bar baz");

            view.Selection.Select(new SnapshotSpan(view.TextSnapshot, 1, 3), false);
            var vimTextBuffer = new Mock <IVimTextBuffer>(MockBehavior.Strict);

            vimTextBuffer.SetupGet(x => x.Vim).Returns(Vim);
            vimTextBuffer.SetupGet(x => x.UndoRedoOperations).Returns(_vimBufferData.VimTextBuffer.UndoRedoOperations);
            vimTextBuffer.SetupGet(x => x.WordNavigator).Returns(_vimBufferData.VimTextBuffer.WordNavigator);
            vimTextBuffer.SetupGet(x => x.WordUtil).Returns(_vimBufferData.VimTextBuffer.WordUtil);
            vimTextBuffer.SetupGet(x => x.LocalSettings).Returns(_vimBufferData.VimTextBuffer.LocalSettings);
            vimTextBuffer.SetupGet(x => x.UseVirtualSpace).Returns(false);
            vimTextBuffer.SetupSet(x => x.LastVisualSelection = It.IsAny <Microsoft.FSharp.Core.FSharpOption <VisualSelection> >());
            var vimBufferData    = MockObjectFactory.CreateVimBufferData(vimTextBuffer.Object, view);
            var commonOperations = CommonOperationsFactory.GetCommonOperations(vimBufferData);
            var tracker          = new SelectionTracker(vimBufferData, commonOperations, _incrementalSearch.Object, VisualKind.Character);

            tracker.Start();
            Assert.Equal(view.Selection.AnchorPoint.Position.Position, tracker.AnchorPoint.Position);
        }
Exemple #14
0
 internal CommandUtil CreateCommandUtil(
     IVimBufferData vimBufferData,
     IMotionUtil motionUtil = null,
     ICommonOperations operations = null,
     IFoldManager foldManager = null,
     InsertUtil insertUtil = null)
 {
     motionUtil = motionUtil ?? new MotionUtil(vimBufferData, operations);
     operations = operations ?? CommonOperationsFactory.GetCommonOperations(vimBufferData);
     foldManager = foldManager ?? VimUtil.CreateFoldManager(vimBufferData.TextView, vimBufferData.StatusUtil);
     insertUtil = insertUtil ?? new InsertUtil(vimBufferData, motionUtil, operations);
     var lineChangeTracker = new LineChangeTracker(vimBufferData);
     return new CommandUtil(
         vimBufferData,
         motionUtil,
         operations,
         foldManager,
         insertUtil,
         _vimEditorHost.BulkOperations,
         MouseDevice,
         lineChangeTracker);
 }
Exemple #15
0
        private void Create(KeyRemapMode countKeyRemapMode, params string[] lines)
        {
            _textView      = CreateTextView(lines);
            _vimTextBuffer = Vim.CreateVimTextBuffer(_textView.TextBuffer);
            _registerMap   = Vim.RegisterMap;
            var vimBufferData = CreateVimBufferData(
                _vimTextBuffer,
                _textView);

            _commandUtil = CreateCommandUtil(vimBufferData);
            var incrementalSearch = new IncrementalSearch(
                vimBufferData,
                CommonOperationsFactory.GetCommonOperations(vimBufferData));
            var motionCapture = new MotionCapture(vimBufferData, incrementalSearch);

            _runnerRaw = new CommandRunner(
                vimBufferData,
                motionCapture,
                _commandUtil,
                VisualKind.Character,
                countKeyRemapMode);
            _runner = _runnerRaw;
        }
Exemple #16
0
        protected void Create(bool insertMode, params string[] lines)
        {
            _factory = new MockRepository(MockBehavior.Strict)
            {
                DefaultValue = DefaultValue.Mock
            };
            _textView          = CreateTextView(lines);
            _textBuffer        = _textView.TextBuffer;
            _vim               = _factory.Create <IVim>(MockBehavior.Loose);
            _editorOptions     = _factory.Create <IEditorOptions>(MockBehavior.Loose);
            _textChangeTracker = _factory.Create <ITextChangeTracker>(MockBehavior.Loose);
            _textChangeTracker.SetupGet(x => x.CurrentChange).Returns(FSharpOption <TextChange> .None);
            _undoRedoOperations = new UndoRedoOperations(VimHost, new StatusUtil(), FSharpOption <ITextUndoHistory> .None, null);
            _wordCompletionSessionFactoryService = _factory.Create <IWordCompletionSessionFactoryService>();

            var localSettings = new LocalSettings(Vim.GlobalSettings);

            _vimBuffer      = Vim.CreateVimBuffer(_textView);
            _globalSettings = _vimBuffer.GlobalSettings;
            var vimTextBuffer = Vim.GetOrCreateVimTextBuffer(_textView.TextBuffer);
            var vimBufferData = CreateVimBufferData(vimTextBuffer, _textView);

            _operations = CommonOperationsFactory.GetCommonOperations(vimBufferData);
            _broker     = _factory.Create <IDisplayWindowBroker>();
            _broker.SetupGet(x => x.IsCompletionActive).Returns(false);
            _broker.SetupGet(x => x.IsQuickInfoActive).Returns(false);
            _broker.SetupGet(x => x.IsSignatureHelpActive).Returns(false);
            _insertUtil = _factory.Create <IInsertUtil>();
            _insertUtil.Setup(x => x.NewUndoSequence());
            _motionUtil  = _factory.Create <IMotionUtil>();
            _commandUtil = _factory.Create <ICommandUtil>();
            _capture     = _factory.Create <IMotionCapture>();

            // Setup the mouse.  By default we say it has no buttons down as that's the normal state
            _mouseDevice = _factory.Create <IMouseDevice>();
            _mouseDevice.SetupGet(x => x.IsLeftButtonPressed).Returns(false);

            // Setup the keyboard.  By default we don't say that any button is pressed.  Insert mode is usually
            // only concerned with arrow keys and we will set those up as appropriate for the typing tests
            _keyboardDevice = _factory.Create <IKeyboardDevice>();
            _keyboardDevice.Setup(x => x.IsArrowKeyDown).Returns(false);

            _modeRaw = new global::Vim.Modes.Insert.InsertMode(
                _vimBuffer,
                _operations,
                _broker.Object,
                _editorOptions.Object,
                _undoRedoOperations,
                _textChangeTracker.Object,
                _insertUtil.Object,
                _motionUtil.Object,
                _commandUtil.Object,
                _capture.Object,
                !insertMode,
                _keyboardDevice.Object,
                _mouseDevice.Object,
                _wordCompletionSessionFactoryService.Object);
            _mode = _modeRaw;
            _mode.OnEnter(ModeArgument.None);
            _mode.CommandRan += (sender, e) => { _lastCommandRan = e.CommandRunData; };
        }
Exemple #17
0
            public void SpecialMarksAreSet()
            {
                var s_emptyList = FSharpList <Mark> .Empty;

                OpenFakeVimBufferTestWindow("");
                var interpreter = new VimInterpreter(
                    _vimBuffer,
                    CommonOperationsFactory.GetCommonOperations(_vimBufferData),
                    FoldManagerFactory.GetFoldManager(_vimBufferData.TextView),
                    new FileSystem(),
                    BufferTrackingService);

                _vimBuffer.ProcessNotation("<ESC>i1<CR>2<CR>3<CR>4<CR>5<CR>6<CR>7<CR>8<CR>9<CR>0<ESC>");
                interpreter.RunDisplayMarks(s_emptyList);
                var expectedMarks = new[] {
                    @"mark line  col file/text",
                    @" '      1    0 VimBufferTest.cs",
                    @" ""      1    0 VimBufferTest.cs",
                    //@" [      1    0 VimBufferTest.cs",
                    //@" ]     10    1 VimBufferTest.cs",
                    @" ^     10    1 VimBufferTest.cs",
                    @" .     10    0 VimBufferTest.cs",
                };

                Assert.Equal(string.Join(Environment.NewLine, expectedMarks), _statusUtil.LastStatus);

                // set an upper and lower mark
                _vimBuffer.ProcessNotation("kmzkmZ");

                _vimBuffer.ProcessNotation("1G");
                interpreter.RunDisplayMarks(s_emptyList);
                expectedMarks = new[] {
                    @"mark line  col file/text",
                    @" '      8    0 VimBufferTest.cs",
                    @" z      9    0 VimBufferTest.cs",
                    @" Z      8    0 VimBufferTest.cs",
                    @" ""      1    0 VimBufferTest.cs",
                    //@" [      1    0 VimBufferTest.cs",
                    //@" ]     10    1 VimBufferTest.cs",
                    @" ^     10    1 VimBufferTest.cs",
                    @" .     10    0 VimBufferTest.cs",
                };
                Assert.Equal(string.Join(Environment.NewLine, expectedMarks), _statusUtil.LastStatus);

                _vimBuffer.ProcessNotation("yy");
                interpreter.RunDisplayMarks(s_emptyList);
                expectedMarks = new[] {
                    @"mark line  col file/text",
                    @" '      8    0 VimBufferTest.cs",
                    @" z      9    0 VimBufferTest.cs",
                    @" Z      8    0 VimBufferTest.cs",
                    @" ""      1    0 VimBufferTest.cs",
                    //@" [      1    0 VimBufferTest.cs",
                    //@" ]     10    1 VimBufferTest.cs",
                    @" ^     10    1 VimBufferTest.cs",
                    @" .     10    0 VimBufferTest.cs",
                };
                Assert.Equal(string.Join(Environment.NewLine, expectedMarks), _statusUtil.LastStatus);

                // set an upper and lower mark
                _vimBuffer.ProcessNotation("jmajmA2k");

                _vimBuffer.ProcessNotation("5jp");
                interpreter.RunDisplayMarks(s_emptyList);
                expectedMarks = new[] {
                    @"mark line  col file/text",
                    @" '      9    0 VimBufferTest.cs",
                    @" a      2    0 VimBufferTest.cs",
                    @" z     10    0 VimBufferTest.cs",
                    @" A      3    0 VimBufferTest.cs",
                    @" Z      9    0 VimBufferTest.cs",
                    @" ""      1    0 VimBufferTest.cs",
                    //@" [      7    0 VimBufferTest.cs",
                    //@" ]      7    1 VimBufferTest.cs",
                    @" ^     11    1 VimBufferTest.cs",
                    @" .      7    1 VimBufferTest.cs",
                };
                Assert.Equal(string.Join(Environment.NewLine, expectedMarks), _statusUtil.LastStatus);

                _vimBuffer.ProcessNotation("kV<ESC>");
                interpreter.RunDisplayMarks(s_emptyList);

                expectedMarks = new[] {
                    @"mark line  col file/text",
                    @" '      9    0 VimBufferTest.cs",
                    @" a      2    0 VimBufferTest.cs",
                    @" z     10    0 VimBufferTest.cs",
                    @" A      3    0 VimBufferTest.cs",
                    @" Z      9    0 VimBufferTest.cs",
                    @" ""      1    0 VimBufferTest.cs",
                    //@" [      7    0 VimBufferTest.cs",
                    //@" ]      7    1 VimBufferTest.cs",
                    @" ^     11    1 VimBufferTest.cs",
                    @" .      7    1 VimBufferTest.cs",
                    @" <      6    0 VimBufferTest.cs",
                    @" >      6    1 VimBufferTest.cs",
                };
                Assert.Equal(string.Join(Environment.NewLine, expectedMarks), _statusUtil.LastStatus);
            }