laughing-hipster/.atom/packages/vim-mode/spec/prefixes-spec.coffee

128 lines
4.1 KiB
CoffeeScript

helpers = require './spec-helper'
describe "Prefixes", ->
[editor, editorView, vimState] = []
beforeEach ->
vimMode = atom.packages.loadPackage('vim-mode')
vimMode.activateResources()
editorView = helpers.cacheEditor(editorView)
editor = editorView.editor
vimState = editorView.vimState
vimState.activateCommandMode()
vimState.resetCommandMode()
keydown = (key, options={}) ->
options.element ?= editorView[0]
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, 8]
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 * 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'