1292eff0cSBram Moolenaar" Tests for regexp with backslash and other special characters inside [] 2292eff0cSBram Moolenaar" Also test backslash for hex/octal numbered character. 3cada7897SBram Moolenaar" 4cada7897SBram Moolenaar 5cada7897SBram Moolenaarscriptencoding utf-8 6292eff0cSBram Moolenaar 7292eff0cSBram Moolenaarfunction RunSTest(value, calls, expected) 8292eff0cSBram Moolenaar new 9292eff0cSBram Moolenaar call feedkeys("i" . a:value, "mx") 10292eff0cSBram Moolenaar exec a:calls 11292eff0cSBram Moolenaar call assert_equal(a:expected, getline(1), printf("wrong result for %s", a:calls)) 12292eff0cSBram Moolenaar quit! 13292eff0cSBram Moolenaarendfunction 14292eff0cSBram Moolenaar 15292eff0cSBram Moolenaarfunction RunXTest(value, search_exp, expected) 16292eff0cSBram Moolenaar new 17292eff0cSBram Moolenaar call feedkeys("i" . a:value, "mx") 18292eff0cSBram Moolenaar call feedkeys("gg" . a:search_exp . "\nx", "mx") 19292eff0cSBram Moolenaar call assert_equal(a:expected, getline(1), printf("wrong result for %s", a:search_exp)) 20292eff0cSBram Moolenaar quit! 21292eff0cSBram Moolenaarendfunction 22292eff0cSBram Moolenaar 23292eff0cSBram Moolenaar 24292eff0cSBram Moolenaarfunction Test_x_search() 25292eff0cSBram Moolenaar let res = "test text test text" 26292eff0cSBram Moolenaar call RunXTest("test \\text test text", "/[\\x]", res) 27292eff0cSBram Moolenaar call RunXTest("test \ttext test text", "/[\\t\\]]", res) 28292eff0cSBram Moolenaar call RunXTest("test text ]test text", "/[]y]", res) 29292eff0cSBram Moolenaar call RunXTest("test ]text test text", "/[\\]]", res) 30292eff0cSBram Moolenaar call RunXTest("test text te^st text", "/[y^]", res) 31292eff0cSBram Moolenaar call RunXTest("test te$xt test text", "/[$y]", res) 32292eff0cSBram Moolenaar call RunXTest("test taext test text", "/[\\x61]", res) 33292eff0cSBram Moolenaar call RunXTest("test tbext test text","/[\\x60-\\x64]", res) 34292eff0cSBram Moolenaar call RunXTest("test 5text test text","/[\\x785]", res) 35292eff0cSBram Moolenaar call RunXTest("testc text test text","/[\\o143]", res) 36292eff0cSBram Moolenaar call RunXTest("tesdt text test text","/[\\o140-\\o144]", res) 37292eff0cSBram Moolenaar call RunXTest("test7 text test text", "/[\\o417]", res) 38292eff0cSBram Moolenaar call RunXTest("test text tBest text", "/\\%x42", res) 39292eff0cSBram Moolenaar call RunXTest("test text teCst text", "/\\%o103", res) 40292eff0cSBram Moolenaar call RunXTest("test text \<C-V>x00test text", "/[\\x00]", res) 41292eff0cSBram Moolenaarendfunction 42292eff0cSBram Moolenaar 43292eff0cSBram Moolenaarfunction Test_s_search() 44292eff0cSBram Moolenaar let res = "test text test text" 45292eff0cSBram Moolenaar call RunSTest("test te\<C-V>x00xt t\<C-V>x04est t\<C-V>x10ext", "s/[\\x00-\\x10]//g", res) 46292eff0cSBram Moolenaar call RunSTest("test \\xyztext test text", "s/[\\x-z]\\+//", res) 47292eff0cSBram Moolenaar call RunSTest("test text tev\\uyst text", "s/[\\u-z]\\{2,}//", res) 48292eff0cSBram Moolenaar call RunSTest("xx aaaaa xx a", "s/\\(a\\)\\+//", "xx xx a") 49292eff0cSBram Moolenaar call RunSTest("xx aaaaa xx a", "s/\\(a*\\)\\+//", "xx aaaaa xx a") 50292eff0cSBram Moolenaar call RunSTest("xx aaaaa xx a", "s/\\(a*\\)*//", "xx aaaaa xx a") 51292eff0cSBram Moolenaar call RunSTest("xx aaaaa xx", "s/\\(a\\)\\{2,3}/A/", "xx Aaa xx") 52292eff0cSBram Moolenaar call RunSTest("xx aaaaa xx", "s/\\(a\\)\\{-2,3}/A/", "xx Aaaa xx") 53292eff0cSBram Moolenaar call RunSTest("xx aaa12aa xx", "s/\\(a\\)*\\(12\\)\\@>/A/", "xx Aaa xx") 54292eff0cSBram Moolenaar call RunSTest("xx foobar xbar xx", "s/\\(foo\\)\\@<!bar/A/", "xx foobar xA xx") 55292eff0cSBram Moolenaar call RunSTest("xx an file xx", "s/\\(an\\_s\\+\\)\\@<=file/A/", "xx an A xx") 56292eff0cSBram Moolenaar call RunSTest("x= 9;", "s/^\\(\\h\\w*\\%(->\\|\\.\\)\\=\\)\\+=/XX/", "XX 9;") 57292eff0cSBram Moolenaar call RunSTest("hh= 77;", "s/^\\(\\h\\w*\\%(->\\|\\.\\)\\=\\)\\+=/YY/", "YY 77;") 58292eff0cSBram Moolenaar call RunSTest(" aaa ", "s/aaa/xyz/", " xyz ") 59292eff0cSBram Moolenaar call RunSTest(" xyz", "s/~/bcd/", " bcd") 60292eff0cSBram Moolenaar call RunSTest(" bcdbcdbcd", "s/~\\+/BB/", " BB") 61292eff0cSBram Moolenaarendfunction 62cada7897SBram Moolenaar 63cada7897SBram Moolenaar" Test character classes in regexp using regexpengine 0, 1, 2. 64cada7897SBram Moolenaarfunc Test_regex_char_classes() 65cada7897SBram Moolenaar new 66cada7897SBram Moolenaar let save_enc = &encoding 67cada7897SBram Moolenaar set encoding=utf-8 68cada7897SBram Moolenaar 69cada7897SBram Moolenaar let input = "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009b������" 70cada7897SBram Moolenaar 71cada7897SBram Moolenaar " Format is [cmd_to_run, expected_output] 72cada7897SBram Moolenaar let tests = [ 73cada7897SBram Moolenaar \ [':s/\%#=0\d//g', 74cada7897SBram Moolenaar \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009b������"], 75cada7897SBram Moolenaar \ [':s/\%#=1\d//g', 76cada7897SBram Moolenaar \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009b������"], 77cada7897SBram Moolenaar \ [':s/\%#=2\d//g', 78cada7897SBram Moolenaar \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009b������"], 79cada7897SBram Moolenaar \ [':s/\%#=0[0-9]//g', 80cada7897SBram Moolenaar \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009b������"], 81cada7897SBram Moolenaar \ [':s/\%#=1[0-9]//g', 82cada7897SBram Moolenaar \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009b������"], 83cada7897SBram Moolenaar \ [':s/\%#=2[0-9]//g', 84cada7897SBram Moolenaar \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009b������"], 85cada7897SBram Moolenaar \ [':s/\%#=0\D//g', 86cada7897SBram Moolenaar \ "0123456789"], 87cada7897SBram Moolenaar \ [':s/\%#=1\D//g', 88cada7897SBram Moolenaar \ "0123456789"], 89cada7897SBram Moolenaar \ [':s/\%#=2\D//g', 90cada7897SBram Moolenaar \ "0123456789"], 91cada7897SBram Moolenaar \ [':s/\%#=0[^0-9]//g', 92cada7897SBram Moolenaar \ "0123456789"], 93cada7897SBram Moolenaar \ [':s/\%#=1[^0-9]//g', 94cada7897SBram Moolenaar \ "0123456789"], 95cada7897SBram Moolenaar \ [':s/\%#=2[^0-9]//g', 96cada7897SBram Moolenaar \ "0123456789"], 97cada7897SBram Moolenaar \ [':s/\%#=0\o//g', 98cada7897SBram Moolenaar \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./89:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009b������"], 99cada7897SBram Moolenaar \ [':s/\%#=1\o//g', 100cada7897SBram Moolenaar \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./89:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009b������"], 101cada7897SBram Moolenaar \ [':s/\%#=2\o//g', 102cada7897SBram Moolenaar \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./89:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009b������"], 103cada7897SBram Moolenaar \ [':s/\%#=0[0-7]//g', 104cada7897SBram Moolenaar \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./89:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009b������"], 105cada7897SBram Moolenaar \ [':s/\%#=1[0-7]//g', 106cada7897SBram Moolenaar \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./89:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009b������"], 107cada7897SBram Moolenaar \ [':s/\%#=2[0-7]//g', 108cada7897SBram Moolenaar \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./89:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009b������"], 109cada7897SBram Moolenaar \ [':s/\%#=0\O//g', 110cada7897SBram Moolenaar \ "01234567"], 111cada7897SBram Moolenaar \ [':s/\%#=1\O//g', 112cada7897SBram Moolenaar \ "01234567"], 113cada7897SBram Moolenaar \ [':s/\%#=2\O//g', 114cada7897SBram Moolenaar \ "01234567"], 115cada7897SBram Moolenaar \ [':s/\%#=0[^0-7]//g', 116cada7897SBram Moolenaar \ "01234567"], 117cada7897SBram Moolenaar \ [':s/\%#=1[^0-7]//g', 118cada7897SBram Moolenaar \ "01234567"], 119cada7897SBram Moolenaar \ [':s/\%#=2[^0-7]//g', 120cada7897SBram Moolenaar \ "01234567"], 121cada7897SBram Moolenaar \ [':s/\%#=0\x//g', 122cada7897SBram Moolenaar \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./:;<=>?@GHIXYZ[\]^_`ghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009b������"], 123cada7897SBram Moolenaar \ [':s/\%#=1\x//g', 124cada7897SBram Moolenaar \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./:;<=>?@GHIXYZ[\]^_`ghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009b������"], 125cada7897SBram Moolenaar \ [':s/\%#=2\x//g', 126cada7897SBram Moolenaar \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./:;<=>?@GHIXYZ[\]^_`ghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009b������"], 127cada7897SBram Moolenaar \ [':s/\%#=0[0-9A-Fa-f]//g', 128cada7897SBram Moolenaar \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./:;<=>?@GHIXYZ[\]^_`ghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009b������"], 129cada7897SBram Moolenaar \ [':s/\%#=1[0-9A-Fa-f]//g', 130cada7897SBram Moolenaar \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./:;<=>?@GHIXYZ[\]^_`ghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009b������"], 131cada7897SBram Moolenaar \ [':s/\%#=2[0-9A-Fa-f]//g', 132cada7897SBram Moolenaar \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./:;<=>?@GHIXYZ[\]^_`ghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009b������"], 133cada7897SBram Moolenaar \ [':s/\%#=0\X//g', 134cada7897SBram Moolenaar \ "0123456789ABCDEFabcdef"], 135cada7897SBram Moolenaar \ [':s/\%#=1\X//g', 136cada7897SBram Moolenaar \ "0123456789ABCDEFabcdef"], 137cada7897SBram Moolenaar \ [':s/\%#=2\X//g', 138cada7897SBram Moolenaar \ "0123456789ABCDEFabcdef"], 139cada7897SBram Moolenaar \ [':s/\%#=0[^0-9A-Fa-f]//g', 140cada7897SBram Moolenaar \ "0123456789ABCDEFabcdef"], 141cada7897SBram Moolenaar \ [':s/\%#=1[^0-9A-Fa-f]//g', 142cada7897SBram Moolenaar \ "0123456789ABCDEFabcdef"], 143cada7897SBram Moolenaar \ [':s/\%#=2[^0-9A-Fa-f]//g', 144cada7897SBram Moolenaar \ "0123456789ABCDEFabcdef"], 145cada7897SBram Moolenaar \ [':s/\%#=0\w//g', 146cada7897SBram Moolenaar \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./:;<=>?@[\]^`{|}~\<C-?>\u0080\u0082\u0090\u009b������"], 147cada7897SBram Moolenaar \ [':s/\%#=1\w//g', 148cada7897SBram Moolenaar \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./:;<=>?@[\]^`{|}~\<C-?>\u0080\u0082\u0090\u009b������"], 149cada7897SBram Moolenaar \ [':s/\%#=2\w//g', 150cada7897SBram Moolenaar \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./:;<=>?@[\]^`{|}~\<C-?>\u0080\u0082\u0090\u009b������"], 151cada7897SBram Moolenaar \ [':s/\%#=0[0-9A-Za-z_]//g', 152cada7897SBram Moolenaar \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./:;<=>?@[\]^`{|}~\<C-?>\u0080\u0082\u0090\u009b������"], 153cada7897SBram Moolenaar \ [':s/\%#=1[0-9A-Za-z_]//g', 154cada7897SBram Moolenaar \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./:;<=>?@[\]^`{|}~\<C-?>\u0080\u0082\u0090\u009b������"], 155cada7897SBram Moolenaar \ [':s/\%#=2[0-9A-Za-z_]//g', 156cada7897SBram Moolenaar \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./:;<=>?@[\]^`{|}~\<C-?>\u0080\u0082\u0090\u009b������"], 157cada7897SBram Moolenaar \ [':s/\%#=0\W//g', 158cada7897SBram Moolenaar \ "0123456789ABCDEFGHIXYZ_abcdefghiwxyz"], 159cada7897SBram Moolenaar \ [':s/\%#=1\W//g', 160cada7897SBram Moolenaar \ "0123456789ABCDEFGHIXYZ_abcdefghiwxyz"], 161cada7897SBram Moolenaar \ [':s/\%#=2\W//g', 162cada7897SBram Moolenaar \ "0123456789ABCDEFGHIXYZ_abcdefghiwxyz"], 163cada7897SBram Moolenaar \ [':s/\%#=0[^0-9A-Za-z_]//g', 164cada7897SBram Moolenaar \ "0123456789ABCDEFGHIXYZ_abcdefghiwxyz"], 165cada7897SBram Moolenaar \ [':s/\%#=1[^0-9A-Za-z_]//g', 166cada7897SBram Moolenaar \ "0123456789ABCDEFGHIXYZ_abcdefghiwxyz"], 167cada7897SBram Moolenaar \ [':s/\%#=2[^0-9A-Za-z_]//g', 168cada7897SBram Moolenaar \ "0123456789ABCDEFGHIXYZ_abcdefghiwxyz"], 169cada7897SBram Moolenaar \ [':s/\%#=0\h//g', 170cada7897SBram Moolenaar \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@[\]^`{|}~\<C-?>\u0080\u0082\u0090\u009b������"], 171cada7897SBram Moolenaar \ [':s/\%#=1\h//g', 172cada7897SBram Moolenaar \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@[\]^`{|}~\<C-?>\u0080\u0082\u0090\u009b������"], 173cada7897SBram Moolenaar \ [':s/\%#=2\h//g', 174cada7897SBram Moolenaar \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@[\]^`{|}~\<C-?>\u0080\u0082\u0090\u009b������"], 175cada7897SBram Moolenaar \ [':s/\%#=0[A-Za-z_]//g', 176cada7897SBram Moolenaar \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@[\]^`{|}~\<C-?>\u0080\u0082\u0090\u009b������"], 177cada7897SBram Moolenaar \ [':s/\%#=1[A-Za-z_]//g', 178cada7897SBram Moolenaar \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@[\]^`{|}~\<C-?>\u0080\u0082\u0090\u009b������"], 179cada7897SBram Moolenaar \ [':s/\%#=2[A-Za-z_]//g', 180cada7897SBram Moolenaar \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@[\]^`{|}~\<C-?>\u0080\u0082\u0090\u009b������"], 181cada7897SBram Moolenaar \ [':s/\%#=0\H//g', 182cada7897SBram Moolenaar \ "ABCDEFGHIXYZ_abcdefghiwxyz"], 183cada7897SBram Moolenaar \ [':s/\%#=1\H//g', 184cada7897SBram Moolenaar \ "ABCDEFGHIXYZ_abcdefghiwxyz"], 185cada7897SBram Moolenaar \ [':s/\%#=2\H//g', 186cada7897SBram Moolenaar \ "ABCDEFGHIXYZ_abcdefghiwxyz"], 187cada7897SBram Moolenaar \ [':s/\%#=0[^A-Za-z_]//g', 188cada7897SBram Moolenaar \ "ABCDEFGHIXYZ_abcdefghiwxyz"], 189cada7897SBram Moolenaar \ [':s/\%#=1[^A-Za-z_]//g', 190cada7897SBram Moolenaar \ "ABCDEFGHIXYZ_abcdefghiwxyz"], 191cada7897SBram Moolenaar \ [':s/\%#=2[^A-Za-z_]//g', 192cada7897SBram Moolenaar \ "ABCDEFGHIXYZ_abcdefghiwxyz"], 193cada7897SBram Moolenaar \ [':s/\%#=0\a//g', 194cada7897SBram Moolenaar \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@[\]^_`{|}~\<C-?>\u0080\u0082\u0090\u009b������"], 195cada7897SBram Moolenaar \ [':s/\%#=1\a//g', 196cada7897SBram Moolenaar \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@[\]^_`{|}~\<C-?>\u0080\u0082\u0090\u009b������"], 197cada7897SBram Moolenaar \ [':s/\%#=2\a//g', 198cada7897SBram Moolenaar \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@[\]^_`{|}~\<C-?>\u0080\u0082\u0090\u009b������"], 199cada7897SBram Moolenaar \ [':s/\%#=0[A-Za-z]//g', 200cada7897SBram Moolenaar \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@[\]^_`{|}~\<C-?>\u0080\u0082\u0090\u009b������"], 201cada7897SBram Moolenaar \ [':s/\%#=1[A-Za-z]//g', 202cada7897SBram Moolenaar \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@[\]^_`{|}~\<C-?>\u0080\u0082\u0090\u009b������"], 203cada7897SBram Moolenaar \ [':s/\%#=2[A-Za-z]//g', 204cada7897SBram Moolenaar \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@[\]^_`{|}~\<C-?>\u0080\u0082\u0090\u009b������"], 205cada7897SBram Moolenaar \ [':s/\%#=0\A//g', 206cada7897SBram Moolenaar \ "ABCDEFGHIXYZabcdefghiwxyz"], 207cada7897SBram Moolenaar \ [':s/\%#=1\A//g', 208cada7897SBram Moolenaar \ "ABCDEFGHIXYZabcdefghiwxyz"], 209cada7897SBram Moolenaar \ [':s/\%#=2\A//g', 210cada7897SBram Moolenaar \ "ABCDEFGHIXYZabcdefghiwxyz"], 211cada7897SBram Moolenaar \ [':s/\%#=0[^A-Za-z]//g', 212cada7897SBram Moolenaar \ "ABCDEFGHIXYZabcdefghiwxyz"], 213cada7897SBram Moolenaar \ [':s/\%#=1[^A-Za-z]//g', 214cada7897SBram Moolenaar \ "ABCDEFGHIXYZabcdefghiwxyz"], 215cada7897SBram Moolenaar \ [':s/\%#=2[^A-Za-z]//g', 216cada7897SBram Moolenaar \ "ABCDEFGHIXYZabcdefghiwxyz"], 217cada7897SBram Moolenaar \ [':s/\%#=0\l//g', 218cada7897SBram Moolenaar \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`{|}~\<C-?>\u0080\u0082\u0090\u009b������"], 219cada7897SBram Moolenaar \ [':s/\%#=1\l//g', 220cada7897SBram Moolenaar \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`{|}~\<C-?>\u0080\u0082\u0090\u009b������"], 221cada7897SBram Moolenaar \ [':s/\%#=2\l//g', 222cada7897SBram Moolenaar \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`{|}~\<C-?>\u0080\u0082\u0090\u009b������"], 223cada7897SBram Moolenaar \ [':s/\%#=0[a-z]//g', 224cada7897SBram Moolenaar \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`{|}~\<C-?>\u0080\u0082\u0090\u009b������"], 225cada7897SBram Moolenaar \ [':s/\%#=1[a-z]//g', 226cada7897SBram Moolenaar \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`{|}~\<C-?>\u0080\u0082\u0090\u009b������"], 227cada7897SBram Moolenaar \ [':s/\%#=2[a-z]//g', 228cada7897SBram Moolenaar \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`{|}~\<C-?>\u0080\u0082\u0090\u009b������"], 229cada7897SBram Moolenaar \ [':s/\%#=0\L//g', 230cada7897SBram Moolenaar \ "abcdefghiwxyz"], 231cada7897SBram Moolenaar \ [':s/\%#=1\L//g', 232cada7897SBram Moolenaar \ "abcdefghiwxyz"], 233cada7897SBram Moolenaar \ [':s/\%#=2\L//g', 234cada7897SBram Moolenaar \ "abcdefghiwxyz"], 235cada7897SBram Moolenaar \ [':s/\%#=0[^a-z]//g', 236cada7897SBram Moolenaar \ "abcdefghiwxyz"], 237cada7897SBram Moolenaar \ [':s/\%#=1[^a-z]//g', 238cada7897SBram Moolenaar \ "abcdefghiwxyz"], 239cada7897SBram Moolenaar \ [':s/\%#=2[^a-z]//g', 240cada7897SBram Moolenaar \ "abcdefghiwxyz"], 241cada7897SBram Moolenaar \ [':s/\%#=0\u//g', 242cada7897SBram Moolenaar \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009b������"], 243cada7897SBram Moolenaar \ [':s/\%#=1\u//g', 244cada7897SBram Moolenaar \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009b������"], 245cada7897SBram Moolenaar \ [':s/\%#=2\u//g', 246cada7897SBram Moolenaar \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009b������"], 247cada7897SBram Moolenaar \ [':s/\%#=0[A-Z]//g', 248cada7897SBram Moolenaar \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009b������"], 249cada7897SBram Moolenaar \ [':s/\%#=1[A-Z]//g', 250cada7897SBram Moolenaar \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009b������"], 251cada7897SBram Moolenaar \ [':s/\%#=2[A-Z]//g', 252cada7897SBram Moolenaar \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009b������"], 253cada7897SBram Moolenaar \ [':s/\%#=0\U//g', 254cada7897SBram Moolenaar \ "ABCDEFGHIXYZ"], 255cada7897SBram Moolenaar \ [':s/\%#=1\U//g', 256cada7897SBram Moolenaar \ "ABCDEFGHIXYZ"], 257cada7897SBram Moolenaar \ [':s/\%#=2\U//g', 258cada7897SBram Moolenaar \ "ABCDEFGHIXYZ"], 259cada7897SBram Moolenaar \ [':s/\%#=0[^A-Z]//g', 260cada7897SBram Moolenaar \ "ABCDEFGHIXYZ"], 261cada7897SBram Moolenaar \ [':s/\%#=1[^A-Z]//g', 262cada7897SBram Moolenaar \ "ABCDEFGHIXYZ"], 263cada7897SBram Moolenaar \ [':s/\%#=2[^A-Z]//g', 264cada7897SBram Moolenaar \ "ABCDEFGHIXYZ"], 265cada7897SBram Moolenaar \ [':s/\%#=0\%' . line('.') . 'l^\t...//g', 266cada7897SBram Moolenaar \ "!\"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009b������"], 267cada7897SBram Moolenaar \ [':s/\%#=1\%' . line('.') . 'l^\t...//g', 268cada7897SBram Moolenaar \ "!\"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009b������"], 269cada7897SBram Moolenaar \ [':s/\%#=2\%' . line('.') . 'l^\t...//g', 270cada7897SBram Moolenaar \ "!\"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009b������"], 271cada7897SBram Moolenaar \ [':s/\%#=0[0-z]//g', 272cada7897SBram Moolenaar \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./{|}~\<C-?>\u0080\u0082\u0090\u009b������"], 273cada7897SBram Moolenaar \ [':s/\%#=1[0-z]//g', 274cada7897SBram Moolenaar \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./{|}~\<C-?>\u0080\u0082\u0090\u009b������"], 275cada7897SBram Moolenaar \ [':s/\%#=2[0-z]//g', 276cada7897SBram Moolenaar \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./{|}~\<C-?>\u0080\u0082\u0090\u009b������"], 277cada7897SBram Moolenaar \ [':s/\%#=0[^0-z]//g', 278cada7897SBram Moolenaar \ "0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz"], 279cada7897SBram Moolenaar \ [':s/\%#=1[^0-z]//g', 280cada7897SBram Moolenaar \ "0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz"], 281cada7897SBram Moolenaar \ [':s/\%#=2[^0-z]//g', 282cada7897SBram Moolenaar \ "0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz"] 283cada7897SBram Moolenaar \] 284cada7897SBram Moolenaar 285cada7897SBram Moolenaar for [cmd, expected] in tests 286cada7897SBram Moolenaar call append(0, input) 287cada7897SBram Moolenaar call cursor(1, 1) 288cada7897SBram Moolenaar exe cmd 289cada7897SBram Moolenaar call assert_equal(expected, getline(1), cmd) 290cada7897SBram Moolenaar endfor 291cada7897SBram Moolenaar 292cada7897SBram Moolenaar let &encoding = save_enc 293cada7897SBram Moolenaar enew! 294cada7897SBram Moolenaar close 295cada7897SBram Moolenaarendfunc 296*6d91bcb4SBram Moolenaar 297*6d91bcb4SBram Moolenaar" vim: shiftwidth=2 sts=2 expandtab 298