neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

test_gui.vim (2762B)


      1 func SetUp()
      2  source $VIMRUNTIME/menu.vim
      3 endfunc
      4 
      5 func Test_colorscheme()
      6  " call assert_equal('16777216', &t_Co)
      7 
      8  let colorscheme_saved = exists('g:colors_name') ? g:colors_name : 'default'
      9  let g:color_count = 0
     10  augroup TestColors
     11    au!
     12    au ColorScheme * let g:color_count += 1
     13                 \ | let g:after_colors = g:color_count
     14                 \ | let g:color_after = expand('<amatch>')
     15    au ColorSchemePre * let g:color_count += 1
     16                    \ | let g:before_colors = g:color_count
     17                    \ | let g:color_pre = expand('<amatch>')
     18  augroup END
     19 
     20  colorscheme torte
     21  redraw!
     22  call assert_equal('dark', &background)
     23  call assert_equal(1, g:before_colors)
     24  call assert_equal(2, g:after_colors)
     25  call assert_equal('torte', g:color_pre)
     26  call assert_equal('torte', g:color_after)
     27  call assert_equal("\ntorte", execute('colorscheme'))
     28 
     29  let a = substitute(execute('hi Search'), "\n\\s\\+", ' ', 'g')
     30  " FIXME: temporarily check less while the colorscheme changes
     31  " call assert_match("\nSearch         xxx term=reverse cterm=reverse ctermfg=196 ctermbg=16 gui=reverse guifg=#ff0000 guibg=#000000", a)
     32  " call assert_match("\nSearch         xxx term=reverse ", a)
     33 
     34  call assert_fails('colorscheme does_not_exist', 'E185:')
     35  call assert_equal('does_not_exist', g:color_pre)
     36  call assert_equal('torte', g:color_after)
     37 
     38  exec 'colorscheme' colorscheme_saved
     39  augroup TestColors
     40    au!
     41  augroup END
     42  unlet g:color_count g:after_colors g:before_colors
     43  redraw!
     44 endfunc
     45 
     46 " Test that Buffers menu generates the correct index for different buffer
     47 " names for sorting.
     48 func Test_Buffers_Menu()
     49  doautocmd LoadBufferMenu VimEnter
     50 
     51  " Non-ASCII characters only use the first character as idx
     52  let idx_emoji = or(char2nr('πŸ˜‘'), 0x40000000)
     53 
     54  " Only first five letters are used for alphanumeric:
     55  " ('a'-32) << 24 + ('b'-32) << 18 + ('c'-32) << 12 + ('d'-32) << 6 + ('e'-32)
     56  let idx_abcde = 0x218A3925
     57  " ('a'-32) << 24 + ('b'-32) << 18 + ('c'-32) << 12 + ('d'-32) << 6 + ('f'-32)
     58  let idx_abcdf = 0x218A3926
     59  " ('a'-32) << 24 + 63 (clamped) << 18 + ('c'-32) << 12 + ('d'-32) << 6 + ('e'-32)
     60  let idx_a_emoji_cde = 0x21FE3925
     61 
     62  let names = ['πŸ˜‘', 'πŸ˜‘1', 'πŸ˜‘2', 'abcde', 'abcdefghi', 'abcdf', 'aπŸ˜‘cde']
     63  let indices = [idx_emoji, idx_emoji, idx_emoji, idx_abcde, idx_abcde, idx_abcdf, idx_a_emoji_cde]
     64  for i in range(len(names))
     65    let name = names[i]
     66    let idx = indices[i]
     67    exe ':badd ' .. name
     68    let nr = bufnr('$')
     69 
     70    let cmd = printf(':amenu Buffers.%s\ (%d)', name, nr)
     71    let menu = split(execute(cmd), '\n')[1]
     72    call assert_inrange(0, 0x7FFFFFFF, idx)
     73    call assert_match('^' .. idx .. ' '.. name, menu)
     74  endfor
     75 
     76  %bw!
     77 endfunc
     78 
     79 " vim: shiftwidth=2 sts=2 expandtab