# HG changeset patch # User Christian Brabandt # Date 1488717004 -3600 # Node ID 622ed5a4925f799cc86fa8f4212dca22aac42bf3 # Parent 9ceae23969d4b4e73f6309de6f214448e8eae84c patch 8.0.0414: balloon eval is not tested commit https://github.com/vim/vim/commit/d5841f28d4b041830af0f3314979f9b9093d1a77 Author: Bram Moolenaar Date: Sun Mar 5 13:27:25 2017 +0100 patch 8.0.0414: balloon eval is not tested Problem: Balloon eval is not tested. Solution: Add a few balloon tests. (Kazunobu Kuriyama) diff --git a/src/testdir/test_gui.vim b/src/testdir/test_gui.vim --- a/src/testdir/test_gui.vim +++ b/src/testdir/test_gui.vim @@ -22,6 +22,14 @@ func Test_1_set_secure() call assert_equal(1, has('gui_running')) endfunc +" As for non-GUI, a balloon_show() test was already added with patch 8.0.0401 +func Test_balloon_show() + if has('balloon_eval') + " This won't do anything but must not crash either. + call balloon_show('hi!') + endif +endfunc + func Test_getfontname_with_arg() let skipped = '' @@ -117,6 +125,129 @@ func Test_quoteplus() endif endfunc +func Test_set_balloondelay() + if !exists('+balloondelay') + return + endif + + let balloondelay_saved = &balloondelay + + " Check if the default value is identical to that described in the manual. + set balloondelay& + call assert_equal(600, &balloondelay) + + " Edge cases + + " XXX This fact should be hidden so that people won't be tempted to write + " plugin/TimeMachine.vim. TODO Add reasonable range checks to the source + " code. + set balloondelay=-1 + call assert_equal(-1, &balloondelay) + + " Though it's possible to interpret the zero delay to be 'as soon as + " possible' or even 'indefinite', its actual meaning depends on the GUI + " toolkit in use after all. + set balloondelay=0 + call assert_equal(0, &balloondelay) + + set balloondelay=1 + call assert_equal(1, &balloondelay) + + " Since p_bdelay is of type long currently, the upper bound can be + " impractically huge and machine-dependent. Practically, it's sufficient + " to check if balloondelay works with 0xffffffff (32 bits) for now. + set balloondelay=4294967295 + call assert_equal(4294967295, &balloondelay) + + let &balloondelay = balloondelay_saved +endfunc + +func Test_set_ballooneval() + if !exists('+ballooneval') + return + endif + + let ballooneval_saved = &ballooneval + + set ballooneval& + call assert_equal(0, &ballooneval) + + set ballooneval + call assert_notequal(0, &ballooneval) + + set noballooneval + call assert_equal(0, &ballooneval) + + let &ballooneval = ballooneval_saved +endfunc + +func Test_set_balloonexpr() + if !exists('+balloonexpr') + return + endif + + let balloonexpr_saved = &balloonexpr + + " Default value + set balloonexpr& + call assert_equal('', &balloonexpr) + + " User-defined function + new + func MyBalloonExpr() + return 'Cursor is at line ' . v:beval_lnum . + \', column ' . v:beval_col . + \ ' of file ' . bufname(v:beval_bufnr) . + \ ' on word "' . v:beval_text . '"' . + \ ' in window ' . v:beval_winid . ' (#' . v:beval_winnr . ')' + endfunc + setl balloonexpr=MyBalloonExpr() + setl ballooneval + call assert_equal('MyBalloonExpr()', &balloonexpr) + " TODO Read non-empty text, place the pointer at a character of a word, + " and check if the content of the balloon is the smae as what is expected. + " Also, check if textlock works as expected. + setl balloonexpr& + call assert_equal('', &balloonexpr) + delfunc MyBalloonExpr + bwipe! + + " Multiline support + if has('balloon_multiline') + " Multiline balloon using NL + new + func MyBalloonFuncForMultilineUsingNL() + return "Multiline\nSuppported\nBalloon\nusing NL" + endfunc + setl balloonexpr=MyBalloonFuncForMultilineUsingNL() + setl ballooneval + call assert_equal('MyBalloonFuncForMultilineUsingNL()', &balloonexpr) + " TODO Read non-empty text, place the pointer at a character of a word, + " and check if the content of the balloon is the smae as what is + " expected. Also, check if textlock works as expected. + setl balloonexpr& + delfunc MyBalloonFuncForMultilineUsingNL + bwipe! + + " Multiline balloon using List + new + func MyBalloonFuncForMultilineUsingList() + return [ 'Multiline', 'Suppported', 'Balloon', 'using List' ] + endfunc + setl balloonexpr=MyBalloonFuncForMultilineUsingList() + setl ballooneval + call assert_equal('MyBalloonFuncForMultilineUsingList()', &balloonexpr) + " TODO Read non-empty text, place the pointer at a character of a word, + " and check if the content of the balloon is the smae as what is + " expected. Also, check if textlock works as expected. + setl balloonexpr& + delfunc MyBalloonFuncForMultilineUsingList + bwipe! + endif + + let &balloonexpr = balloonexpr_saved +endfunc + func Test_set_guifont() let skipped = '' diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -765,6 +765,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 414, +/**/ 413, /**/ 412,