aboutsummaryrefslogtreecommitdiff
path: root/atom/packages/vim-mode/spec/prefixes-spec.coffee
diff options
context:
space:
mode:
authorBen Beltran <ben@nsovocal.com>2015-07-10 11:12:25 -0500
committerBen Beltran <ben@nsovocal.com>2015-07-10 11:12:25 -0500
commit24c7594d62d8d7fbbcdb64b11ce4adc5d8e6991a (patch)
treeded312222bb108923da1820ba40b04d710d20e5b /atom/packages/vim-mode/spec/prefixes-spec.coffee
parenteb786e82d170e2abc351a432ade616d6ecdeeb6b (diff)
Adds atom
Diffstat (limited to 'atom/packages/vim-mode/spec/prefixes-spec.coffee')
-rw-r--r--atom/packages/vim-mode/spec/prefixes-spec.coffee148
1 files changed, 148 insertions, 0 deletions
diff --git a/atom/packages/vim-mode/spec/prefixes-spec.coffee b/atom/packages/vim-mode/spec/prefixes-spec.coffee
new file mode 100644
index 0000000..e782d20
--- /dev/null
+++ b/atom/packages/vim-mode/spec/prefixes-spec.coffee
@@ -0,0 +1,148 @@
+helpers = require './spec-helper'
+
+describe "Prefixes", ->
+ [editor, editorElement, vimState] = []
+
+ beforeEach ->
+ vimMode = atom.packages.loadPackage('vim-mode')
+ vimMode.activateResources()
+
+ helpers.getEditorElement (element) ->
+ editorElement = element
+ editor = editorElement.getModel()
+ vimState = editorElement.vimState
+ vimState.activateCommandMode()
+ vimState.resetCommandMode()
+
+ keydown = (key, options={}) ->
+ options.element ?= editorElement
+ helpers.keydown(key, options)
+
+ describe "Repeat", ->
+ describe "with operations", ->
+ beforeEach ->
+ editor.setText("123456789abc")
+ editor.setCursorScreenPosition([0, 0])
+
+ it "repeats N times", ->
+ keydown('3')
+ keydown('x')
+
+ expect(editor.getText()).toBe '456789abc'
+
+ it "repeats NN times", ->
+ keydown('1')
+ keydown('0')
+ keydown('x')
+
+ expect(editor.getText()).toBe 'bc'
+
+ describe "with motions", ->
+ beforeEach ->
+ editor.setText('one two three')
+ editor.setCursorScreenPosition([0, 0])
+
+ it "repeats N times", ->
+ keydown('d')
+ keydown('2')
+ keydown('w')
+
+ expect(editor.getText()).toBe 'three'
+
+ describe "in visual mode", ->
+ beforeEach ->
+ editor.setText('one two three')
+ editor.setCursorScreenPosition([0, 0])
+
+ it "repeats movements in visual mode", ->
+ keydown("v")
+ keydown("2")
+ keydown("w")
+
+ expect(editor.getCursorScreenPosition()).toEqual [0, 9]
+
+ describe "Register", ->
+ describe "the a register", ->
+ it "saves a value for future reading", ->
+ vimState.setRegister('a', text: 'new content')
+ expect(vimState.getRegister("a").text).toEqual 'new content'
+
+ it "overwrites a value previously in the register", ->
+ vimState.setRegister('a', text: 'content')
+ vimState.setRegister('a', text: 'new content')
+ expect(vimState.getRegister("a").text).toEqual 'new content'
+
+ describe "the B register", ->
+ it "saves a value for future reading", ->
+ vimState.setRegister('B', text: 'new content')
+ expect(vimState.getRegister("b").text).toEqual 'new content'
+ expect(vimState.getRegister("B").text).toEqual 'new content'
+
+ it "appends to a value previously in the register", ->
+ vimState.setRegister('b', text: 'content')
+ vimState.setRegister('B', text: 'new content')
+ expect(vimState.getRegister("b").text).toEqual 'contentnew content'
+
+ it "appends linewise to a linewise value previously in the register", ->
+ vimState.setRegister('b', {type: 'linewise', text: 'content\n'})
+ vimState.setRegister('B', text: 'new content')
+ expect(vimState.getRegister("b").text).toEqual 'content\nnew content\n'
+
+ it "appends linewise to a character value previously in the register", ->
+ vimState.setRegister('b', text: 'content')
+ vimState.setRegister('B', {type: 'linewise', text: 'new content\n'})
+ expect(vimState.getRegister("b").text).toEqual 'content\nnew content\n'
+
+
+ describe "the * register", ->
+ describe "reading", ->
+ it "is the same the system clipboard", ->
+ expect(vimState.getRegister('*').text).toEqual 'initial clipboard content'
+ expect(vimState.getRegister('*').type).toEqual 'character'
+
+ describe "writing", ->
+ beforeEach ->
+ vimState.setRegister('*', text: 'new content')
+
+ it "overwrites the contents of the system clipboard", ->
+ expect(atom.clipboard.read()).toEqual 'new content'
+
+ # FIXME: once linux support comes out, this needs to read from
+ # the correct clipboard. For now it behaves just like the * register
+ # See :help x11-cut-buffer and :help registers for more details on how these
+ # registers work on an X11 based system.
+ describe "the + register", ->
+ describe "reading", ->
+ it "is the same the system clipboard", ->
+ expect(vimState.getRegister('*').text).toEqual 'initial clipboard content'
+ expect(vimState.getRegister('*').type).toEqual 'character'
+
+ describe "writing", ->
+ beforeEach ->
+ vimState.setRegister('*', text: 'new content')
+
+ it "overwrites the contents of the system clipboard", ->
+ expect(atom.clipboard.read()).toEqual 'new content'
+
+ describe "the _ register", ->
+ describe "reading", ->
+ it "is always the empty string", ->
+ expect(vimState.getRegister("_").text).toEqual ''
+
+ describe "writing", ->
+ it "throws away anything written to it", ->
+ vimState.setRegister('_', text: 'new content')
+ expect(vimState.getRegister("_").text).toEqual ''
+
+ describe "the % register", ->
+ beforeEach ->
+ spyOn(editor, 'getURI').andReturn('/Users/atom/known_value.txt')
+
+ describe "reading", ->
+ it "returns the filename of the current editor", ->
+ expect(vimState.getRegister('%').text).toEqual '/Users/atom/known_value.txt'
+
+ describe "writing", ->
+ it "throws away anything written to it", ->
+ vimState.setRegister('%', "new content")
+ expect(vimState.getRegister('%').text).toEqual '/Users/atom/known_value.txt'