vimPlugins.vim-secret/test/test.vader
2021-01-28 22:51:56 +01:00

251 lines
8 KiB
Text
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Execute (setup test environment):
set hidden
Execute (helper functions):
function! AssertSyntax(...)
for i in range(1, a:0)
let line = split(get(a:000, i-1), '\zs')
for j in range(1, len(line))
if get(line, j-1) == '•'
AssertEqual vader#helper#syntax_at(i, j), 'SecretHidden', 'Expected SecretHidden, got ' . vader#helper#syntax_at(i, j) . ' at line ' . i . ', column ' . j
elseif get(line, j-1) == ' '
AssertEqual vader#helper#syntax_at(i, j), '', 'Expected None, got ' . vader#helper#syntax_at(i, j) . ' at line ' . i . ', column ' . j
elseif get(line, j-1) == '-'
AssertEqual vader#helper#syntax_at(i, j), 'SecretVisible', 'Expected SecretVisible, got ' . vader#helper#syntax_at(i, j) . ' at line ' . i . ', column ' . j
endif
endfor
endfor
endfunction
command! -nargs=* AssertSyntax call AssertSyntax(<args>)
Before:
source plugin/secret.vim
source autoload/secret.vim
After:
Secret!
unlet! g:secret_cchar
unlet! g:secret_visibility
unlet! g:secret_visibility_normal
unlet! g:secret_visibility_insert
unlet! g:secret_timeout_normal
unlet! g:secret_timeout_insert
Given:
Lorem ipsum
dolor sit amet
Execute (enable/disable):
AssertSyntax ' ', ' '
Secret
AssertSyntax '----- •••••', '••••• ••• ••••'
Assert exists('w:secret_state')
Assert exists('#secret-' . win_getid() . '-' . bufnr())
Secret!
AssertSyntax ' ', ' '
Assert !exists('w:secret_state')
Assert !exists('#secret-' . win_getid() . '-' . bufnr())
Execute (word visibility):
Secret
AssertSyntax '----- •••••', '••••• ••• ••••'
normal jw
AssertSyntax '••••• •••••', '••••• --- ••••'
Execute (line visibility):
let g:secret_visibility = 'line'
Secret
AssertSyntax '-----------', '••••• ••• ••••'
normal j
AssertSyntax '••••• •••••', '--------------'
Execute (char visibility):
let g:secret_visibility = 'char'
Secret
AssertSyntax '-•••• •••••', '••••• ••• ••••'
normal wll
AssertSyntax '••••• ••-••', '••••• ••• ••••'
Execute (none visibility):
let g:secret_visibility = 'none'
Secret
AssertSyntax '••••• •••••', '••••• ••• ••••'
normal jww
AssertSyntax '••••• •••••', '••••• ••• ••••'
Execute (line, insert):
let g:secret_visibility_insert = 'line'
Secret
AssertSyntax '----- •••••', '••••• ••• ••••'
doautocmd InsertEnter
AssertSyntax '-----------', '••••• ••• ••••'
doautocmd InsertLeave
AssertSyntax '----- •••••', '••••• ••• ••••'
Execute (word, insert):
let g:secret_visibility_insert = 'word'
Secret
AssertSyntax '----- •••••', '••••• ••• ••••'
doautocmd InsertEnter
AssertSyntax '----- •••••', '••••• ••• ••••'
doautocmd InsertLeave
AssertSyntax '----- •••••', '••••• ••• ••••'
Execute (char, insert):
let g:secret_visibility_insert = 'char'
Secret
AssertSyntax '----- •••••', '••••• ••• ••••'
normal l
doautocmd InsertEnter
AssertSyntax '-•••• •••••', '••••• ••• ••••'
doautocmd InsertLeave
AssertSyntax '----- •••••', '••••• ••• ••••'
Execute (none, insert):
let g:secret_visibility_insert = 'none'
Secret
AssertSyntax '----- •••••', '••••• ••• ••••'
doautocmd InsertEnter
AssertSyntax '••••• •••••', '••••• ••• ••••'
doautocmd InsertLeave
AssertSyntax '----- •••••', '••••• ••• ••••'
Execute (timeout, normal):
Secret
AssertSyntax '----- •••••', '••••• ••• ••••'
doautocmd CursorHold
AssertSyntax '••••• •••••', '••••• ••• ••••'
Secret!
let g:secret_timeout_normal = 0
Secret
doautocmd CursorHold
AssertSyntax '----- •••••', '••••• ••• ••••'
Execute (timeout, insert):
" Not testable?
Execute (splits 1):
vsp
Secret
AssertSyntax '----- •••••', '••••• ••• ••••'
let w = win_getid()
let b = bufnr()
wincmd l
Assert !exists('w:secret_state')
Assert exists('#secret-' . w . '-' . b)
AssertSyntax ' ', ' '
wincmd h " Switch back to secret buffer so it is undone
Execute (splits 2):
Secret
vsp
Assert !exists('w:secret_state')
AssertSyntax ' ', ' '
wincmd l
doautocmd CursorMoved
AssertSyntax '----- •••••', '••••• ••• ••••'
Execute (leave window):
Secret
AssertSyntax '----- •••••', '••••• ••• ••••'
doautocmd WinLeave
AssertSyntax '••••• •••••', '••••• ••• ••••'
Execute (close buffer):
enew
let b = bufnr()
0put ='Lorem ipsum'
Secret
AssertSyntax '----- •••••'
bdelete!
Assert !exists('w:secret_state')
Assert !exists('#secret-' . win_getid() . '-' . b)
Execute (switching buffers in one window):
let a = bufnr()
Secret
AssertSyntax '----- •••••', '••••• ••• ••••'
enew
let b = bufnr()
Secret
0put ='Lorem ipsum'
AssertSyntax '----- •••••'
enew
let c = bufnr()
0put ='Lorem ibsum'
Secret
normal w
AssertSyntax '••••• -----'
Assert exists('#secret-' . win_getid() . '-' . a)
Assert exists('#secret-' . win_getid() . '-' . b)
Assert exists('#secret-' . win_getid() . '-' . c)
Assert has_key(w:secret_state, a)
Assert has_key(w:secret_state, b)
Assert has_key(w:secret_state, c)
execute 'b' a
AssertSyntax '----- •••••', '••••• ••• ••••'
execute 'b' b
AssertSyntax '----- •••••'
execute 'b' c
AssertSyntax '----- •••••'
execute 'b' a
execute 'bdelete!' c
Assert exists('#secret-' . win_getid() . '-' . a)
Assert exists('#secret-' . win_getid() . '-' . b)
Assert !exists('#secret-' . win_getid() . '-' . c)
Assert has_key(w:secret_state, a)
Assert has_key(w:secret_state, b)
Assert !has_key(w:secret_state, c)
execute 'bdelete!' b
Assert exists('#secret-' . win_getid() . '-' . a)
Assert !exists('#secret-' . win_getid() . '-' . b)
Assert !exists('#secret-' . win_getid() . '-' . c)
Assert has_key(w:secret_state, a)
Assert !has_key(w:secret_state, b)
Assert !has_key(w:secret_state, c)
b #
execute 'bdelete!' a
Assert !exists('#secret-' . win_getid() . '-' . a)
Assert !exists('#secret-' . win_getid() . '-' . b)
Assert !exists('#secret-' . win_getid() . '-' . c)
Assert !exists('w:secret_state')
Execute (quickhide mapping):
let g:secret_quickhide = '<C-e>'
Secret
AssertSyntax '----- •••••', '••••• ••• ••••'
normal 
AssertSyntax '••••• •••••', '••••• ••• ••••'
normal w
doautocmd CursorMoved
AssertSyntax '••••• -----', '••••• ••• ••••'
Execute (quickhide mapping, moving around):
let g:secret_quickhide = 'q'
vsp
Secret
normal q
AssertSyntax '••••• •••••', '••••• ••• ••••'
enew
0put ='Lorem ipsum'
AssertEqual maparg('q'), ''
b #
AssertEqual maparg('q'), ':syntax clear SecretVisible<CR>'
wincmd l
AssertEqual maparg('q'), ''
wincmd h
doautocmd CursorMoved
AssertSyntax '----- •••••', '••••• ••• ••••'
normal q
AssertSyntax '••••• •••••', '••••• ••• ••••'
Secret!
AssertEqual maparg('q'), ''