Skip to content

Commit

Permalink
guts: add the linear movement tests and fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
sjl committed Dec 10, 2010
1 parent 1853421 commit 7ed3cc2
Show file tree
Hide file tree
Showing 2 changed files with 126 additions and 1 deletion.
7 changes: 6 additions & 1 deletion plugin/gundo.vim
Expand Up @@ -623,7 +623,12 @@ endfunction"}}}

function! s:GundoMove(direction) range"{{{
let start_line = getline('.')
let distance = 2 * v:count1
if v:count1 == 0
let move_count = 1
else
let move_count = v:count1
endif
let distance = 2 * move_count

" If we're in between two nodes we move by one less to get back on track.
if stridx(start_line, '[') == -1
Expand Down
120 changes: 120 additions & 0 deletions tests/test-movement.vim
@@ -0,0 +1,120 @@
UTSuite [Gundo] Testing Toggling

function! s:Setup()"{{{
exec 'edit test'
call g:Goto('test')
endfunction"}}}
function! s:Teardown()"{{{
if bufwinnr(bufnr('__Gundo__')) != -1
exec bufwinnr(bufnr('__Gundo__')) . 'wincmd w'
quit
endif
if bufwinnr(bufnr('__Gundo_Preview__')) != -1
exec bufwinnr(bufnr('__Gundo_Preview__')) . 'wincmd w'
quit
endif
if bufnr('__Gundo__') != -1
exec 'bwipeout! ' . bufnr('__Gundo__')
endif
if bufnr('__Gundo_Preview__') != -1
exec 'bwipeout! ' . bufnr('__Gundo_Preview__')
endif
if bufnr('test') != -1
exec 'bwipeout! ' . bufnr('test')
endif
if bufnr('test2') != -1
exec 'bwipeout! ' . bufnr('test2')
endif
endfunction"}}}

function! s:TestMovementBasic()"{{{
" Make three linear changes
call g:TypeLineDone("ONE")
call g:TypeLineDone("TWO")
call g:TypeLineDone("THREE")

" Open Gundo
GundoToggle

" Make sure we're on the newest/current state
Assert g:CurrentLineContains("[3]")

" Move down
normal j
Assert g:CurrentLineContains("[2]")

" Move down
normal j
Assert g:CurrentLineContains("[1]")

" Move down
normal j
Assert g:CurrentLineContains("[0]")

" Move up
normal k
Assert g:CurrentLineContains("[1]")

" Move up
normal k
Assert g:CurrentLineContains("[2]")

" Move up
normal k
Assert g:CurrentLineContains("[3]")
endfunction"}}}

function! s:TestMovementLinear()"{{{
" Make four changes:
"
" o [4]
" |
" | o [3]
" | |
" o | [2]
" |/
" o [1]
" |
" o [0] (original)

call g:TypeLineDone("ONE")
call g:TypeLineDone("TWO")
silent! undo
call g:TypeLineDone("THREE")
silent! undo 2
call g:TypeLineDone("FOUR")

" Open Gundo
GundoToggle

" Make sure we're on the newest/current state
Assert g:CurrentLineContains("[4]")

" Move down
normal j
Assert g:CurrentLineContains("[3]")

" Move down
normal j
Assert g:CurrentLineContains("[2]")

" Move down
normal j
Assert g:CurrentLineContains("[1]")

" Move down
normal j
Assert g:CurrentLineContains("[0]")

" Move up
normal k
Assert g:CurrentLineContains("[1]")

" Move up
normal k
Assert g:CurrentLineContains("[2]")

" Move up
normal k
Assert g:CurrentLineContains("[3]")
endfunction"}}}

0 comments on commit 7ed3cc2

Please sign in to comment.