1" Tests for digraphs 2 3source check.vim 4CheckFeature digraphs 5source term_util.vim 6 7func Put_Dig(chars) 8 exe "norm! o\<c-k>".a:chars 9endfu 10 11func Put_Dig_BS(char1, char2) 12 exe "norm! o".a:char1."\<bs>".a:char2 13endfu 14 15func Test_digraphs() 16 new 17 call Put_Dig("00") 18 call assert_equal("∞", getline('.')) 19 " not a digraph 20 call Put_Dig("el") 21 call assert_equal("l", getline('.')) 22 call Put_Dig("ht") 23 call assert_equal("þ", getline('.')) 24 " digraph "ab" is the same as "ba" 25 call Put_Dig("ab") 26 call Put_Dig("ba") 27 call assert_equal(["ば","ば"], getline(line('.')-1,line('.'))) 28 " Euro sign 29 call Put_Dig("e=") 30 call Put_Dig("=e") 31 call Put_Dig("Eu") 32 call Put_Dig("uE") 33 call assert_equal(['е']+repeat(["€"],3), getline(line('.')-3,line('.'))) 34 " Rouble sign 35 call Put_Dig("R=") 36 call Put_Dig("=R") 37 call Put_Dig("=P") 38 call Put_Dig("P=") 39 call assert_equal(['Р']+repeat(["₽"],2)+['П'], getline(line('.')-3,line('.'))) 40 " Not a digraph 41 call Put_Dig("a\<bs>") 42 call Put_Dig("\<bs>a") 43 call assert_equal(["<BS>", "<BS>a"], getline(line('.')-1,line('.'))) 44 " Grave 45 call Put_Dig("a!") 46 call Put_Dig("!e") 47 call Put_Dig("b!") " not defined 48 call assert_equal(["à", "è", "!"], getline(line('.')-2,line('.'))) 49 " Acute accent 50 call Put_Dig("a'") 51 call Put_Dig("'e") 52 call Put_Dig("b'") " not defined 53 call assert_equal(["á", "é", "'"], getline(line('.')-2,line('.'))) 54 " Cicumflex 55 call Put_Dig("a>") 56 call Put_Dig(">e") 57 call Put_Dig("b>") " not defined 58 call assert_equal(['â', 'ê', '>'], getline(line('.')-2,line('.'))) 59 " Tilde 60 call Put_Dig("o~") 61 call Put_Dig("~u") " not defined 62 call Put_Dig("z~") " not defined 63 call assert_equal(['õ', 'u', '~'], getline(line('.')-2,line('.'))) 64 " Tilde 65 call Put_Dig("o?") 66 call Put_Dig("?u") 67 call Put_Dig("z?") " not defined 68 call assert_equal(['õ', 'ũ', '?'], getline(line('.')-2,line('.'))) 69 " Macron 70 call Put_Dig("o-") 71 call Put_Dig("-u") 72 call Put_Dig("z-") " not defined 73 call assert_equal(['ō', 'ū', '-'], getline(line('.')-2,line('.'))) 74 " Breve 75 call Put_Dig("o(") 76 call Put_Dig("(u") 77 call Put_Dig("z(") " not defined 78 call assert_equal(['ŏ', 'ŭ', '('], getline(line('.')-2,line('.'))) 79 " Dot above 80 call Put_Dig("b.") 81 call Put_Dig(".e") 82 call Put_Dig("a.") " not defined 83 call assert_equal(['ḃ', 'ė', '.'], getline(line('.')-2,line('.'))) 84 " Diaeresis 85 call Put_Dig("a:") 86 call Put_Dig(":u") 87 call Put_Dig("b:") " not defined 88 call assert_equal(['ä', 'ü', ':'], getline(line('.')-2,line('.'))) 89 " Cedilla 90 call Put_Dig("',") 91 call Put_Dig(",C") 92 call Put_Dig("b,") " not defined 93 call assert_equal(['¸', 'Ç', ','], getline(line('.')-2,line('.'))) 94 " Underline 95 call Put_Dig("B_") 96 call Put_Dig("_t") 97 call Put_Dig("a_") " not defined 98 call assert_equal(['Ḇ', 'ṯ', '_'], getline(line('.')-2,line('.'))) 99 " Stroke 100 call Put_Dig("j/") 101 call Put_Dig("/l") 102 call Put_Dig("b/") " not defined 103 call assert_equal(['/', 'ł', '/'], getline(line('.')-2,line('.'))) 104 " Double acute 105 call Put_Dig('O"') 106 call Put_Dig('"y') 107 call Put_Dig('b"') " not defined 108 call assert_equal(['Ő', 'ÿ', '"'], getline(line('.')-2,line('.'))) 109 " Ogonek 110 call Put_Dig('u;') 111 call Put_Dig(';E') 112 call Put_Dig('b;') " not defined 113 call assert_equal(['ų', 'Ę', ';'], getline(line('.')-2,line('.'))) 114 " Caron 115 call Put_Dig('u<') 116 call Put_Dig('<E') 117 call Put_Dig('b<') " not defined 118 call assert_equal(['ǔ', 'Ě', '<'], getline(line('.')-2,line('.'))) 119 " Ring above 120 call Put_Dig('u0') 121 call Put_Dig('0E') " not defined 122 call Put_Dig('b0') " not defined 123 call assert_equal(['ů', 'E', '0'], getline(line('.')-2,line('.'))) 124 " Hook 125 call Put_Dig('u2') 126 call Put_Dig('2E') 127 call Put_Dig('b2') " not defined 128 call assert_equal(['ủ', 'Ẻ', '2'], getline(line('.')-2,line('.'))) 129 " Horn 130 call Put_Dig('u9') 131 call Put_Dig('9E') " not defined 132 call Put_Dig('b9') " not defined 133 call assert_equal(['ư', 'E', '9'], getline(line('.')-2,line('.'))) 134 " Cyrillic 135 call Put_Dig('u=') 136 call Put_Dig('=b') 137 call Put_Dig('=_') 138 call assert_equal(['у', 'б', '〓'], getline(line('.')-2,line('.'))) 139 " Greek 140 call Put_Dig('u*') 141 call Put_Dig('*b') 142 call Put_Dig('*_') 143 call assert_equal(['υ', 'β', '々'], getline(line('.')-2,line('.'))) 144 " Greek/Cyrillic special 145 call Put_Dig('u%') 146 call Put_Dig('%b') " not defined 147 call Put_Dig('%_') " not defined 148 call assert_equal(['ύ', 'b', '_'], getline(line('.')-2,line('.'))) 149 " Arabic 150 call Put_Dig('u+') 151 call Put_Dig('+b') 152 call Put_Dig('+_') " japanese industrial symbol 153 call assert_equal(['+', 'ب', '〄'], getline(line('.')-2,line('.'))) 154 " Hebrew 155 call Put_Dig('Q+') 156 call Put_Dig('+B') 157 call Put_Dig('+X') 158 call assert_equal(['ק', 'ב', 'ח'], getline(line('.')-2,line('.'))) 159 " Latin 160 call Put_Dig('a3') 161 call Put_Dig('A3') 162 call Put_Dig('3X') 163 call assert_equal(['ǣ', 'Ǣ', 'X'], getline(line('.')-2,line('.'))) 164 " Bopomofo 165 call Put_Dig('a4') 166 call Put_Dig('A4') 167 call Put_Dig('4X') 168 call assert_equal(['ㄚ', '4', 'X'], getline(line('.')-2,line('.'))) 169 " Hiragana 170 call Put_Dig('a5') 171 call Put_Dig('A5') 172 call Put_Dig('5X') 173 call assert_equal(['あ', 'ぁ', 'X'], getline(line('.')-2,line('.'))) 174 " Katakana 175 call Put_Dig('a6') 176 call Put_Dig('A6') 177 call Put_Dig('6X') 178 call assert_equal(['ァ', 'ア', 'X'], getline(line('.')-2,line('.'))) 179 " Superscripts 180 call Put_Dig('1S') 181 call Put_Dig('2S') 182 call Put_Dig('3S') 183 call assert_equal(['¹', '²', '³'], getline(line('.')-2,line('.'))) 184 " Subscripts 185 call Put_Dig('1s') 186 call Put_Dig('2s') 187 call Put_Dig('3s') 188 call assert_equal(['₁', '₂', '₃'], getline(line('.')-2,line('.'))) 189 " Eszet (only lowercase) 190 call Put_Dig("ss") 191 call Put_Dig("SS") " start of string 192 call assert_equal(["ß", ""], getline(line('.')-1,line('.'))) 193 " High bit set 194 call Put_Dig("a ") 195 call Put_Dig(" A") 196 call assert_equal(['á', 'Á'], getline(line('.')-1,line('.'))) 197 " Escape is not part of a digraph 198 call Put_Dig("a\<esc>") 199 call Put_Dig("\<esc>A") 200 call assert_equal(['', 'A'], getline(line('.')-1,line('.'))) 201 " define some custom digraphs 202 " old: 00 ∞ 203 " old: el l 204 digraph 00 9216 205 digraph el 0252 206 call Put_Dig("00") 207 call Put_Dig("el") 208 " Reset digraphs 209 digraph 00 8734 210 digraph el 108 211 call Put_Dig("00") 212 call Put_Dig("el") 213 call assert_equal(['␀', 'ü', '∞', 'l'], getline(line('.')-3,line('.'))) 214 call assert_fails('exe "digraph a\<Esc> 100"', 'E104:') 215 call assert_fails('exe "digraph \<Esc>a 100"', 'E104:') 216 call assert_fails('digraph xy z', 'E39:') 217 call assert_fails('digraph x', 'E1214:') 218 bw! 219endfunc 220 221func Test_digraphs_option() 222 " reset whichwrap option, so that testing <esc><bs>A works, 223 " without moving up a line 224 set digraph ww= 225 new 226 call Put_Dig_BS("0","0") 227 call assert_equal("∞", getline('.')) 228 " not a digraph 229 call Put_Dig_BS("e","l") 230 call assert_equal("l", getline('.')) 231 call Put_Dig_BS("h","t") 232 call assert_equal("þ", getline('.')) 233 " digraph "ab" is the same as "ba" 234 call Put_Dig_BS("a","b") 235 call Put_Dig_BS("b","a") 236 call assert_equal(["ば","ば"], getline(line('.')-1,line('.'))) 237 " Euro sign 238 call Put_Dig_BS("e","=") 239 call Put_Dig_BS("=","e") 240 call Put_Dig_BS("E","u") 241 call Put_Dig_BS("u","E") 242 call assert_equal(['е']+repeat(["€"],3), getline(line('.')-3,line('.'))) 243 " Rouble sign 244 call Put_Dig_BS("R","=") 245 call Put_Dig_BS("=","R") 246 call Put_Dig_BS("=","P") 247 call Put_Dig_BS("P","=") 248 call assert_equal(['Р']+repeat(["₽"],2)+['П'], getline(line('.')-3,line('.'))) 249 " Not a digraph: this is different from <c-k>! 250 call Put_Dig_BS("a","\<bs>") 251 call Put_Dig_BS("\<bs>","a") 252 call assert_equal(['','a'], getline(line('.')-1,line('.'))) 253 " Grave 254 call Put_Dig_BS("a","!") 255 call Put_Dig_BS("!","e") 256 call Put_Dig_BS("b","!") " not defined 257 call assert_equal(["à", "è", "!"], getline(line('.')-2,line('.'))) 258 " Acute accent 259 call Put_Dig_BS("a","'") 260 call Put_Dig_BS("'","e") 261 call Put_Dig_BS("b","'") " not defined 262 call assert_equal(["á", "é", "'"], getline(line('.')-2,line('.'))) 263 " Cicumflex 264 call Put_Dig_BS("a",">") 265 call Put_Dig_BS(">","e") 266 call Put_Dig_BS("b",">") " not defined 267 call assert_equal(['â', 'ê', '>'], getline(line('.')-2,line('.'))) 268 " Tilde 269 call Put_Dig_BS("o","~") 270 call Put_Dig_BS("~","u") " not defined 271 call Put_Dig_BS("z","~") " not defined 272 call assert_equal(['õ', 'u', '~'], getline(line('.')-2,line('.'))) 273 " Tilde 274 call Put_Dig_BS("o","?") 275 call Put_Dig_BS("?","u") 276 call Put_Dig_BS("z","?") " not defined 277 call assert_equal(['õ', 'ũ', '?'], getline(line('.')-2,line('.'))) 278 " Macron 279 call Put_Dig_BS("o","-") 280 call Put_Dig_BS("-","u") 281 call Put_Dig_BS("z","-") " not defined 282 call assert_equal(['ō', 'ū', '-'], getline(line('.')-2,line('.'))) 283 " Breve 284 call Put_Dig_BS("o","(") 285 call Put_Dig_BS("(","u") 286 call Put_Dig_BS("z","(") " not defined 287 call assert_equal(['ŏ', 'ŭ', '('], getline(line('.')-2,line('.'))) 288 " Dot above 289 call Put_Dig_BS("b",".") 290 call Put_Dig_BS(".","e") 291 call Put_Dig_BS("a",".") " not defined 292 call assert_equal(['ḃ', 'ė', '.'], getline(line('.')-2,line('.'))) 293 " Diaeresis 294 call Put_Dig_BS("a",":") 295 call Put_Dig_BS(":","u") 296 call Put_Dig_BS("b",":") " not defined 297 call assert_equal(['ä', 'ü', ':'], getline(line('.')-2,line('.'))) 298 " Cedilla 299 call Put_Dig_BS("'",",") 300 call Put_Dig_BS(",","C") 301 call Put_Dig_BS("b",",") " not defined 302 call assert_equal(['¸', 'Ç', ','], getline(line('.')-2,line('.'))) 303 " Underline 304 call Put_Dig_BS("B","_") 305 call Put_Dig_BS("_","t") 306 call Put_Dig_BS("a","_") " not defined 307 call assert_equal(['Ḇ', 'ṯ', '_'], getline(line('.')-2,line('.'))) 308 " Stroke 309 call Put_Dig_BS("j","/") 310 call Put_Dig_BS("/","l") 311 call Put_Dig_BS("b","/") " not defined 312 call assert_equal(['/', 'ł', '/'], getline(line('.')-2,line('.'))) 313 " Double acute 314 call Put_Dig_BS('O','"') 315 call Put_Dig_BS('"','y') 316 call Put_Dig_BS('b','"') " not defined 317 call assert_equal(['Ő', 'ÿ', '"'], getline(line('.')-2,line('.'))) 318 " Ogonek 319 call Put_Dig_BS('u',';') 320 call Put_Dig_BS(';','E') 321 call Put_Dig_BS('b',';') " not defined 322 call assert_equal(['ų', 'Ę', ';'], getline(line('.')-2,line('.'))) 323 " Caron 324 call Put_Dig_BS('u','<') 325 call Put_Dig_BS('<','E') 326 call Put_Dig_BS('b','<') " not defined 327 call assert_equal(['ǔ', 'Ě', '<'], getline(line('.')-2,line('.'))) 328 " Ring above 329 call Put_Dig_BS('u','0') 330 call Put_Dig_BS('0','E') " not defined 331 call Put_Dig_BS('b','0') " not defined 332 call assert_equal(['ů', 'E', '0'], getline(line('.')-2,line('.'))) 333 " Hook 334 call Put_Dig_BS('u','2') 335 call Put_Dig_BS('2','E') 336 call Put_Dig_BS('b','2') " not defined 337 call assert_equal(['ủ', 'Ẻ', '2'], getline(line('.')-2,line('.'))) 338 " Horn 339 call Put_Dig_BS('u','9') 340 call Put_Dig_BS('9','E') " not defined 341 call Put_Dig_BS('b','9') " not defined 342 call assert_equal(['ư', 'E', '9'], getline(line('.')-2,line('.'))) 343 " Cyrillic 344 call Put_Dig_BS('u','=') 345 call Put_Dig_BS('=','b') 346 call Put_Dig_BS('=','_') 347 call assert_equal(['у', 'б', '〓'], getline(line('.')-2,line('.'))) 348 " Greek 349 call Put_Dig_BS('u','*') 350 call Put_Dig_BS('*','b') 351 call Put_Dig_BS('*','_') 352 call assert_equal(['υ', 'β', '々'], getline(line('.')-2,line('.'))) 353 " Greek/Cyrillic special 354 call Put_Dig_BS('u','%') 355 call Put_Dig_BS('%','b') " not defined 356 call Put_Dig_BS('%','_') " not defined 357 call assert_equal(['ύ', 'b', '_'], getline(line('.')-2,line('.'))) 358 " Arabic 359 call Put_Dig_BS('u','+') 360 call Put_Dig_BS('+','b') 361 call Put_Dig_BS('+','_') " japanese industrial symbol 362 call assert_equal(['+', 'ب', '〄'], getline(line('.')-2,line('.'))) 363 " Hebrew 364 call Put_Dig_BS('Q','+') 365 call Put_Dig_BS('+','B') 366 call Put_Dig_BS('+','X') 367 call assert_equal(['ק', 'ב', 'ח'], getline(line('.')-2,line('.'))) 368 " Latin 369 call Put_Dig_BS('a','3') 370 call Put_Dig_BS('A','3') 371 call Put_Dig_BS('3','X') 372 call assert_equal(['ǣ', 'Ǣ', 'X'], getline(line('.')-2,line('.'))) 373 " Bopomofo 374 call Put_Dig_BS('a','4') 375 call Put_Dig_BS('A','4') 376 call Put_Dig_BS('4','X') 377 call assert_equal(['ㄚ', '4', 'X'], getline(line('.')-2,line('.'))) 378 " Hiragana 379 call Put_Dig_BS('a','5') 380 call Put_Dig_BS('A','5') 381 call Put_Dig_BS('5','X') 382 call assert_equal(['あ', 'ぁ', 'X'], getline(line('.')-2,line('.'))) 383 " Katakana 384 call Put_Dig_BS('a','6') 385 call Put_Dig_BS('A','6') 386 call Put_Dig_BS('6','X') 387 call assert_equal(['ァ', 'ア', 'X'], getline(line('.')-2,line('.'))) 388 " Superscripts 389 call Put_Dig_BS('1','S') 390 call Put_Dig_BS('2','S') 391 call Put_Dig_BS('3','S') 392 call assert_equal(['¹', '²', '³'], getline(line('.')-2,line('.'))) 393 " Subscripts 394 call Put_Dig_BS('1','s') 395 call Put_Dig_BS('2','s') 396 call Put_Dig_BS('3','s') 397 call assert_equal(['₁', '₂', '₃'], getline(line('.')-2,line('.'))) 398 " Eszet (only lowercase) 399 call Put_Dig_BS("s","s") 400 call Put_Dig_BS("S","S") " start of string 401 call assert_equal(["ß", ""], getline(line('.')-1,line('.'))) 402 " High bit set (different from <c-k>) 403 call Put_Dig_BS("a"," ") 404 call Put_Dig_BS(" ","A") 405 call assert_equal([' ', 'A'], getline(line('.')-1,line('.'))) 406 " Escape is not part of a digraph (different from <c-k>) 407 call Put_Dig_BS("a","\<esc>") 408 call Put_Dig_BS("\<esc>","A") 409 call assert_equal(['', ''], getline(line('.')-1,line('.'))) 410 " define some custom digraphs 411 " old: 00 ∞ 412 " old: el l 413 digraph 00 9216 414 digraph el 0252 415 call Put_Dig_BS("0","0") 416 call Put_Dig_BS("e","l") 417 " Reset digraphs 418 digraph 00 8734 419 digraph el 108 420 call Put_Dig_BS("0","0") 421 call Put_Dig_BS("e","l") 422 call assert_equal(['␀', 'ü', '∞', 'l'], getline(line('.')-3,line('.'))) 423 set nodigraph ww&vim 424 bw! 425endfunc 426 427func Test_digraphs_output() 428 new 429 let out = execute(':digraph') 430 call assert_equal('Eu € 8364', matchstr(out, '\C\<Eu\D*8364\>')) 431 call assert_equal('=e € 8364', matchstr(out, '\C=e\D*8364\>')) 432 call assert_equal('=R ₽ 8381', matchstr(out, '\C=R\D*8381\>')) 433 call assert_equal('=P ₽ 8381', matchstr(out, '\C=P\D*8381\>')) 434 call assert_equal('o: ö 246', matchstr(out, '\C\<o:\D*246\>')) 435 call assert_equal('v4 ㄪ 12586', matchstr(out, '\C\<v4\D*12586\>')) 436 call assert_equal("'0 ˚ 730", matchstr(out, '\C''0\D*730\>')) 437 call assert_equal('Z% Ж 1046', matchstr(out, '\C\<Z%\D*1046\>')) 438 call assert_equal('u- ū 363', matchstr(out, '\C\<u-\D*363\>')) 439 call assert_equal('SH ^A 1', matchstr(out, '\C\<SH\D*1\>')) 440 call assert_notmatch('Latin supplement', out) 441 442 let out_bang_without_custom = execute(':digraph!') 443 digraph lt 60 444 let out_bang_with_custom = execute(':digraph!') 445 call assert_notmatch('lt', out_bang_without_custom) 446 call assert_match("^\n" 447 \ .. "NU ^@ 10 .*\n" 448 \ .. "Latin supplement\n" 449 \ .. "!I ¡ 161 .*\n" 450 \ .. ".*\n" 451 \ .. 'Custom\n.*\<lt < 60\>', out_bang_with_custom) 452 bw! 453endfunc 454 455func Test_loadkeymap() 456 CheckFeature keymap 457 new 458 set keymap=czech 459 set iminsert=0 460 call feedkeys("o|\<c-^>|01234567890|\<esc>", 'tx') 461 call assert_equal("|'é+ěščřžýáíé'", getline('.')) 462 " reset keymap and encoding option 463 set keymap= 464 bw! 465endfunc 466 467func Test_digraph_cmndline() 468 " Create digraph on commandline 469 call feedkeys(":\"\<c-k>Eu\<cr>", 'xt') 470 call assert_equal('"€', @:) 471 472 " Canceling a CTRL-K on the cmdline 473 call feedkeys(":\"a\<c-k>\<esc>b\<cr>", 'xt') 474 call assert_equal('"ab', @:) 475endfunc 476 477func Test_show_digraph() 478 new 479 call Put_Dig("e=") 480 call assert_equal("\n<е> 1077, Hex 0435, Oct 2065, Digr e=", execute('ascii')) 481 bwipe! 482endfunc 483 484func Test_show_digraph_cp1251() 485 new 486 set encoding=cp1251 487 call Put_Dig("='") 488 call assert_equal("\n<\xfa> <|z> <M-z> 250, Hex fa, Oct 372, Digr ='", execute('ascii')) 489 set encoding=utf-8 490 bwipe! 491endfunc 492 493" Test for error in a keymap file 494func Test_loadkeymap_error() 495 CheckFeature keymap 496 call assert_fails('loadkeymap', 'E105:') 497 call writefile(['loadkeymap', 'a'], 'Xkeymap') 498 call assert_fails('source Xkeymap', 'E791:') 499 call delete('Xkeymap') 500endfunc 501 502" Test for the characters displayed on the screen when entering a digraph 503func Test_entering_digraph() 504 CheckRunVimInTerminal 505 let buf = RunVimInTerminal('', {'rows': 6}) 506 call term_sendkeys(buf, "i\<C-K>") 507 call TermWait(buf) 508 call assert_equal('?', term_getline(buf, 1)) 509 call term_sendkeys(buf, "1") 510 call TermWait(buf) 511 call assert_equal('1', term_getline(buf, 1)) 512 call term_sendkeys(buf, "2") 513 call TermWait(buf) 514 call assert_equal('½', term_getline(buf, 1)) 515 call StopVimInTerminal(buf) 516endfunc 517 518func Test_digraph_set_function() 519 new 520 call digraph_set('aa', 'あ') 521 call Put_Dig('aa') 522 call assert_equal('あ', getline('$')) 523 call digraph_set(' i', 'い') 524 call Put_Dig(' i') 525 call assert_equal('い', getline('$')) 526 call digraph_set(' ', 'う') 527 call Put_Dig(' ') 528 call assert_equal('う', getline('$')) 529 530 eval 'aa'->digraph_set('え') 531 call Put_Dig('aa') 532 call assert_equal('え', getline('$')) 533 534 call assert_fails('call digraph_set("aaa", "あ")', 'E1214: Digraph must be just two characters: aaa') 535 call assert_fails('call digraph_set("b", "あ")', 'E1214: Digraph must be just two characters: b') 536 call assert_fails('call digraph_set("あ", "あ")', 'E1214: Digraph must be just two characters: あ') 537 call assert_fails('call digraph_set("aa", "ああ")', 'E1215: Digraph must be one character: ああ') 538 call assert_fails('call digraph_set("aa", "か" .. nr2char(0x3099))', 'E1215: Digraph must be one character: か' .. nr2char(0x3099)) 539 call assert_fails('call digraph_set(test_null_string(), "い")', 'E1214: Digraph must be just two characters') 540 call assert_fails('call digraph_set("aa", 0z10)', 'E976: Using a Blob as a String') 541 bwipe! 542endfunc 543 544func Test_digraph_get_function() 545 " Built-in digraphs 546 call assert_equal('∞', digraph_get('00')) 547 548 " User-defined digraphs 549 call digraph_set('aa', 'あ') 550 call digraph_set(' i', 'い') 551 call digraph_set(' ', 'う') 552 call assert_equal('あ', digraph_get('aa')) 553 call assert_equal('あ', 'aa'->digraph_get()) 554 call assert_equal('い', digraph_get(' i')) 555 call assert_equal('う', digraph_get(' ')) 556 call assert_fails('call digraph_get("aaa")', 'E1214: Digraph must be just two characters: aaa') 557 call assert_fails('call digraph_get("b")', 'E1214: Digraph must be just two characters: b') 558 call assert_fails('call digraph_get(test_null_string())', 'E1214: Digraph must be just two characters:') 559 call assert_fails('call digraph_get(0z10)', 'E976: Using a Blob as a String') 560endfunc 561 562func Test_digraph_get_function_encode() 563 CheckFeature iconv 564 565 let testcases = { 566 \'00': '∞', 567 \'aa': 'あ', 568 \} 569 for [key, ch] in items(testcases) 570 call digraph_set(key, ch) 571 set encoding=japan 572 call assert_equal(iconv(ch, 'utf-8', 'japan'), digraph_get(key)) 573 set encoding=utf-8 574 endfor 575endfunc 576 577func Test_digraph_setlist_function() 578 call digraph_setlist([['aa', 'き'], ['bb', 'く']]) 579 call assert_equal('き', digraph_get('aa')) 580 call assert_equal('く', digraph_get('bb')) 581 582 call assert_fails('call digraph_setlist([[]])', 'E1216:') 583 call assert_fails('call digraph_setlist([["aa", "b", "cc"]])', 'E1216:') 584 call assert_fails('call digraph_setlist([["あ", "あ"]])', 'E1214: Digraph must be just two characters: あ') 585 call assert_fails('call digraph_setlist([test_null_list()])', 'E1216:') 586 call assert_fails('call digraph_setlist({})', 'E1216:') 587 call assert_fails('call digraph_setlist([{}])', 'E1216:') 588 call assert_true(digraph_setlist(test_null_list())) 589endfunc 590 591func Test_digraph_getlist_function() 592 " Make sure user-defined digraphs are defined 593 call digraph_setlist([['aa', 'き'], ['bb', 'く']]) 594 595 for pair in digraph_getlist(1) 596 call assert_equal(digraph_get(pair[0]), pair[1]) 597 endfor 598 599 " We don't know how many digraphs are registered before, so check the number 600 " of digraphs returned. 601 call assert_equal(digraph_getlist()->len(), digraph_getlist(0)->len()) 602 call assert_notequal((digraph_getlist()->len()), digraph_getlist(1)->len()) 603 604 call assert_fails('call digraph_getlist(0z12)', 'E974: Using a Blob as a Number') 605endfunc 606 607 608" vim: shiftwidth=2 sts=2 expandtab 609