function! SetUp() let g:ycm_use_clangd = 1 let g:ycm_enable_semantic_highlighting = 1 call youcompleteme#test#setup#SetUp() nmap w (YCMFindSymbolInWorkspace) nmap d (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( "\" ) endfunction " is \ - this calls (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( "\" ) endfunction " is \ - this calls (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( "\" ) endfunction " is \ - this calls (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( "\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( "\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( "\", '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( "\", '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( "\", '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( "\", '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( "\", '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( "\", '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( "\", '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( "\", '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( "\", '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( "\", '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( "\", '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( "\", '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( "\", '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( "\", '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( "\" ) endfunction " is \ - this calls (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( "\w" ) endfunction " is \ - this calls (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( "\" ) endfunction " is \ - this calls (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( "\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( " \ "\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( "\", 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( "\", 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( "\" ) " endfunction " " " " is \ - this calls (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( "\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( " \ "\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( "\") " endfunction " " " " is \ - this calls (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( "\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( "\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( "\" ) " endfunction " " " is \ - this calls (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