]> granicus.if.org Git - vim/commitdiff
patch 7.4.2095 v7.4.2095
authorBram Moolenaar <Bram@vim.org>
Sat, 23 Jul 2016 13:35:35 +0000 (15:35 +0200)
committerBram Moolenaar <Bram@vim.org>
Sat, 23 Jul 2016 13:35:35 +0000 (15:35 +0200)
Problem:    Man test fails when run with the GUI.
Solution:   Adjust for different behavior of GUI.  Add assert_inrange().

runtime/doc/eval.txt
src/eval.c
src/evalfunc.c
src/proto/eval.pro
src/testdir/test_assert.vim
src/testdir/test_man.vim
src/version.c

index fa3c756a7d1bd9a519d510519aa52bda7bcd5b53..11cd8bbafc39866dfc6235bf04db3a7a3a218eae 100644 (file)
@@ -1,4 +1,4 @@
-*eval.txt*     For Vim version 7.4.  Last change: 2016 Jul 22
+*eval.txt*     For Vim version 7.4.  Last change: 2016 Jul 23
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -1947,6 +1947,8 @@ assert_equal({exp}, {act} [, {msg}])     none  assert {exp} is equal to {act}
 assert_exception({error} [, {msg}])      none  assert {error} is in v:exception
 assert_fails({cmd} [, {error}])          none  assert {cmd} fails
 assert_false({actual} [, {msg}])         none  assert {actual} is false
+assert_inrange({lower}, {upper}, {actual} [, {msg}])
+                               none    assert {actual} is inside the range
 assert_match({pat}, {text} [, {msg}])    none  assert {pat} matches {text}
 assert_notequal({exp}, {act} [, {msg}])  none  assert {exp} is not equal {act}
 assert_notmatch({pat}, {text} [, {msg}]) none  assert {pat} not matches {text}
@@ -2478,8 +2480,16 @@ assert_false({actual} [, {msg}])                         *assert_false()*
                |v:errors|, like with |assert_equal()|.
                A value is false when it is zero. When {actual} is not a
                number the assert fails.
-               When {msg} is omitted an error in the form "Expected False but
-               got {actual}" is produced.
+               When {msg} is omitted an error in the form
+               "Expected False but got {actual}" is produced.
+
+assert_inrange({lower}, {upper}, {actual} [, {msg}])    *assert_inrange()*
+               This asserts number values.  When {actual}  is lower than
+               {lower} or higher than {upper} an error message is added to
+               |v:errors|.
+               When {msg} is omitted an error in the form
+               "Expected range {lower} - {upper}, but got {actual}" is
+               produced.
 
                                                                *assert_match()*
 assert_match({pattern}, {actual} [, {msg}])
@@ -2494,8 +2504,8 @@ assert_match({pattern}, {actual} [, {msg}])
                Use "^" and "$" to match with the start and end of the text.
                Use both to match the whole text.
 
-               When {msg} is omitted an error in the form "Pattern {pattern}
-               does not match {actual}" is produced.
+               When {msg} is omitted an error in the form
+               "Pattern {pattern} does not match {actual}" is produced.
                Example: >
        assert_match('^f.*o$', 'foobar')
 <              Will result in a string to be added to |v:errors|:
index 53c188baeffc813142bedd8cdd21359afa8c2688..3bc2afdb1f85dca4cd993e704c1694e05a0668b5 100644 (file)
@@ -8992,6 +8992,39 @@ assert_match_common(typval_T *argvars, assert_type_T atype)
     }
 }
 
+    void
+assert_inrange(typval_T *argvars)
+{
+    garray_T   ga;
+    int                error = FALSE;
+    varnumber_T        lower = get_tv_number_chk(&argvars[0], &error);
+    varnumber_T        upper = get_tv_number_chk(&argvars[1], &error);
+    varnumber_T        actual = get_tv_number_chk(&argvars[2], &error);
+    char_u     *tofree;
+    char       msg[200];
+    char_u     numbuf[NUMBUFLEN];
+
+    if (error)
+       return;
+    if (actual < lower || actual > upper)
+    {
+       prepare_assert_error(&ga);
+       if (argvars[3].v_type != VAR_UNKNOWN)
+       {
+           ga_concat(&ga, tv2string(&argvars[3], &tofree, numbuf, 0));
+           vim_free(tofree);
+       }
+       else
+       {
+           vim_snprintf(msg, 200, "Expected range %ld - %ld, but got %ld",
+                                      (long)lower, (long)upper, (long)actual);
+           ga_concat(&ga, (char_u *)msg);
+       }
+       assert_error(&ga);
+       ga_clear(&ga);
+    }
+}
+
 /*
  * Common for assert_true() and assert_false().
  */
index 61dce74fd3d4d261b528e0c61e8c4a04ccf5eb91..ec347c11246a3bb45b2677ae4d157dcac4c0583c 100644 (file)
@@ -48,6 +48,7 @@ static void f_assert_equal(typval_T *argvars, typval_T *rettv);
 static void f_assert_exception(typval_T *argvars, typval_T *rettv);
 static void f_assert_fails(typval_T *argvars, typval_T *rettv);
 static void f_assert_false(typval_T *argvars, typval_T *rettv);
+static void f_assert_inrange(typval_T *argvars, typval_T *rettv);
 static void f_assert_match(typval_T *argvars, typval_T *rettv);
 static void f_assert_notequal(typval_T *argvars, typval_T *rettv);
 static void f_assert_notmatch(typval_T *argvars, typval_T *rettv);
@@ -460,6 +461,7 @@ static struct fst
     {"assert_exception", 1, 2, f_assert_exception},
     {"assert_fails",   1, 2, f_assert_fails},
     {"assert_false",   1, 2, f_assert_false},
+    {"assert_inrange", 2, 3, f_assert_inrange},
     {"assert_match",   2, 3, f_assert_match},
     {"assert_notequal",        2, 3, f_assert_notequal},
     {"assert_notmatch",        2, 3, f_assert_notmatch},
@@ -1277,6 +1279,15 @@ f_assert_false(typval_T *argvars, typval_T *rettv UNUSED)
     assert_bool(argvars, FALSE);
 }
 
+/*
+ * "assert_inrange(lower, upper[, msg])" function
+ */
+    static void
+f_assert_inrange(typval_T *argvars, typval_T *rettv UNUSED)
+{
+    assert_inrange(argvars);
+}
+
 /*
  * "assert_match(pattern, actual[, msg])" function
  */
index e9ec97df4fe2621701399777756e488ca1a2ad7b..5d9b35c6255b6e45fcffca4a7a479119c66f3568 100644 (file)
@@ -121,6 +121,7 @@ void prepare_assert_error(garray_T *gap);
 void assert_error(garray_T *gap);
 void assert_equal_common(typval_T *argvars, assert_type_T atype);
 void assert_match_common(typval_T *argvars, assert_type_T atype);
+void assert_inrange(typval_T *argvars);
 void assert_bool(typval_T *argvars, int isTrue);
 void assert_exception(typval_T *argvars);
 void assert_fails(typval_T *argvars);
index d7fb6385f962cb101b0247aa487f3be76d3719d8..0ab664ad370547fae19f204b3fd875f226d7721a 100644 (file)
@@ -105,6 +105,19 @@ func Test_assert_fail_fails()
   call remove(v:errors, 0)
 endfunc
 
+func Test_assert_inrange()
+  call assert_inrange(7, 7, 7)
+  call assert_inrange(5, 7, 5)
+  call assert_inrange(5, 7, 6)
+  call assert_inrange(5, 7, 7)
+
+  call assert_inrange(5, 7, 4)
+  call assert_match("Expected range 5 - 7, but got 4", v:errors[0])
+  call remove(v:errors, 0)
+  call assert_inrange(5, 7, 8)
+  call assert_match("Expected range 5 - 7, but got 8", v:errors[0])
+  call remove(v:errors, 0)
+endfunc
 
 func Test_user_is_happy()
   smile
index f2c48a40592dc4b9c8a721caa679f82b2322ba6c..1485ec3219e9a5b45f815c31a8e91c5bc9030879 100644 (file)
@@ -1,19 +1,20 @@
 runtime ftplugin/man.vim
 
 function Test_g_ft_man_open_mode()
-  let l:w = winwidth(1)
   vnew
   let l:h = winheight(1)
   q
+  let l:w = winwidth(1)
 
   " split horizontally
   let wincnt = winnr('$')
-  Man 'vim'
+  Man vim
   if wincnt == winnr('$')
     " Vim manual page cannot be found.
     return
   endif
-  call assert_equal(l:w, winwidth(1))
+
+  call assert_inrange(l:w - 2, l:w + 2, winwidth(1))
   call assert_true(l:h > winheight(1))
   call assert_equal(1, tabpagenr('$'))
   call assert_equal(1, tabpagenr())
@@ -21,8 +22,8 @@ function Test_g_ft_man_open_mode()
 
   " split horizontally
   let g:ft_man_open_mode = "horz"
-  Man 'vim'
-  call assert_equal(l:w, winwidth(1))
+  Man vim
+  call assert_inrange(l:w - 2, l:w + 2, winwidth(1))
   call assert_true(l:h > winheight(1))
   call assert_equal(1, tabpagenr('$'))
   call assert_equal(1, tabpagenr())
@@ -30,7 +31,7 @@ function Test_g_ft_man_open_mode()
 
   " split vertically
   let g:ft_man_open_mode = "vert"
-  Man 'vim'
+  Man vim
   call assert_true(l:w > winwidth(1))
   call assert_equal(l:h, winheight(1))
   call assert_equal(1, tabpagenr('$'))
@@ -39,9 +40,9 @@ function Test_g_ft_man_open_mode()
 
   " separate tab
   let g:ft_man_open_mode = "tab"
-  Man 'vim'
-  call assert_equal(l:w, winwidth(1))
-  call assert_equal(l:h, winheight(1))
+  Man vim
+  call assert_inrange(l:w - 2, l:w + 2, winwidth(1))
+  call assert_inrange(l:h - 1, l:h + 1, winheight(1))
   call assert_equal(2, tabpagenr('$'))
   call assert_equal(2, tabpagenr())
   q
@@ -49,7 +50,7 @@ endfunction
 
 function Test_nomodifiable()
   let wincnt = winnr('$')
-  Man 'vim'
+  Man vim
   if wincnt == winnr('$')
     " Vim manual page cannot be found.
     return
index 0110c1d28b54bff3de6c12e326b6238d50e32a93..757590cb5686db7366cad30f1bd63bd1ba85ed1a 100644 (file)
@@ -758,6 +758,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    2095,
 /**/
     2094,
 /**/