123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786 |
- function! SetUp()
- let g:ycm_use_clangd = 1
- let g:ycm_enable_semantic_highlighting = 1
- call youcompleteme#test#setup#SetUp()
- nmap <leader><leader>w <Plug>(YCMFindSymbolInWorkspace)
- nmap <leader><leader>d <Plug>(YCMFindSymbolInDocument)
- endfunction
- function! TearDown()
- endfunction
- function! Test_WorkspaceSymbol_Basic()
- call youcompleteme#test#setup#OpenFile(
- \ '/test/testdata/cpp/finder_test.cc', {} )
- let original_win = winnr()
- let b = bufnr()
- let l = winlayout()
- let popup_id = -1
- function! PutQuery( ... )
- " Wait for the current buffer to be a prompt buffer
- call WaitForAssert( { -> assert_equal( 'prompt', &buftype ) } )
- call WaitForAssert( { -> assert_equal( 'i', mode() ) } )
- call WaitForAssert( { -> assert_true(
- \ youcompleteme#finder#GetState().id != -1 ) } )
- " TODO: Wait for the popup to be displayed, and check the contents
- call FeedAndCheckAgain( 'xthisisathing', funcref( 'SelectItem' ) )
- endfunction
- function SelectItem( ... )
- let id = youcompleteme#finder#GetState().id
- call WaitForAssert( { ->
- \ assert_equal( ' [X] Search for symbol: xthisisathing ',
- \ popup_getoptions( id ).title ) },
- \ 10000 )
- call WaitForAssert( { -> assert_equal( 1, line( '$', id ) ) } )
- call feedkeys( "\<CR>" )
- endfunction
- " <Leader> is \ - this calls <Plug>(YCMFindSymbolInWorkspace)
- call FeedAndCheckMain( '\\w', funcref( 'PutQuery' ) )
- call WaitForAssert( { -> assert_equal( l, winlayout() ) } )
- call WaitForAssert( { -> assert_equal( original_win, winnr() ) } )
- call assert_equal( b, bufnr() )
- call assert_equal( [ 0, 5, 7, 0 ], getpos( '.' ) )
- delfunct PutQuery
- delfunct SelectItem
- silent %bwipe!
- endfunction
- function! Test_DocumentSymbols_Basic()
- call youcompleteme#test#setup#OpenFile(
- \ '/test/testdata/cpp/finder_test.cc', {} )
- let original_win = winnr()
- let b = bufnr()
- let l = winlayout()
- let popup_id = -1
- function! PutQuery( ... )
- " Wait for the current buffer to be a prompt buffer
- call WaitForAssert( { -> assert_equal( 'prompt', &buftype ) } )
- call WaitForAssert( { -> assert_equal( 'i', mode() ) } )
- call WaitForAssert( { -> assert_true(
- \ youcompleteme#finder#GetState().id != -1 ) } )
- " TODO: Wait for the popup to be displayed, and check the contents
- call FeedAndCheckAgain( 'xthisisathing', funcref( 'SelectItem' ) )
- endfunction
- function SelectItem( ... )
- let id = youcompleteme#finder#GetState().id
- call WaitForAssert( { ->
- \ assert_equal( ' [X] Search for symbol: xthisisathing ',
- \ popup_getoptions( id ).title ) },
- \ 10000 )
- call WaitForAssert( { -> assert_equal( 1, line( '$', id ) ) } )
- call feedkeys( "\<CR>" )
- endfunction
- " <Leader> is \ - this calls <Plug>(YCMFindSymbolInDocument)
- call FeedAndCheckMain( '\\d', funcref( 'PutQuery' ) )
- call WaitForAssert( { -> assert_equal( l, winlayout() ) } )
- call WaitForAssert( { -> assert_equal( original_win, winnr() ) } )
- call assert_equal( b, bufnr() )
- " NOTE: cland returns the position of the decl here not the identifier. This
- " is why it's position 3 not 7 as in the Test_WorkspaceSymbol_Basic
- call assert_equal( [ 0, 5, 3, 0 ], getpos( '.' ) )
- delfunct PutQuery
- delfunct SelectItem
- silent %bwipe!
- endfunction
- function! Test_Cancel_DocumentSymbol()
- call youcompleteme#test#setup#OpenFile(
- \ '/test/testdata/cpp/finder_test.cc', {} )
- let original_win = winnr()
- let b = bufnr()
- let l = winlayout()
- " Jump to a different position so that we can ensure we return to the same
- " place
- normal! G
- let p = getpos( '.' )
- let popup_id = -1
- function! PutQuery( ... )
- " Wait for the current buffer to be a prompt buffer
- call WaitForAssert( { -> assert_equal( 'prompt', &buftype ) } )
- call WaitForAssert( { -> assert_equal( 'i', mode() ) } )
- call WaitForAssert( { -> assert_true(
- \ youcompleteme#finder#GetState().id != -1 ) } )
- call FeedAndCheckAgain( 'xthisisathing', funcref( 'SelectItem' ) )
- endfunction
- function SelectItem( ... )
- let id = youcompleteme#finder#GetState().id
- call WaitForAssert( { ->
- \ assert_equal( ' [X] Search for symbol: xthisisathing ',
- \ popup_getoptions( id ).title ) },
- \ 10000 )
- call WaitForAssert( { -> assert_equal( 1, line( '$', id ) ) } )
- " Cancel - this should stopinsert
- call feedkeys( "\<C-c>" )
- endfunction
- " <Leader> is \ - this calls <Plug>(YCMFindSymbolInDocument)
- call FeedAndCheckMain( '\\d', funcref( 'PutQuery' ) )
- call WaitForAssert( { -> assert_equal( l, winlayout() ) } )
- call WaitForAssert( { -> assert_equal( original_win, winnr() ) } )
- call assert_equal( b, bufnr() )
- " Retuned to just where we started
- call assert_equal( p, getpos( '.' ) )
- delfunct PutQuery
- delfunct SelectItem
- silent %bwipe!
- endfunction
- function! Test_EmptySearch()
- call youcompleteme#test#setup#OpenFile(
- \ '/test/testdata/cpp/finder_test.cc', {} )
- let original_win = winnr()
- let b = bufnr()
- let l = winlayout()
- let popup_id = -1
- function! PutQuery( ... )
- " Wait for the current buffer to be a prompt buffer
- call WaitForAssert( { -> assert_equal( 'prompt', &buftype ) } )
- call WaitForAssert( { -> assert_equal( 'i', mode() ) } )
- call WaitForAssert( { -> assert_true(
- \ youcompleteme#finder#GetState().id != -1 ) } )
- " TODO: Wait for the popup to be displayed, and check the contents
- call FeedAndCheckAgain( 'xnothingshouldmatchthisx',
- \ funcref( 'SelectNothing' ) )
- endfunction
- function SelectNothing( ... )
- let id = youcompleteme#finder#GetState().id
- call WaitForAssert( { ->
- \ assert_equal( ' [X] Search for symbol: xnothingshouldmatchthisx ',
- \ popup_getoptions( id ).title ) },
- \ 10000 )
- call WaitForAssert( { -> assert_equal( 1, line( '$', id ) ) } )
- call assert_equal( 'No results', getbufline( winbufnr( id ), '$' )[ 0 ] )
- call FeedAndCheckAgain( "\<CR>xnotarealthingx",
- \ funcref( 'ChangeSearch' ) )
- endfunction
- function ChangeSearch( ... )
- let id = youcompleteme#finder#GetState().id
- " Hitting enter with nothing to select clears the prompt, because prompt
- " buffer
- call WaitForAssert( { ->
- \ assert_equal( ' [X] Search for symbol: xnotarealthingx ',
- \ popup_getoptions( id ).title ) },
- \ 10000 )
- call assert_equal( 'No results', getbufline( winbufnr( id ), '$' )[ 0 ] )
- call assert_equal( -1, youcompleteme#finder#GetState().selected )
- call FeedAndCheckAgain( "\<C-u>xtiat", funcref( 'TestUpDownSelect' ) )
- endfunction
- let popup_id = -1
- function TestUpDownSelect( ... ) closure
- let popup_id = youcompleteme#finder#GetState().id
- call WaitForAssert( { ->
- \ assert_equal( ' [X] Search for symbol: xtiat ',
- \ popup_getoptions( popup_id ).title ) },
- \ 10000 )
- call WaitForAssert( { -> assert_equal( 2, line( '$', popup_id ) ) } )
- " FIXME: Doing all these tests with only 2 entries means that it's not
- " really checking the behaviour completely accurately, we should at least
- " use 3, but that would require crafting a new test file, which is nonzero
- " effort. Well, it's probably as much effort as writing this comment...
- " Check down movement
- call assert_equal( 0, youcompleteme#finder#GetState().selected )
- call assert_equal( 'x_this_is_a_thing',
- \ youcompleteme#finder#GetState().results[
- \ youcompleteme#finder#GetState().selected ].extra_data.name )
- call feedkeys( "\<C-j>", 'xt' )
- call assert_equal( 1, youcompleteme#finder#GetState().selected )
- call assert_equal( 'x_that_is_a_thing',
- \ youcompleteme#finder#GetState().results[
- \ youcompleteme#finder#GetState().selected ].extra_data.name )
- call feedkeys( "\<Down>", 'xt' )
- call assert_equal( 0, youcompleteme#finder#GetState().selected )
- call assert_equal( 'x_this_is_a_thing',
- \ youcompleteme#finder#GetState().results[
- \ youcompleteme#finder#GetState().selected ].extra_data.name )
- call feedkeys( "\<Tab>", 'xt' )
- call assert_equal( 1, youcompleteme#finder#GetState().selected )
- call assert_equal( 'x_that_is_a_thing',
- \ youcompleteme#finder#GetState().results[
- \ youcompleteme#finder#GetState().selected ].extra_data.name )
- call feedkeys( "\<C-n>", 'xt' )
- call assert_equal( 0, youcompleteme#finder#GetState().selected )
- call assert_equal( 'x_this_is_a_thing',
- \ youcompleteme#finder#GetState().results[
- \ youcompleteme#finder#GetState().selected ].extra_data.name )
- " Check up movement and wrapping
- call feedkeys( "\<C-k>", 'xt' )
- call assert_equal( 1, youcompleteme#finder#GetState().selected )
- call assert_equal( 'x_that_is_a_thing',
- \ youcompleteme#finder#GetState().results[
- \ youcompleteme#finder#GetState().selected ].extra_data.name )
- call feedkeys( "\<Up>", 'xt' )
- call assert_equal( 0, youcompleteme#finder#GetState().selected )
- call assert_equal( 'x_this_is_a_thing',
- \ youcompleteme#finder#GetState().results[
- \ youcompleteme#finder#GetState().selected ].extra_data.name )
- call feedkeys( "\<S-Tab>", 'xt' )
- call assert_equal( 1, youcompleteme#finder#GetState().selected )
- call assert_equal( 'x_that_is_a_thing',
- \ youcompleteme#finder#GetState().results[
- \ youcompleteme#finder#GetState().selected ].extra_data.name )
- call feedkeys( "\<C-p>", 'xt' )
- call assert_equal( 0, youcompleteme#finder#GetState().selected )
- call assert_equal( 'x_this_is_a_thing',
- \ youcompleteme#finder#GetState().results[
- \ youcompleteme#finder#GetState().selected ].extra_data.name )
- call feedkeys( "\<Tab>", 'xt' )
- call assert_equal( 1, youcompleteme#finder#GetState().selected )
- call assert_equal( 'x_that_is_a_thing',
- \ youcompleteme#finder#GetState().results[
- \ youcompleteme#finder#GetState().selected ].extra_data.name )
- call feedkeys( "\<Home>", 'xt' )
- call assert_equal( 0, youcompleteme#finder#GetState().selected )
- call assert_equal( 'x_this_is_a_thing',
- \ youcompleteme#finder#GetState().results[
- \ youcompleteme#finder#GetState().selected ].extra_data.name )
- call feedkeys( "\<End>", 'xt' )
- call assert_equal( 1, youcompleteme#finder#GetState().selected )
- call assert_equal( 'x_that_is_a_thing',
- \ youcompleteme#finder#GetState().results[
- \ youcompleteme#finder#GetState().selected ].extra_data.name )
- call feedkeys( "\<End>", 'xt' )
- call assert_equal( 1, youcompleteme#finder#GetState().selected )
- call assert_equal( 'x_that_is_a_thing',
- \ youcompleteme#finder#GetState().results[
- \ youcompleteme#finder#GetState().selected ].extra_data.name )
- call feedkeys( "\<PageUp>", 'xt' )
- call assert_equal( 0, youcompleteme#finder#GetState().selected )
- call assert_equal( 'x_this_is_a_thing',
- \ youcompleteme#finder#GetState().results[
- \ youcompleteme#finder#GetState().selected ].extra_data.name )
- call feedkeys( "\<PageDown>", 'xt' )
- call assert_equal( 1, youcompleteme#finder#GetState().selected )
- call assert_equal( 'x_that_is_a_thing',
- \ youcompleteme#finder#GetState().results[
- \ youcompleteme#finder#GetState().selected ].extra_data.name )
- call feedkeys( "\<CR>" )
- endfunction
- " <Leader> is \ - this calls <Plug>(YCMFindSymbolInWorkspace)
- call FeedAndCheckMain( '\\w', funcref( 'PutQuery' ) )
- call WaitForAssert( { -> assert_equal( {}, popup_getpos( popup_id ) ) } )
- call WaitForAssert( { -> assert_equal( l, winlayout() ) } )
- call WaitForAssert( { -> assert_equal( original_win, winnr() ) } )
- call assert_equal( b, bufnr() )
- call assert_equal( [ 0, 5, 30, 0 ], getpos( '.' ) )
- " We pop up a notification with some text in it
- if exists( '*popup_list' )
- call assert_equal( 1, len( popup_list() ) )
- endif
- " Old vim doesn't have popup_list, so hit-test the top-right corner which is
- " where we pup the popu
- let notification_id = popup_locate( 1, &columns - 1 )
- call assert_equal( [ 'Added 2 entries to quickfix list.' ],
- \ getbufline( winbufnr( notification_id ), 1, '$' ) )
- " Wait for the notification to clear
- call WaitForAssert(
- \ { -> assert_equal( {}, popup_getpos( notification_id ) ) },
- \ 10000 )
- delfunct PutQuery
- delfunct SelectNothing
- delfunct ChangeSearch
- delfunct TestUpDownSelect
- silent %bwipe!
- endfunction
- function! Test_LeaveWindow_CancelSearch()
- call youcompleteme#test#setup#OpenFile(
- \ '/test/testdata/cpp/finder_test.cc', {} )
- let original_win = winnr()
- let b = bufnr()
- let l = winlayout()
- " Jump to a different position so that we can ensure we return to the same
- " place
- normal! G
- let p = getpos( '.' )
- let popup_id = -1
- function! PutQuery( ... )
- " Wait for the current buffer to be a prompt buffer
- call WaitForAssert( { -> assert_equal( 'prompt', &buftype ) } )
- call WaitForAssert( { -> assert_equal( 'i', mode() ) } )
- call WaitForAssert( { -> assert_true(
- \ youcompleteme#finder#GetState().id != -1 ) } )
- call feedkeys( "\<C-w>w" )
- endfunction
- " <Leader> is \ - this calls <Plug>(YCMFindSymbolInWorkspace)
- call FeedAndCheckMain( '\\w', funcref( 'PutQuery' ) )
- call WaitForAssert( { -> assert_equal( l, winlayout() ) } )
- call WaitForAssert( { -> assert_equal( original_win, winnr() ) } )
- call assert_equal( b, bufnr() )
- " Retuned to just where we started
- call assert_equal( p, getpos( '.' ) )
- " No notifiaction
- if exists( '*popup_list' )
- call assert_equal( 0, len( popup_list() ) )
- endif
- delfunct PutQuery
- silent %bwipe!
- endfunction
- function! SetUp_Test_NoFileType_NoCompletionIn_PromptBuffer()
- call youcompleteme#test#setup#PushGlobal( 'ycm_filetype_whitelist', {
- \ '*': 1,
- \ 'ycm_nofiletype': 1
- \ } )
- endfunction
- function! TearDown_Test_NoFileType_NoCompletionIn_PromptBuffer()
- call youcompleteme#test#setup#PopGlobal( 'ycm_filetype_whitelist' )
- endfunction
- function! Test_NoFileType_NoCompletionIn_PromptBuffer()
- call youcompleteme#test#setup#OpenFile(
- \ '/test/testdata/cpp/finder_test.cc', {} )
- call test_override( 'char_avail', 1 )
- new
- call feedkeys(
- \ 'iThis is some text and so is xthisisathing x_this_is_a_thing',
- \ 'xt' )
- wincmd w
- let original_win = winnr()
- let b = bufnr()
- let l = winlayout()
- let popup_id = -1
- function! PutQuery( ... )
- " Wait for the current buffer to be a prompt buffer
- call WaitForAssert( { -> assert_equal( 'prompt', &buftype ) } )
- call WaitForAssert( { -> assert_equal( 'i', mode() ) } )
- call WaitForAssert( { -> assert_true(
- \ youcompleteme#finder#GetState().id != -1 ) } )
- " TODO: Wait for the popup to be displayed, and check the contents
- call FeedAndCheckAgain( 'xthisisathing', funcref( 'CheckNoPopup' ) )
- endfunction
- function! CheckNoPopup( ... )
- let id = youcompleteme#finder#GetState().id
- call WaitForAssert( { ->
- \ assert_equal( ' [X] Search for symbol: xthisisathing ',
- \ popup_getoptions( id ).title ) },
- \ 10000 )
- call WaitForAssert( { -> assert_equal( 1, line( '$', id ) ) } )
- call assert_equal( 'x_this_is_a_thing',
- \ youcompleteme#finder#GetState().results[
- \ youcompleteme#finder#GetState().selected ].extra_data.name )
- " Check there is no PUM - we disable completion in the prompt buffer
- call assert_false( pumvisible() )
- call feedkeys( "\<CR>" )
- endfunction
- " <Leader> is \ - this calls <Plug>(YCMFindSymbolInWorkspace)
- call FeedAndCheckMain( '\\w', funcref( 'PutQuery' ) )
- call WaitForAssert( { -> assert_equal( l, winlayout() ) } )
- call WaitForAssert( { -> assert_equal( original_win, winnr() ) } )
- call assert_equal( b, bufnr() )
- call assert_equal( [ 0, 5, 7, 0 ], getpos( '.' ) )
- call test_override( 'ALL', 0 )
- silent %bwipe!
- delfunct! PutQuery
- delfunct! CheckNoPopup
- endfunction
- " function! Test_MultipleFileTypes()
- " call youcompleteme#test#setup#OpenFile(
- " \ '/test/testdata/cpp/finder_test.cc', {} )
- " split
- " call youcompleteme#test#setup#OpenFile( '/test/testdata/python/doc.py', {} )
- " wincmd w
- "
- " let original_win = winnr()
- " let b = bufnr()
- " let l = winlayout()
- "
- " function! PutQuery( ... )
- " " Wait for the current buffer to be a prompt buffer
- " call WaitForAssert( { -> assert_equal( 'prompt', &buftype ) } )
- " call WaitForAssert( { -> assert_equal( 'i', mode() ) } )
- "
- " let popup_id = youcompleteme#finder#GetState().id
- " call WaitForAssert( { ->
- " \ assert_equal( ' [X] Search for symbol: thiswillnotmatchanything ',
- " \ popup_getoptions( popup_id ).title ) },
- " \ 10000 )
- "
- "
- " call WaitForAssert( { -> assert_true(
- " \ youcompleteme#finder#GetState().id != -1 ) } )
- "
- " let id = youcompleteme#finder#GetState().id
- " call assert_equal( 'No results', getbufline( winbufnr( id ), '$' )[ 0 ] )
- " call FeedAndCheckAgain( "\<C-u>xthisisathing", funcref( 'CheckCpp' ) )
- " endfunction
- "
- " function! CheckCpp( ... )
- " let popup_id = youcompleteme#finder#GetState().id
- "
- " " Python can be _really_ slow
- " call WaitForAssert( { ->
- " \ assert_equal( ' [X] Search for symbol: xthisisathing ',
- " \ popup_getoptions( popup_id ).title ) },
- " \ 10000 )
- "
- " call WaitForAssert( { -> assert_equal( 1, line( '$', popup_id ) ) } )
- " call assert_equal( 0, youcompleteme#finder#GetState().selected )
- " call assert_equal( 'x_this_is_a_thing',
- " \ youcompleteme#finder#GetState().results[
- " \ youcompleteme#finder#GetState().selected ].extra_data.name )
- "
- " " Wait for the current buffer to be a prompt buffer
- " call WaitForAssert( { -> assert_equal( 'prompt', &buftype ) } )
- " call WaitForAssert( { -> assert_equal( 'i', mode() ) } )
- "
- " call FeedAndCheckAgain(
- " \ "\<C-u>Really_Long_Method",
- " \ funcref( 'CheckPython' ) )
- " endfunction
- "
- " function! CheckPython( ... )
- " let popup_id = youcompleteme#finder#GetState().id
- "
- " " Python can be _really_ slow
- " call WaitForAssert( { ->
- " \ assert_equal( ' [X] Search for symbol: Really_Long_Method ',
- " \ popup_getoptions( popup_id ).title ) },
- " \ 20000 )
- "
- " call WaitForAssert( { -> assert_equal( 2, line( '$', popup_id ) ) },
- " \ 20000 )
- " call WaitForAssert( { ->
- " \ assert_equal( 0, youcompleteme#finder#GetState().selected )
- " \ },
- " \ 20000 )
- " call assert_equal( 'def Really_Long_Method',
- " \ youcompleteme#finder#GetState().results[
- " \ youcompleteme#finder#GetState().selected ].description )
- "
- " " Toggle single-filetype mode
- " call FeedAndCheckAgain( "\<C-f>", funcref( 'CheckCppAgain' ) )
- " endfunction
- "
- " function! CheckCppAgain( ... )
- " let popup_id = youcompleteme#finder#GetState().id
- "
- " " Python can be _really_ slow
- " call WaitForAssert( { ->
- " \ assert_equal( ' [X] Search for symbol: Really_Long_Method ',
- " \ popup_getoptions( popup_id ).title ) },
- " \ 20000 )
- "
- " call WaitForAssert( { -> assert_true(
- " \ youcompleteme#finder#GetState().id != -1 ) } )
- "
- " let id = youcompleteme#finder#GetState().id
- " call assert_equal( 'No results', getbufline( winbufnr( id ), '$' )[ 0 ] )
- "
- " " And back to multiple filetypes
- " call FeedAndCheckAgain( "\<C-f>", funcref( 'CheckPythonAgain' ) )
- " endfunction
- "
- " function! CheckPythonAgain( ... )
- " let popup_id = youcompleteme#finder#GetState().id
- "
- " " Python can be _really_ slow
- " call WaitForAssert( { ->
- " \ assert_equal( ' [X] Search for symbol: Really_Long_Method ',
- " \ popup_getoptions( popup_id ).title ) },
- " \ 20000 )
- "
- " call WaitForAssert( { -> assert_equal( 2, line( '$', popup_id ) ) },
- " \ 20000 )
- " call assert_equal( 0, youcompleteme#finder#GetState().selected )
- " call assert_equal( 'def Really_Long_Method',
- " \ youcompleteme#finder#GetState().results[
- " \ youcompleteme#finder#GetState().selected ].description )
- "
- " call feedkeys( "\<C-c>" )
- " endfunction
- "
- "
- " " <Leader> is \ - this calls <Plug>(YCMFindSymbolInWorkspace)
- " call FeedAndCheckMain( '\\wthiswillnotmatchanything', funcref( 'PutQuery' ) )
- "
- " call WaitForAssert( { -> assert_equal( l, winlayout() ) } )
- " call WaitForAssert( { -> assert_equal( original_win, winnr() ) } )
- " call assert_equal( b, bufnr() )
- " endfunction
- "
- " function! Test_MultipleFileTypes_CurrentNotSemantic()
- " call youcompleteme#test#setup#OpenFile(
- " \ '/test/testdata/cpp/finder_test.cc', {} )
- " split
- " call youcompleteme#test#setup#OpenFile( '/test/testdata/python/doc.py', {} )
- " split
- " " Current buffer is a ycm_nofiletype, which ycm is blacklisted in
- " " but otherwise we behave the same as before with the exception that we open
- " " the python file in the current window
- "
- " let original_win = winnr()
- " let b = bufnr()
- " let l = winlayout()
- "
- " function! PutQuery( ... )
- " " Wait for the current buffer to be a prompt buffer
- " call WaitForAssert( { -> assert_equal( 'prompt', &buftype ) } )
- " call WaitForAssert( { -> assert_equal( 'i', mode() ) } )
- "
- " call WaitForAssert( { -> assert_true(
- " \ youcompleteme#finder#GetState().id != -1 ) } )
- "
- " let popup_id = youcompleteme#finder#GetState().id
- " call WaitForAssert( { ->
- " \ assert_equal( ' [X] Search for symbol: thiswillnotmatchanything ',
- " \ popup_getoptions( popup_id ).title ) },
- " \ 10000 )
- "
- "
- " let id = youcompleteme#finder#GetState().id
- " call assert_equal( 'No results', getbufline( winbufnr( id ), '$' )[ 0 ] )
- " call FeedAndCheckAgain( "\<C-u>xthisisathing", funcref( 'CheckCpp' ) )
- " endfunction
- "
- " function! CheckCpp( ... )
- " let popup_id = youcompleteme#finder#GetState().id
- "
- " " Python can be _really_ slow
- " call WaitForAssert( { ->
- " \ assert_equal( ' [X] Search for symbol: xthisisathing ',
- " \ popup_getoptions( popup_id ).title ) },
- " \ 10000 )
- "
- " call WaitForAssert( { -> assert_equal( 1, line( '$', popup_id ) ) } )
- " call assert_equal( 0, youcompleteme#finder#GetState().selected )
- " call assert_equal( 'x_this_is_a_thing',
- " \ youcompleteme#finder#GetState().results[
- " \ youcompleteme#finder#GetState().selected ].extra_data.name )
- "
- " " Wait for the current buffer to be a prompt buffer
- " call WaitForAssert( { -> assert_equal( 'prompt', &buftype ) } )
- " call WaitForAssert( { -> assert_equal( 'i', mode() ) } )
- "
- " call FeedAndCheckAgain(
- " \ "\<C-u>Really_Long_Method",
- " \ funcref( 'CheckPython' ) )
- " endfunction
- "
- " function! CheckPython( ... )
- " let popup_id = youcompleteme#finder#GetState().id
- "
- " " Python can be _really_ slow
- " call WaitForAssert( { ->
- " \ assert_equal( ' [X] Search for symbol: Really_Long_Method ',
- " \ popup_getoptions( popup_id ).title ) },
- " \ 10000 )
- "
- " call WaitForAssert( { -> assert_equal( 2, line( '$', popup_id ) ) },
- " \ 10000 )
- " call assert_equal( 0, youcompleteme#finder#GetState().selected )
- " call assert_equal( 'def Really_Long_Method',
- " \ youcompleteme#finder#GetState().results[
- " \ youcompleteme#finder#GetState().selected ].description )
- "
- " call feedkeys( "\<CR>")
- " endfunction
- "
- "
- " " <Leader> is \ - this calls <Plug>(YCMFindSymbolInWorkspace)
- " call FeedAndCheckMain( '\\wthiswillnotmatchanything', funcref( 'PutQuery' ) )
- "
- " " We pop up a notification with some text in it
- " if exists( '*popup_list' )
- " call assert_equal( 1, len( popup_list() ) )
- " endif
- "
- " " Old vim doesn't have popup_list, so hit-test the top-right corner which is
- " " where we pup the popu
- " let notification_id = popup_locate( 1, &columns - 1 )
- " call assert_equal( [ 'Added 2 entries to quickfix list.' ],
- " \ getbufline( winbufnr( notification_id ), 1, '$' ) )
- " " Wait for the notification to clear
- " call WaitForAssert(
- " \ { -> assert_equal( {}, popup_getpos( notification_id ) ) },
- " \ 10000 )
- "
- " call WaitForAssert( { -> assert_equal( l, winlayout() ) } )
- " call WaitForAssert( { -> assert_equal( original_win, winnr() ) } )
- " call assert_equal( bufnr( 'doc.py' ), bufnr() )
- " call assert_equal( [ 0, 16, 5, 0 ], getpos( '.' ) )
- " endfunction
- "
- " function! Test_WorkspaceSymbol_NormalModeChange()
- " call youcompleteme#test#setup#OpenFile(
- " \ '/test/testdata/cpp/finder_test.cc', {} )
- "
- " let original_win = winnr()
- " let b = bufnr()
- " let l = winlayout()
- "
- " let popup_id = -1
- "
- " function! PutQuery( ... )
- " " Wait for the current buffer to be a prompt buffer
- " call WaitForAssert( { -> assert_equal( 'prompt', &buftype ) } )
- " call WaitForAssert( { -> assert_equal( 'i', mode() ) } )
- "
- " call WaitForAssert( { -> assert_true(
- " \ youcompleteme#finder#GetState().id != -1 ) } )
- "
- " let popup_id = youcompleteme#finder#GetState().id
- " call WaitForAssert( { ->
- " \ assert_equal( ' [X] Search for symbol: thiswillnotmatchanything ',
- " \ popup_getoptions( popup_id ).title ) },
- " \ 10000 )
- "
- " let id = youcompleteme#finder#GetState().id
- " call assert_equal( 'No results', getbufline( winbufnr( id ), '$' )[ 0 ] )
- " call FeedAndCheckAgain( "\<C-u>xthisisathing", funcref( 'ChangeQuery' ) )
- " endfunction
- "
- " function ChangeQuery( ... )
- " let id = youcompleteme#finder#GetState().id
- "
- " call WaitForAssert( { ->
- " \ assert_equal( ' [X] Search for symbol: xthisisathing ',
- " \ popup_getoptions( id ).title ) },
- " \ 10000 )
- "
- " call WaitForAssert( { -> assert_equal( 1, line( '$', id ) ) } )
- " call assert_equal( 0, youcompleteme#finder#GetState().selected )
- " call assert_equal( 'x_this_is_a_thing',
- " \ youcompleteme#finder#GetState().results[
- " \ youcompleteme#finder#GetState().selected ].extra_data.name )
- "
- " " Wait for the current buffer to be a prompt buffer
- " call WaitForAssert( { -> assert_equal( 'prompt', &buftype ) } )
- " call WaitForAssert( { -> assert_equal( 'i', mode() ) } )
- "
- " call FeedAndCheckAgain( "\<Esc>bcwthatisathing",
- " \ funcref( 'SelectNewItem' ) )
- " endfunction
- "
- " function SelectNewItem( ... )
- " let id = youcompleteme#finder#GetState().id
- "
- " call WaitForAssert( { ->
- " \ assert_equal( ' [X] Search for symbol: thatisathing ',
- " \ popup_getoptions( id ).title ) },
- " \ 10000 )
- "
- " call WaitForAssert( { -> assert_equal( 1, line( '$', id ) ) } )
- " call assert_equal( 0, youcompleteme#finder#GetState().selected )
- " call assert_equal( 'x_that_is_a_thing',
- " \ youcompleteme#finder#GetState().results[
- " \ youcompleteme#finder#GetState().selected ].extra_data.name )
- "
- " call feedkeys( "\<CR>" )
- " endfunction
- "
- " " <Leader> is \ - this calls <Plug>(YCMFindSymbolInWorkspace)
- " call FeedAndCheckMain( '\\wthiswillnotmatchanything', funcref( 'PutQuery' ) )
- "
- " call WaitForAssert( { -> assert_equal( l, winlayout() ) } )
- " call WaitForAssert( { -> assert_equal( original_win, winnr() ) } )
- " call assert_equal( b, bufnr() )
- " call assert_equal( [ 0, 5, 28, 0 ], getpos( '.' ) )
- "
- " delfunct PutQuery
- " delfunct SelectNewItem
- " delfunct ChangeQuery
- " silent %bwipe!
- " endfunction
|