diff src/testdir/test_regex_char_classes.vim @ 13146:d9a94be389b5 v8.0.1447

patch 8.0.1447: still too many old style tests commit https://github.com/vim/vim/commit/cada78975eebc47f9b12de1a471639b5afd9ad2f Author: Bram Moolenaar <Bram@vim.org> Date: Wed Jan 31 19:30:24 2018 +0100 patch 8.0.1447: still too many old style tests Problem: Still too many old style tests. Solution: Turn a few tests into new style. (Yegappan Lakshmanan, closes #2509)
author Christian Brabandt <cb@256bit.org>
date Wed, 31 Jan 2018 19:45:05 +0100
parents 140d51d5b5c3
children 2dcaa860e3fc
line wrap: on
line diff
--- a/src/testdir/test_regex_char_classes.vim
+++ b/src/testdir/test_regex_char_classes.vim
@@ -1,5 +1,11 @@
 " Tests for regexp with backslash and other special characters inside []
 " Also test backslash for hex/octal numbered character.
+"
+if !has('multi_byte')
+  finish
+endif
+
+scriptencoding utf-8
 
 function RunSTest(value, calls, expected)
   new
@@ -56,3 +62,237 @@ function Test_s_search()
   call RunSTest(" xyz", "s/~/bcd/", " bcd")
   call RunSTest(" bcdbcdbcd", "s/~\\+/BB/", " BB")
 endfunction
+
+" Test character classes in regexp using regexpengine 0, 1, 2.
+func Test_regex_char_classes()
+  new
+  let save_enc = &encoding
+  set encoding=utf-8
+
+  let input = "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009bΡ记娱"
+
+  " Format is [cmd_to_run, expected_output]
+  let tests = [
+    \ [':s/\%#=0\d//g',
+    \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009bΡ记娱"],
+    \ [':s/\%#=1\d//g',
+    \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009bΡ记娱"],
+    \ [':s/\%#=2\d//g',
+    \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009bΡ记娱"],
+    \ [':s/\%#=0[0-9]//g',
+    \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009bΡ记娱"],
+    \ [':s/\%#=1[0-9]//g',
+    \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009bΡ记娱"],
+    \ [':s/\%#=2[0-9]//g',
+    \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009bΡ记娱"],
+    \ [':s/\%#=0\D//g',
+    \ "0123456789"],
+    \ [':s/\%#=1\D//g',
+    \ "0123456789"],
+    \ [':s/\%#=2\D//g',
+    \ "0123456789"],
+    \ [':s/\%#=0[^0-9]//g',
+    \ "0123456789"],
+    \ [':s/\%#=1[^0-9]//g',
+    \ "0123456789"],
+    \ [':s/\%#=2[^0-9]//g',
+    \ "0123456789"],
+    \ [':s/\%#=0\o//g',
+    \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./89:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009bΡ记娱"],
+    \ [':s/\%#=1\o//g',
+    \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./89:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009bΡ记娱"],
+    \ [':s/\%#=2\o//g',
+    \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./89:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009bΡ记娱"],
+    \ [':s/\%#=0[0-7]//g',
+    \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./89:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009bΡ记娱"],
+    \ [':s/\%#=1[0-7]//g',
+    \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./89:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009bΡ记娱"],
+    \ [':s/\%#=2[0-7]//g',
+    \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./89:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009bΡ记娱"],
+    \ [':s/\%#=0\O//g',
+    \ "01234567"],
+    \ [':s/\%#=1\O//g',
+    \ "01234567"],
+    \ [':s/\%#=2\O//g',
+    \ "01234567"],
+    \ [':s/\%#=0[^0-7]//g',
+    \ "01234567"],
+    \ [':s/\%#=1[^0-7]//g',
+    \ "01234567"],
+    \ [':s/\%#=2[^0-7]//g',
+    \ "01234567"],
+    \ [':s/\%#=0\x//g',
+    \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./:;<=>?@GHIXYZ[\]^_`ghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009bΡ记娱"],
+    \ [':s/\%#=1\x//g',
+    \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./:;<=>?@GHIXYZ[\]^_`ghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009bΡ记娱"],
+    \ [':s/\%#=2\x//g',
+    \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./:;<=>?@GHIXYZ[\]^_`ghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009bΡ记娱"],
+    \ [':s/\%#=0[0-9A-Fa-f]//g',
+    \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./:;<=>?@GHIXYZ[\]^_`ghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009bΡ记娱"],
+    \ [':s/\%#=1[0-9A-Fa-f]//g',
+    \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./:;<=>?@GHIXYZ[\]^_`ghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009bΡ记娱"],
+    \ [':s/\%#=2[0-9A-Fa-f]//g',
+    \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./:;<=>?@GHIXYZ[\]^_`ghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009bΡ记娱"],
+    \ [':s/\%#=0\X//g',
+    \ "0123456789ABCDEFabcdef"],
+    \ [':s/\%#=1\X//g',
+    \ "0123456789ABCDEFabcdef"],
+    \ [':s/\%#=2\X//g',
+    \ "0123456789ABCDEFabcdef"],
+    \ [':s/\%#=0[^0-9A-Fa-f]//g',
+    \ "0123456789ABCDEFabcdef"],
+    \ [':s/\%#=1[^0-9A-Fa-f]//g',
+    \ "0123456789ABCDEFabcdef"],
+    \ [':s/\%#=2[^0-9A-Fa-f]//g',
+    \ "0123456789ABCDEFabcdef"],
+    \ [':s/\%#=0\w//g',
+    \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./:;<=>?@[\]^`{|}~\<C-?>\u0080\u0082\u0090\u009bΡ记娱"],
+    \ [':s/\%#=1\w//g',
+    \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./:;<=>?@[\]^`{|}~\<C-?>\u0080\u0082\u0090\u009bΡ记娱"],
+    \ [':s/\%#=2\w//g',
+    \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./:;<=>?@[\]^`{|}~\<C-?>\u0080\u0082\u0090\u009bΡ记娱"],
+    \ [':s/\%#=0[0-9A-Za-z_]//g',
+    \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./:;<=>?@[\]^`{|}~\<C-?>\u0080\u0082\u0090\u009bΡ记娱"],
+    \ [':s/\%#=1[0-9A-Za-z_]//g',
+    \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./:;<=>?@[\]^`{|}~\<C-?>\u0080\u0082\u0090\u009bΡ记娱"],
+    \ [':s/\%#=2[0-9A-Za-z_]//g',
+    \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./:;<=>?@[\]^`{|}~\<C-?>\u0080\u0082\u0090\u009bΡ记娱"],
+    \ [':s/\%#=0\W//g',
+    \ "0123456789ABCDEFGHIXYZ_abcdefghiwxyz"],
+    \ [':s/\%#=1\W//g',
+    \ "0123456789ABCDEFGHIXYZ_abcdefghiwxyz"],
+    \ [':s/\%#=2\W//g',
+    \ "0123456789ABCDEFGHIXYZ_abcdefghiwxyz"],
+    \ [':s/\%#=0[^0-9A-Za-z_]//g',
+    \ "0123456789ABCDEFGHIXYZ_abcdefghiwxyz"],
+    \ [':s/\%#=1[^0-9A-Za-z_]//g',
+    \ "0123456789ABCDEFGHIXYZ_abcdefghiwxyz"],
+    \ [':s/\%#=2[^0-9A-Za-z_]//g',
+    \ "0123456789ABCDEFGHIXYZ_abcdefghiwxyz"],
+    \ [':s/\%#=0\h//g',
+    \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@[\]^`{|}~\<C-?>\u0080\u0082\u0090\u009bΡ记娱"],
+    \ [':s/\%#=1\h//g',
+    \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@[\]^`{|}~\<C-?>\u0080\u0082\u0090\u009bΡ记娱"],
+    \ [':s/\%#=2\h//g',
+    \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@[\]^`{|}~\<C-?>\u0080\u0082\u0090\u009bΡ记娱"],
+    \ [':s/\%#=0[A-Za-z_]//g',
+    \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@[\]^`{|}~\<C-?>\u0080\u0082\u0090\u009bΡ记娱"],
+    \ [':s/\%#=1[A-Za-z_]//g',
+    \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@[\]^`{|}~\<C-?>\u0080\u0082\u0090\u009bΡ记娱"],
+    \ [':s/\%#=2[A-Za-z_]//g',
+    \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@[\]^`{|}~\<C-?>\u0080\u0082\u0090\u009bΡ记娱"],
+    \ [':s/\%#=0\H//g',
+    \ "ABCDEFGHIXYZ_abcdefghiwxyz"],
+    \ [':s/\%#=1\H//g',
+    \ "ABCDEFGHIXYZ_abcdefghiwxyz"],
+    \ [':s/\%#=2\H//g',
+    \ "ABCDEFGHIXYZ_abcdefghiwxyz"],
+    \ [':s/\%#=0[^A-Za-z_]//g',
+    \ "ABCDEFGHIXYZ_abcdefghiwxyz"],
+    \ [':s/\%#=1[^A-Za-z_]//g',
+    \ "ABCDEFGHIXYZ_abcdefghiwxyz"],
+    \ [':s/\%#=2[^A-Za-z_]//g',
+    \ "ABCDEFGHIXYZ_abcdefghiwxyz"],
+    \ [':s/\%#=0\a//g',
+    \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@[\]^_`{|}~\<C-?>\u0080\u0082\u0090\u009bΡ记娱"],
+    \ [':s/\%#=1\a//g',
+    \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@[\]^_`{|}~\<C-?>\u0080\u0082\u0090\u009bΡ记娱"],
+    \ [':s/\%#=2\a//g',
+    \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@[\]^_`{|}~\<C-?>\u0080\u0082\u0090\u009bΡ记娱"],
+    \ [':s/\%#=0[A-Za-z]//g',
+    \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@[\]^_`{|}~\<C-?>\u0080\u0082\u0090\u009bΡ记娱"],
+    \ [':s/\%#=1[A-Za-z]//g',
+    \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@[\]^_`{|}~\<C-?>\u0080\u0082\u0090\u009bΡ记娱"],
+    \ [':s/\%#=2[A-Za-z]//g',
+    \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@[\]^_`{|}~\<C-?>\u0080\u0082\u0090\u009bΡ记娱"],
+    \ [':s/\%#=0\A//g',
+    \ "ABCDEFGHIXYZabcdefghiwxyz"],
+    \ [':s/\%#=1\A//g',
+    \ "ABCDEFGHIXYZabcdefghiwxyz"],
+    \ [':s/\%#=2\A//g',
+    \ "ABCDEFGHIXYZabcdefghiwxyz"],
+    \ [':s/\%#=0[^A-Za-z]//g',
+    \ "ABCDEFGHIXYZabcdefghiwxyz"],
+    \ [':s/\%#=1[^A-Za-z]//g',
+    \ "ABCDEFGHIXYZabcdefghiwxyz"],
+    \ [':s/\%#=2[^A-Za-z]//g',
+    \ "ABCDEFGHIXYZabcdefghiwxyz"],
+    \ [':s/\%#=0\l//g',
+    \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`{|}~\<C-?>\u0080\u0082\u0090\u009bΡ记娱"],
+    \ [':s/\%#=1\l//g',
+    \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`{|}~\<C-?>\u0080\u0082\u0090\u009bΡ记娱"],
+    \ [':s/\%#=2\l//g',
+    \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`{|}~\<C-?>\u0080\u0082\u0090\u009bΡ记娱"],
+    \ [':s/\%#=0[a-z]//g',
+    \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`{|}~\<C-?>\u0080\u0082\u0090\u009bΡ记娱"],
+    \ [':s/\%#=1[a-z]//g',
+    \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`{|}~\<C-?>\u0080\u0082\u0090\u009bΡ记娱"],
+    \ [':s/\%#=2[a-z]//g',
+    \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`{|}~\<C-?>\u0080\u0082\u0090\u009bΡ记娱"],
+    \ [':s/\%#=0\L//g',
+    \ "abcdefghiwxyz"],
+    \ [':s/\%#=1\L//g',
+    \ "abcdefghiwxyz"],
+    \ [':s/\%#=2\L//g',
+    \ "abcdefghiwxyz"],
+    \ [':s/\%#=0[^a-z]//g',
+    \ "abcdefghiwxyz"],
+    \ [':s/\%#=1[^a-z]//g',
+    \ "abcdefghiwxyz"],
+    \ [':s/\%#=2[^a-z]//g',
+    \ "abcdefghiwxyz"],
+    \ [':s/\%#=0\u//g',
+    \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009bΡ记娱"],
+    \ [':s/\%#=1\u//g',
+    \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009bΡ记娱"],
+    \ [':s/\%#=2\u//g',
+    \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009bΡ记娱"],
+    \ [':s/\%#=0[A-Z]//g',
+    \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009bΡ记娱"],
+    \ [':s/\%#=1[A-Z]//g',
+    \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009bΡ记娱"],
+    \ [':s/\%#=2[A-Z]//g',
+    \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009bΡ记娱"],
+    \ [':s/\%#=0\U//g',
+    \ "ABCDEFGHIXYZ"],
+    \ [':s/\%#=1\U//g',
+    \ "ABCDEFGHIXYZ"],
+    \ [':s/\%#=2\U//g',
+    \ "ABCDEFGHIXYZ"],
+    \ [':s/\%#=0[^A-Z]//g',
+    \ "ABCDEFGHIXYZ"],
+    \ [':s/\%#=1[^A-Z]//g',
+    \ "ABCDEFGHIXYZ"],
+    \ [':s/\%#=2[^A-Z]//g',
+    \ "ABCDEFGHIXYZ"],
+    \ [':s/\%#=0\%' . line('.') . 'l^\t...//g',
+    \ "!\"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009bΡ记娱"],
+    \ [':s/\%#=1\%' . line('.') . 'l^\t...//g',
+    \ "!\"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009bΡ记娱"],
+    \ [':s/\%#=2\%' . line('.') . 'l^\t...//g',
+    \ "!\"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009bΡ记娱"],
+    \ [':s/\%#=0[0-z]//g',
+    \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./{|}~\<C-?>\u0080\u0082\u0090\u009bΡ记娱"],
+    \ [':s/\%#=1[0-z]//g',
+    \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./{|}~\<C-?>\u0080\u0082\u0090\u009bΡ记娱"],
+    \ [':s/\%#=2[0-z]//g',
+    \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./{|}~\<C-?>\u0080\u0082\u0090\u009bΡ记娱"],
+    \ [':s/\%#=0[^0-z]//g',
+    \ "0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz"],
+    \ [':s/\%#=1[^0-z]//g',
+    \ "0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz"],
+    \ [':s/\%#=2[^0-z]//g',
+    \ "0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz"]
+    \]
+
+  for [cmd, expected] in tests
+      call append(0, input)
+      call cursor(1, 1)
+      exe cmd
+      call assert_equal(expected, getline(1), cmd)
+  endfor
+
+  let &encoding = save_enc
+  enew!
+  close
+endfunc