+
+ describe "horizontal scroll cursor keybindings", ->
+ beforeEach ->
+ editor.setWidth(600)
+ editor.setLineHeightInPixels(10)
+ editor.setDefaultCharWidth(10)
+ text = ""
+ for i in [100..199]
+ text += "#{i} "
+ editor.setText(text)
+ editor.setCursorBufferPosition([0, 0])
+
+ describe "the zs keybinding", ->
+ zsPos = (pos) ->
+ editor.setCursorBufferPosition([0, pos])
+ keydown('z')
+ keydown('s')
+ editor.getScrollLeft()
+
+ startPosition = NaN
+
+ beforeEach ->
+ startPosition = editor.getScrollLeft()
+
+ it "does nothing near the start of the line", ->
+ pos1 = zsPos(1)
+ expect(pos1).toEqual(startPosition)
+
+ it "moves the cursor the nearest it can to the left edge of the editor", ->
+ pos10 = zsPos(10)
+ expect(pos10).toBeGreaterThan(startPosition)
+
+ pos11 = zsPos(11)
+ expect(pos11 - pos10).toEqual(10)
+
+ it "does nothing near the end of the line", ->
+ posEnd = zsPos(399)
+ expect(editor.getCursorBufferPosition()).toEqual [0, 399]
+
+ pos390 = zsPos(390)
+ expect(pos390).toEqual(posEnd)
+ expect(editor.getCursorBufferPosition()).toEqual [0, 390]
+
+ pos340 = zsPos(340)
+ expect(pos340).toBeLessThan(posEnd)
+ pos342 = zsPos(342)
+ expect(pos342 - pos340).toEqual(20)
+
+ it "does nothing if all lines are short", ->
+ editor.setText('short')
+ startPosition = editor.getScrollLeft()
+ pos1 = zsPos(1)
+ expect(pos1).toEqual(startPosition)
+ expect(editor.getCursorBufferPosition()).toEqual [0, 1]
+ pos10 = zsPos(10)
+ expect(pos10).toEqual(startPosition)
+ expect(editor.getCursorBufferPosition()).toEqual [0, 4]
+
+
+ describe "the ze keybinding", ->
+ zePos = (pos) ->
+ editor.setCursorBufferPosition([0, pos])
+ keydown('z')
+ keydown('e')
+ editor.getScrollLeft()
+
+ startPosition = NaN
+
+ beforeEach ->
+ startPosition = editor.getScrollLeft()
+
+ it "does nothing near the start of the line", ->
+ pos1 = zePos(1)
+ expect(pos1).toEqual(startPosition)
+
+ pos40 = zePos(40)
+ expect(pos40).toEqual(startPosition)
+
+ it "moves the cursor the nearest it can to the right edge of the editor", ->
+ pos110 = zePos(110)
+ expect(pos110).toBeGreaterThan(startPosition)
+
+ pos109 = zePos(109)
+ expect(pos110 - pos109).toEqual(10)
+
+ it "does nothing when very near the end of the line", ->
+ posEnd = zePos(399)
+ expect(editor.getCursorBufferPosition()).toEqual [0, 399]
+
+ pos397 = zePos(397)
+ expect(pos397).toEqual(posEnd)
+ expect(editor.getCursorBufferPosition()).toEqual [0, 397]
+
+ pos380 = zePos(380)
+ expect(pos380).toBeLessThan(posEnd)
+
+ pos382 = zePos(382)
+ expect(pos382 - pos380).toEqual(20)
+
+ it "does nothing if all lines are short", ->
+ editor.setText('short')
+ startPosition = editor.getScrollLeft()
+ pos1 = zePos(1)
+ expect(pos1).toEqual(startPosition)
+ expect(editor.getCursorBufferPosition()).toEqual [0, 1]
+ pos10 = zePos(10)
+ expect(pos10).toEqual(startPosition)
+ expect(editor.getCursorBufferPosition()).toEqual [0, 4]