xref: /vim-8.2.3635/src/testdir/test_digraph.vim (revision 91ffc8a5)
1397eadbeSBram Moolenaar" Tests for digraphs
2397eadbeSBram Moolenaar
3b46fecd3SBram Moolenaarsource check.vim
4b46fecd3SBram MoolenaarCheckFeature digraphs
5397eadbeSBram Moolenaar
65f73ef8dSBram Moolenaarfunc Put_Dig(chars)
7397eadbeSBram Moolenaar  exe "norm! o\<c-k>".a:chars
8397eadbeSBram Moolenaarendfu
9397eadbeSBram Moolenaar
105f73ef8dSBram Moolenaarfunc Put_Dig_BS(char1, char2)
11397eadbeSBram Moolenaar  exe "norm! o".a:char1."\<bs>".a:char2
12397eadbeSBram Moolenaarendfu
13397eadbeSBram Moolenaar
145f73ef8dSBram Moolenaarfunc Test_digraphs()
15397eadbeSBram Moolenaar  new
16397eadbeSBram Moolenaar  call Put_Dig("00")
17397eadbeSBram Moolenaar  call assert_equal("∞", getline('.'))
18397eadbeSBram Moolenaar  " not a digraph
19397eadbeSBram Moolenaar  call Put_Dig("el")
20397eadbeSBram Moolenaar  call assert_equal("l", getline('.'))
21397eadbeSBram Moolenaar  call Put_Dig("ht")
22397eadbeSBram Moolenaar  call assert_equal("þ", getline('.'))
23397eadbeSBram Moolenaar  " digraph "ab" is the same as "ba"
24397eadbeSBram Moolenaar  call Put_Dig("ab")
25397eadbeSBram Moolenaar  call Put_Dig("ba")
26397eadbeSBram Moolenaar  call assert_equal(["ば","ば"], getline(line('.')-1,line('.')))
27397eadbeSBram Moolenaar  " Euro sign
28397eadbeSBram Moolenaar  call Put_Dig("e=")
29397eadbeSBram Moolenaar  call Put_Dig("=e")
30397eadbeSBram Moolenaar  call Put_Dig("Eu")
31397eadbeSBram Moolenaar  call Put_Dig("uE")
32397eadbeSBram Moolenaar  call assert_equal(['е']+repeat(["€"],3), getline(line('.')-3,line('.')))
33397eadbeSBram Moolenaar  " Rouble sign
34397eadbeSBram Moolenaar  call Put_Dig("R=")
35397eadbeSBram Moolenaar  call Put_Dig("=R")
36397eadbeSBram Moolenaar  call Put_Dig("=P")
37397eadbeSBram Moolenaar  call Put_Dig("P=")
38397eadbeSBram Moolenaar  call assert_equal(['Р']+repeat(["₽"],2)+['П'], getline(line('.')-3,line('.')))
39397eadbeSBram Moolenaar  " Not a digraph
40397eadbeSBram Moolenaar  call Put_Dig("a\<bs>")
41397eadbeSBram Moolenaar  call Put_Dig("\<bs>a")
42397eadbeSBram Moolenaar  call assert_equal(["<BS>", "<BS>a"], getline(line('.')-1,line('.')))
43397eadbeSBram Moolenaar  " Grave
44397eadbeSBram Moolenaar  call Put_Dig("a!")
45397eadbeSBram Moolenaar  call Put_Dig("!e")
46397eadbeSBram Moolenaar  call Put_Dig("b!") " not defined
47397eadbeSBram Moolenaar  call assert_equal(["à", "è", "!"], getline(line('.')-2,line('.')))
48397eadbeSBram Moolenaar  " Acute accent
49397eadbeSBram Moolenaar  call Put_Dig("a'")
50397eadbeSBram Moolenaar  call Put_Dig("'e")
51397eadbeSBram Moolenaar  call Put_Dig("b'") " not defined
52397eadbeSBram Moolenaar  call assert_equal(["á", "é", "'"], getline(line('.')-2,line('.')))
53397eadbeSBram Moolenaar  " Cicumflex
54397eadbeSBram Moolenaar  call Put_Dig("a>")
55397eadbeSBram Moolenaar  call Put_Dig(">e")
56397eadbeSBram Moolenaar  call Put_Dig("b>") " not defined
57397eadbeSBram Moolenaar  call assert_equal(['â', 'ê', '>'], getline(line('.')-2,line('.')))
58397eadbeSBram Moolenaar  " Tilde
59397eadbeSBram Moolenaar  call Put_Dig("o~")
60397eadbeSBram Moolenaar  call Put_Dig("~u") " not defined
61397eadbeSBram Moolenaar  call Put_Dig("z~") " not defined
62397eadbeSBram Moolenaar  call assert_equal(['õ', 'u', '~'], getline(line('.')-2,line('.')))
63397eadbeSBram Moolenaar  " Tilde
64397eadbeSBram Moolenaar  call Put_Dig("o?")
65397eadbeSBram Moolenaar  call Put_Dig("?u")
66397eadbeSBram Moolenaar  call Put_Dig("z?") " not defined
67397eadbeSBram Moolenaar  call assert_equal(['õ', 'ũ', '?'], getline(line('.')-2,line('.')))
68397eadbeSBram Moolenaar  " Macron
69397eadbeSBram Moolenaar  call Put_Dig("o-")
70397eadbeSBram Moolenaar  call Put_Dig("-u")
71397eadbeSBram Moolenaar  call Put_Dig("z-") " not defined
72397eadbeSBram Moolenaar  call assert_equal(['ō', 'ū', '-'], getline(line('.')-2,line('.')))
73397eadbeSBram Moolenaar  " Breve
74397eadbeSBram Moolenaar  call Put_Dig("o(")
75397eadbeSBram Moolenaar  call Put_Dig("(u")
76397eadbeSBram Moolenaar  call Put_Dig("z(") " not defined
77397eadbeSBram Moolenaar  call assert_equal(['ŏ', 'ŭ', '('], getline(line('.')-2,line('.')))
78397eadbeSBram Moolenaar  " Dot above
79397eadbeSBram Moolenaar  call Put_Dig("b.")
80397eadbeSBram Moolenaar  call Put_Dig(".e")
81397eadbeSBram Moolenaar  call Put_Dig("a.") " not defined
82397eadbeSBram Moolenaar  call assert_equal(['ḃ', 'ė', '.'], getline(line('.')-2,line('.')))
834b96df5aSBram Moolenaar  " Diaeresis
84397eadbeSBram Moolenaar  call Put_Dig("a:")
85397eadbeSBram Moolenaar  call Put_Dig(":u")
86397eadbeSBram Moolenaar  call Put_Dig("b:") " not defined
87397eadbeSBram Moolenaar  call assert_equal(['ä', 'ü', ':'], getline(line('.')-2,line('.')))
88397eadbeSBram Moolenaar  " Cedilla
89397eadbeSBram Moolenaar  call Put_Dig("',")
90397eadbeSBram Moolenaar  call Put_Dig(",C")
91397eadbeSBram Moolenaar  call Put_Dig("b,") " not defined
92397eadbeSBram Moolenaar  call assert_equal(['¸', 'Ç', ','], getline(line('.')-2,line('.')))
93397eadbeSBram Moolenaar  " Underline
94397eadbeSBram Moolenaar  call Put_Dig("B_")
95397eadbeSBram Moolenaar  call Put_Dig("_t")
96397eadbeSBram Moolenaar  call Put_Dig("a_") " not defined
97397eadbeSBram Moolenaar  call assert_equal(['Ḇ', 'ṯ', '_'], getline(line('.')-2,line('.')))
98397eadbeSBram Moolenaar  " Stroke
99397eadbeSBram Moolenaar  call Put_Dig("j/")
100397eadbeSBram Moolenaar  call Put_Dig("/l")
101397eadbeSBram Moolenaar  call Put_Dig("b/") " not defined
102397eadbeSBram Moolenaar  call assert_equal(['/', 'ł', '/'], getline(line('.')-2,line('.')))
103397eadbeSBram Moolenaar  " Double acute
104397eadbeSBram Moolenaar  call Put_Dig('O"')
105397eadbeSBram Moolenaar  call Put_Dig('"y')
106397eadbeSBram Moolenaar  call Put_Dig('b"') " not defined
107397eadbeSBram Moolenaar  call assert_equal(['Ő', 'ÿ', '"'], getline(line('.')-2,line('.')))
108397eadbeSBram Moolenaar  " Ogonek
109397eadbeSBram Moolenaar  call Put_Dig('u;')
110397eadbeSBram Moolenaar  call Put_Dig(';E')
111397eadbeSBram Moolenaar  call Put_Dig('b;') " not defined
112397eadbeSBram Moolenaar  call assert_equal(['ų', 'Ę', ';'], getline(line('.')-2,line('.')))
113397eadbeSBram Moolenaar  " Caron
114397eadbeSBram Moolenaar  call Put_Dig('u<')
115397eadbeSBram Moolenaar  call Put_Dig('<E')
116397eadbeSBram Moolenaar  call Put_Dig('b<') " not defined
117397eadbeSBram Moolenaar  call assert_equal(['ǔ', 'Ě', '<'], getline(line('.')-2,line('.')))
118397eadbeSBram Moolenaar  " Ring above
119397eadbeSBram Moolenaar  call Put_Dig('u0')
120397eadbeSBram Moolenaar  call Put_Dig('0E') " not defined
121397eadbeSBram Moolenaar  call Put_Dig('b0') " not defined
122397eadbeSBram Moolenaar  call assert_equal(['ů', 'E', '0'], getline(line('.')-2,line('.')))
123397eadbeSBram Moolenaar  " Hook
124397eadbeSBram Moolenaar  call Put_Dig('u2')
125397eadbeSBram Moolenaar  call Put_Dig('2E')
126397eadbeSBram Moolenaar  call Put_Dig('b2') " not defined
127397eadbeSBram Moolenaar  call assert_equal(['ủ', 'Ẻ', '2'], getline(line('.')-2,line('.')))
128397eadbeSBram Moolenaar  " Horn
129397eadbeSBram Moolenaar  call Put_Dig('u9')
130397eadbeSBram Moolenaar  call Put_Dig('9E') " not defined
131397eadbeSBram Moolenaar  call Put_Dig('b9') " not defined
132397eadbeSBram Moolenaar  call assert_equal(['ư', 'E', '9'], getline(line('.')-2,line('.')))
133397eadbeSBram Moolenaar  " Cyrillic
134397eadbeSBram Moolenaar  call Put_Dig('u=')
135397eadbeSBram Moolenaar  call Put_Dig('=b')
136397eadbeSBram Moolenaar  call Put_Dig('=_')
137397eadbeSBram Moolenaar  call assert_equal(['у', 'б', '〓'], getline(line('.')-2,line('.')))
138397eadbeSBram Moolenaar  " Greek
139397eadbeSBram Moolenaar  call Put_Dig('u*')
140397eadbeSBram Moolenaar  call Put_Dig('*b')
141397eadbeSBram Moolenaar  call Put_Dig('*_')
142397eadbeSBram Moolenaar  call assert_equal(['υ', 'β', '々'], getline(line('.')-2,line('.')))
143397eadbeSBram Moolenaar  " Greek/Cyrillic special
144397eadbeSBram Moolenaar  call Put_Dig('u%')
145397eadbeSBram Moolenaar  call Put_Dig('%b') " not defined
146397eadbeSBram Moolenaar  call Put_Dig('%_') " not defined
147397eadbeSBram Moolenaar  call assert_equal(['ύ', 'b', '_'], getline(line('.')-2,line('.')))
148397eadbeSBram Moolenaar  " Arabic
149397eadbeSBram Moolenaar  call Put_Dig('u+')
150397eadbeSBram Moolenaar  call Put_Dig('+b')
151397eadbeSBram Moolenaar  call Put_Dig('+_') " japanese industrial symbol
152397eadbeSBram Moolenaar  call assert_equal(['+', 'ب', '〄'], getline(line('.')-2,line('.')))
153397eadbeSBram Moolenaar  " Hebrew
154397eadbeSBram Moolenaar  call Put_Dig('Q+')
155397eadbeSBram Moolenaar  call Put_Dig('+B')
156397eadbeSBram Moolenaar  call Put_Dig('+X')
157397eadbeSBram Moolenaar  call assert_equal(['ק', 'ב', 'ח'], getline(line('.')-2,line('.')))
158397eadbeSBram Moolenaar  " Latin
159397eadbeSBram Moolenaar  call Put_Dig('a3')
160397eadbeSBram Moolenaar  call Put_Dig('A3')
161397eadbeSBram Moolenaar  call Put_Dig('3X')
162397eadbeSBram Moolenaar  call assert_equal(['ǣ', 'Ǣ', 'X'], getline(line('.')-2,line('.')))
163397eadbeSBram Moolenaar  " Bopomofo
164397eadbeSBram Moolenaar  call Put_Dig('a4')
165397eadbeSBram Moolenaar  call Put_Dig('A4')
166397eadbeSBram Moolenaar  call Put_Dig('4X')
167397eadbeSBram Moolenaar  call assert_equal(['ㄚ', '4', 'X'], getline(line('.')-2,line('.')))
168397eadbeSBram Moolenaar  " Hiragana
169397eadbeSBram Moolenaar  call Put_Dig('a5')
170397eadbeSBram Moolenaar  call Put_Dig('A5')
171397eadbeSBram Moolenaar  call Put_Dig('5X')
172397eadbeSBram Moolenaar  call assert_equal(['あ', 'ぁ', 'X'], getline(line('.')-2,line('.')))
173397eadbeSBram Moolenaar  " Katakana
174397eadbeSBram Moolenaar  call Put_Dig('a6')
175397eadbeSBram Moolenaar  call Put_Dig('A6')
176397eadbeSBram Moolenaar  call Put_Dig('6X')
177397eadbeSBram Moolenaar  call assert_equal(['ァ', 'ア', 'X'], getline(line('.')-2,line('.')))
178397eadbeSBram Moolenaar  " Superscripts
179397eadbeSBram Moolenaar  call Put_Dig('1S')
180397eadbeSBram Moolenaar  call Put_Dig('2S')
181397eadbeSBram Moolenaar  call Put_Dig('3S')
182397eadbeSBram Moolenaar  call assert_equal(['¹', '²', '³'], getline(line('.')-2,line('.')))
183397eadbeSBram Moolenaar  " Subscripts
184397eadbeSBram Moolenaar  call Put_Dig('1s')
185397eadbeSBram Moolenaar  call Put_Dig('2s')
186397eadbeSBram Moolenaar  call Put_Dig('3s')
187397eadbeSBram Moolenaar  call assert_equal(['₁', '₂', '₃'], getline(line('.')-2,line('.')))
188397eadbeSBram Moolenaar  " Eszet (only lowercase)
189397eadbeSBram Moolenaar  call Put_Dig("ss")
190397eadbeSBram Moolenaar  call Put_Dig("SS") " start of string
191397eadbeSBram Moolenaar  call assert_equal(["ß", "˜"], getline(line('.')-1,line('.')))
192397eadbeSBram Moolenaar  " High bit set
193397eadbeSBram Moolenaar  call Put_Dig("a ")
194397eadbeSBram Moolenaar  call Put_Dig(" A")
195397eadbeSBram Moolenaar  call assert_equal(['á', 'Á'], getline(line('.')-1,line('.')))
196397eadbeSBram Moolenaar  " Escape is not part of a digraph
197397eadbeSBram Moolenaar  call Put_Dig("a\<esc>")
198397eadbeSBram Moolenaar  call Put_Dig("\<esc>A")
199397eadbeSBram Moolenaar  call assert_equal(['', 'A'], getline(line('.')-1,line('.')))
200397eadbeSBram Moolenaar  " define some custom digraphs
201397eadbeSBram Moolenaar  " old: 00 ∞
202397eadbeSBram Moolenaar  " old: el l
203397eadbeSBram Moolenaar  digraph 00 9216
204397eadbeSBram Moolenaar  digraph el 0252
205397eadbeSBram Moolenaar  call Put_Dig("00")
206397eadbeSBram Moolenaar  call Put_Dig("el")
207397eadbeSBram Moolenaar  " Reset digraphs
208397eadbeSBram Moolenaar  digraph 00 8734
209397eadbeSBram Moolenaar  digraph el 108
210397eadbeSBram Moolenaar  call Put_Dig("00")
211397eadbeSBram Moolenaar  call Put_Dig("el")
212397eadbeSBram Moolenaar  call assert_equal(['␀', 'ü', '∞', 'l'], getline(line('.')-3,line('.')))
213397eadbeSBram Moolenaar  bw!
214397eadbeSBram Moolenaarendfunc
215397eadbeSBram Moolenaar
2165f73ef8dSBram Moolenaarfunc Test_digraphs_option()
217397eadbeSBram Moolenaar  " reset whichwrap option, so that testing <esc><bs>A works,
218397eadbeSBram Moolenaar  " without moving up a line
219dfd63e30SBram Moolenaar  set digraph ww=
220397eadbeSBram Moolenaar  new
221397eadbeSBram Moolenaar  call Put_Dig_BS("0","0")
222397eadbeSBram Moolenaar  call assert_equal("∞", getline('.'))
223397eadbeSBram Moolenaar  " not a digraph
224397eadbeSBram Moolenaar  call Put_Dig_BS("e","l")
225397eadbeSBram Moolenaar  call assert_equal("l", getline('.'))
226397eadbeSBram Moolenaar  call Put_Dig_BS("h","t")
227397eadbeSBram Moolenaar  call assert_equal("þ", getline('.'))
228397eadbeSBram Moolenaar  " digraph "ab" is the same as "ba"
229397eadbeSBram Moolenaar  call Put_Dig_BS("a","b")
230397eadbeSBram Moolenaar  call Put_Dig_BS("b","a")
231397eadbeSBram Moolenaar  call assert_equal(["ば","ば"], getline(line('.')-1,line('.')))
232397eadbeSBram Moolenaar  " Euro sign
233397eadbeSBram Moolenaar  call Put_Dig_BS("e","=")
234397eadbeSBram Moolenaar  call Put_Dig_BS("=","e")
235397eadbeSBram Moolenaar  call Put_Dig_BS("E","u")
236397eadbeSBram Moolenaar  call Put_Dig_BS("u","E")
237397eadbeSBram Moolenaar  call assert_equal(['е']+repeat(["€"],3), getline(line('.')-3,line('.')))
238397eadbeSBram Moolenaar  " Rouble sign
239397eadbeSBram Moolenaar  call Put_Dig_BS("R","=")
240397eadbeSBram Moolenaar  call Put_Dig_BS("=","R")
241397eadbeSBram Moolenaar  call Put_Dig_BS("=","P")
242397eadbeSBram Moolenaar  call Put_Dig_BS("P","=")
243397eadbeSBram Moolenaar  call assert_equal(['Р']+repeat(["₽"],2)+['П'], getline(line('.')-3,line('.')))
244397eadbeSBram Moolenaar  " Not a digraph: this is different from <c-k>!
245397eadbeSBram Moolenaar  call Put_Dig_BS("a","\<bs>")
246397eadbeSBram Moolenaar  call Put_Dig_BS("\<bs>","a")
247397eadbeSBram Moolenaar  call assert_equal(['','a'], getline(line('.')-1,line('.')))
248397eadbeSBram Moolenaar  " Grave
249397eadbeSBram Moolenaar  call Put_Dig_BS("a","!")
250397eadbeSBram Moolenaar  call Put_Dig_BS("!","e")
251397eadbeSBram Moolenaar  call Put_Dig_BS("b","!") " not defined
252397eadbeSBram Moolenaar  call assert_equal(["à", "è", "!"], getline(line('.')-2,line('.')))
253397eadbeSBram Moolenaar  " Acute accent
254397eadbeSBram Moolenaar  call Put_Dig_BS("a","'")
255397eadbeSBram Moolenaar  call Put_Dig_BS("'","e")
256397eadbeSBram Moolenaar  call Put_Dig_BS("b","'") " not defined
257397eadbeSBram Moolenaar  call assert_equal(["á", "é", "'"], getline(line('.')-2,line('.')))
258397eadbeSBram Moolenaar  " Cicumflex
259397eadbeSBram Moolenaar  call Put_Dig_BS("a",">")
260397eadbeSBram Moolenaar  call Put_Dig_BS(">","e")
261397eadbeSBram Moolenaar  call Put_Dig_BS("b",">") " not defined
262397eadbeSBram Moolenaar  call assert_equal(['â', 'ê', '>'], getline(line('.')-2,line('.')))
263397eadbeSBram Moolenaar  " Tilde
264397eadbeSBram Moolenaar  call Put_Dig_BS("o","~")
265397eadbeSBram Moolenaar  call Put_Dig_BS("~","u") " not defined
266397eadbeSBram Moolenaar  call Put_Dig_BS("z","~") " not defined
267397eadbeSBram Moolenaar  call assert_equal(['õ', 'u', '~'], getline(line('.')-2,line('.')))
268397eadbeSBram Moolenaar  " Tilde
269397eadbeSBram Moolenaar  call Put_Dig_BS("o","?")
270397eadbeSBram Moolenaar  call Put_Dig_BS("?","u")
271397eadbeSBram Moolenaar  call Put_Dig_BS("z","?") " not defined
272397eadbeSBram Moolenaar  call assert_equal(['õ', 'ũ', '?'], getline(line('.')-2,line('.')))
273397eadbeSBram Moolenaar  " Macron
274397eadbeSBram Moolenaar  call Put_Dig_BS("o","-")
275397eadbeSBram Moolenaar  call Put_Dig_BS("-","u")
276397eadbeSBram Moolenaar  call Put_Dig_BS("z","-") " not defined
277397eadbeSBram Moolenaar  call assert_equal(['ō', 'ū', '-'], getline(line('.')-2,line('.')))
278397eadbeSBram Moolenaar  " Breve
279397eadbeSBram Moolenaar  call Put_Dig_BS("o","(")
280397eadbeSBram Moolenaar  call Put_Dig_BS("(","u")
281397eadbeSBram Moolenaar  call Put_Dig_BS("z","(") " not defined
282397eadbeSBram Moolenaar  call assert_equal(['ŏ', 'ŭ', '('], getline(line('.')-2,line('.')))
283397eadbeSBram Moolenaar  " Dot above
284397eadbeSBram Moolenaar  call Put_Dig_BS("b",".")
285397eadbeSBram Moolenaar  call Put_Dig_BS(".","e")
286397eadbeSBram Moolenaar  call Put_Dig_BS("a",".") " not defined
287397eadbeSBram Moolenaar  call assert_equal(['ḃ', 'ė', '.'], getline(line('.')-2,line('.')))
2884b96df5aSBram Moolenaar  " Diaeresis
289397eadbeSBram Moolenaar  call Put_Dig_BS("a",":")
290397eadbeSBram Moolenaar  call Put_Dig_BS(":","u")
291397eadbeSBram Moolenaar  call Put_Dig_BS("b",":") " not defined
292397eadbeSBram Moolenaar  call assert_equal(['ä', 'ü', ':'], getline(line('.')-2,line('.')))
293397eadbeSBram Moolenaar  " Cedilla
294397eadbeSBram Moolenaar  call Put_Dig_BS("'",",")
295397eadbeSBram Moolenaar  call Put_Dig_BS(",","C")
296397eadbeSBram Moolenaar  call Put_Dig_BS("b",",") " not defined
297397eadbeSBram Moolenaar  call assert_equal(['¸', 'Ç', ','], getline(line('.')-2,line('.')))
298397eadbeSBram Moolenaar  " Underline
299397eadbeSBram Moolenaar  call Put_Dig_BS("B","_")
300397eadbeSBram Moolenaar  call Put_Dig_BS("_","t")
301397eadbeSBram Moolenaar  call Put_Dig_BS("a","_") " not defined
302397eadbeSBram Moolenaar  call assert_equal(['Ḇ', 'ṯ', '_'], getline(line('.')-2,line('.')))
303397eadbeSBram Moolenaar  " Stroke
304397eadbeSBram Moolenaar  call Put_Dig_BS("j","/")
305397eadbeSBram Moolenaar  call Put_Dig_BS("/","l")
306397eadbeSBram Moolenaar  call Put_Dig_BS("b","/") " not defined
307397eadbeSBram Moolenaar  call assert_equal(['/', 'ł', '/'], getline(line('.')-2,line('.')))
308397eadbeSBram Moolenaar  " Double acute
309397eadbeSBram Moolenaar  call Put_Dig_BS('O','"')
310397eadbeSBram Moolenaar  call Put_Dig_BS('"','y')
311397eadbeSBram Moolenaar  call Put_Dig_BS('b','"') " not defined
312397eadbeSBram Moolenaar  call assert_equal(['Ő', 'ÿ', '"'], getline(line('.')-2,line('.')))
313397eadbeSBram Moolenaar  " Ogonek
314397eadbeSBram Moolenaar  call Put_Dig_BS('u',';')
315397eadbeSBram Moolenaar  call Put_Dig_BS(';','E')
316397eadbeSBram Moolenaar  call Put_Dig_BS('b',';') " not defined
317397eadbeSBram Moolenaar  call assert_equal(['ų', 'Ę', ';'], getline(line('.')-2,line('.')))
318397eadbeSBram Moolenaar  " Caron
319397eadbeSBram Moolenaar  call Put_Dig_BS('u','<')
320397eadbeSBram Moolenaar  call Put_Dig_BS('<','E')
321397eadbeSBram Moolenaar  call Put_Dig_BS('b','<') " not defined
322397eadbeSBram Moolenaar  call assert_equal(['ǔ', 'Ě', '<'], getline(line('.')-2,line('.')))
323397eadbeSBram Moolenaar  " Ring above
324397eadbeSBram Moolenaar  call Put_Dig_BS('u','0')
325397eadbeSBram Moolenaar  call Put_Dig_BS('0','E') " not defined
326397eadbeSBram Moolenaar  call Put_Dig_BS('b','0') " not defined
327397eadbeSBram Moolenaar  call assert_equal(['ů', 'E', '0'], getline(line('.')-2,line('.')))
328397eadbeSBram Moolenaar  " Hook
329397eadbeSBram Moolenaar  call Put_Dig_BS('u','2')
330397eadbeSBram Moolenaar  call Put_Dig_BS('2','E')
331397eadbeSBram Moolenaar  call Put_Dig_BS('b','2') " not defined
332397eadbeSBram Moolenaar  call assert_equal(['ủ', 'Ẻ', '2'], getline(line('.')-2,line('.')))
333397eadbeSBram Moolenaar  " Horn
334397eadbeSBram Moolenaar  call Put_Dig_BS('u','9')
335397eadbeSBram Moolenaar  call Put_Dig_BS('9','E') " not defined
336397eadbeSBram Moolenaar  call Put_Dig_BS('b','9') " not defined
337397eadbeSBram Moolenaar  call assert_equal(['ư', 'E', '9'], getline(line('.')-2,line('.')))
338397eadbeSBram Moolenaar  " Cyrillic
339397eadbeSBram Moolenaar  call Put_Dig_BS('u','=')
340397eadbeSBram Moolenaar  call Put_Dig_BS('=','b')
341397eadbeSBram Moolenaar  call Put_Dig_BS('=','_')
342397eadbeSBram Moolenaar  call assert_equal(['у', 'б', '〓'], getline(line('.')-2,line('.')))
343397eadbeSBram Moolenaar  " Greek
344397eadbeSBram Moolenaar  call Put_Dig_BS('u','*')
345397eadbeSBram Moolenaar  call Put_Dig_BS('*','b')
346397eadbeSBram Moolenaar  call Put_Dig_BS('*','_')
347397eadbeSBram Moolenaar  call assert_equal(['υ', 'β', '々'], getline(line('.')-2,line('.')))
348397eadbeSBram Moolenaar  " Greek/Cyrillic special
349397eadbeSBram Moolenaar  call Put_Dig_BS('u','%')
350397eadbeSBram Moolenaar  call Put_Dig_BS('%','b') " not defined
351397eadbeSBram Moolenaar  call Put_Dig_BS('%','_') " not defined
352397eadbeSBram Moolenaar  call assert_equal(['ύ', 'b', '_'], getline(line('.')-2,line('.')))
353397eadbeSBram Moolenaar  " Arabic
354397eadbeSBram Moolenaar  call Put_Dig_BS('u','+')
355397eadbeSBram Moolenaar  call Put_Dig_BS('+','b')
356397eadbeSBram Moolenaar  call Put_Dig_BS('+','_') " japanese industrial symbol
357397eadbeSBram Moolenaar  call assert_equal(['+', 'ب', '〄'], getline(line('.')-2,line('.')))
358397eadbeSBram Moolenaar  " Hebrew
359397eadbeSBram Moolenaar  call Put_Dig_BS('Q','+')
360397eadbeSBram Moolenaar  call Put_Dig_BS('+','B')
361397eadbeSBram Moolenaar  call Put_Dig_BS('+','X')
362397eadbeSBram Moolenaar  call assert_equal(['ק', 'ב', 'ח'], getline(line('.')-2,line('.')))
363397eadbeSBram Moolenaar  " Latin
364397eadbeSBram Moolenaar  call Put_Dig_BS('a','3')
365397eadbeSBram Moolenaar  call Put_Dig_BS('A','3')
366397eadbeSBram Moolenaar  call Put_Dig_BS('3','X')
367397eadbeSBram Moolenaar  call assert_equal(['ǣ', 'Ǣ', 'X'], getline(line('.')-2,line('.')))
368397eadbeSBram Moolenaar  " Bopomofo
369397eadbeSBram Moolenaar  call Put_Dig_BS('a','4')
370397eadbeSBram Moolenaar  call Put_Dig_BS('A','4')
371397eadbeSBram Moolenaar  call Put_Dig_BS('4','X')
372397eadbeSBram Moolenaar  call assert_equal(['ㄚ', '4', 'X'], getline(line('.')-2,line('.')))
373397eadbeSBram Moolenaar  " Hiragana
374397eadbeSBram Moolenaar  call Put_Dig_BS('a','5')
375397eadbeSBram Moolenaar  call Put_Dig_BS('A','5')
376397eadbeSBram Moolenaar  call Put_Dig_BS('5','X')
377397eadbeSBram Moolenaar  call assert_equal(['あ', 'ぁ', 'X'], getline(line('.')-2,line('.')))
378397eadbeSBram Moolenaar  " Katakana
379397eadbeSBram Moolenaar  call Put_Dig_BS('a','6')
380397eadbeSBram Moolenaar  call Put_Dig_BS('A','6')
381397eadbeSBram Moolenaar  call Put_Dig_BS('6','X')
382397eadbeSBram Moolenaar  call assert_equal(['ァ', 'ア', 'X'], getline(line('.')-2,line('.')))
383397eadbeSBram Moolenaar  " Superscripts
384397eadbeSBram Moolenaar  call Put_Dig_BS('1','S')
385397eadbeSBram Moolenaar  call Put_Dig_BS('2','S')
386397eadbeSBram Moolenaar  call Put_Dig_BS('3','S')
387397eadbeSBram Moolenaar  call assert_equal(['¹', '²', '³'], getline(line('.')-2,line('.')))
388397eadbeSBram Moolenaar  " Subscripts
389397eadbeSBram Moolenaar  call Put_Dig_BS('1','s')
390397eadbeSBram Moolenaar  call Put_Dig_BS('2','s')
391397eadbeSBram Moolenaar  call Put_Dig_BS('3','s')
392397eadbeSBram Moolenaar  call assert_equal(['₁', '₂', '₃'], getline(line('.')-2,line('.')))
393397eadbeSBram Moolenaar  " Eszet (only lowercase)
394397eadbeSBram Moolenaar  call Put_Dig_BS("s","s")
395397eadbeSBram Moolenaar  call Put_Dig_BS("S","S") " start of string
396397eadbeSBram Moolenaar  call assert_equal(["ß", "˜"], getline(line('.')-1,line('.')))
397397eadbeSBram Moolenaar  " High bit set (different from <c-k>)
398397eadbeSBram Moolenaar  call Put_Dig_BS("a"," ")
399397eadbeSBram Moolenaar  call Put_Dig_BS(" ","A")
400397eadbeSBram Moolenaar  call assert_equal([' ', 'A'], getline(line('.')-1,line('.')))
401397eadbeSBram Moolenaar  " Escape is not part of a digraph (different from <c-k>)
402397eadbeSBram Moolenaar  call Put_Dig_BS("a","\<esc>")
403397eadbeSBram Moolenaar  call Put_Dig_BS("\<esc>","A")
404397eadbeSBram Moolenaar  call assert_equal(['', ''], getline(line('.')-1,line('.')))
405397eadbeSBram Moolenaar  " define some custom digraphs
406397eadbeSBram Moolenaar  " old: 00 ∞
407397eadbeSBram Moolenaar  " old: el l
408397eadbeSBram Moolenaar  digraph 00 9216
409397eadbeSBram Moolenaar  digraph el 0252
410397eadbeSBram Moolenaar  call Put_Dig_BS("0","0")
411397eadbeSBram Moolenaar  call Put_Dig_BS("e","l")
412397eadbeSBram Moolenaar  " Reset digraphs
413397eadbeSBram Moolenaar  digraph 00 8734
414397eadbeSBram Moolenaar  digraph el 108
415397eadbeSBram Moolenaar  call Put_Dig_BS("0","0")
416397eadbeSBram Moolenaar  call Put_Dig_BS("e","l")
417397eadbeSBram Moolenaar  call assert_equal(['␀', 'ü', '∞', 'l'], getline(line('.')-3,line('.')))
418397eadbeSBram Moolenaar  set nodigraph ww&vim
419397eadbeSBram Moolenaar  bw!
420397eadbeSBram Moolenaarendfunc
421397eadbeSBram Moolenaar
4225f73ef8dSBram Moolenaarfunc Test_digraphs_output()
423e25bc5abSBram Moolenaar  new
424e25bc5abSBram Moolenaar  let out = execute(':digraph')
425e25bc5abSBram Moolenaar  call assert_equal('Eu €  8364',  matchstr(out, '\C\<Eu\D*8364\>'))
426e25bc5abSBram Moolenaar  call assert_equal('=e €  8364',  matchstr(out, '\C=e\D*8364\>'))
427e25bc5abSBram Moolenaar  call assert_equal('=R ₽  8381',  matchstr(out, '\C=R\D*8381\>'))
428e25bc5abSBram Moolenaar  call assert_equal('=P ₽  8381',  matchstr(out, '\C=P\D*8381\>'))
429e25bc5abSBram Moolenaar  call assert_equal('o: ö  246',   matchstr(out, '\C\<o:\D*246\>'))
430e25bc5abSBram Moolenaar  call assert_equal('v4 ㄪ 12586', matchstr(out, '\C\<v4\D*12586\>'))
431e25bc5abSBram Moolenaar  call assert_equal("'0 ˚  730",   matchstr(out, '\C''0\D*730\>'))
432e25bc5abSBram Moolenaar  call assert_equal('Z% Ж  1046',  matchstr(out, '\C\<Z%\D*1046\>'))
433e25bc5abSBram Moolenaar  call assert_equal('u- ū  363',   matchstr(out, '\C\<u-\D*363\>'))
434e25bc5abSBram Moolenaar  call assert_equal('SH ^A   1',   matchstr(out, '\C\<SH\D*1\>'))
435e25bc5abSBram Moolenaar  bw!
436e25bc5abSBram Moolenaarendfunc
437e25bc5abSBram Moolenaar
4385f73ef8dSBram Moolenaarfunc Test_loadkeymap()
439f3621359SBram Moolenaar  if !has('keymap')
440f3621359SBram Moolenaar    return
441f3621359SBram Moolenaar  endif
442e25bc5abSBram Moolenaar  new
443e25bc5abSBram Moolenaar  set keymap=czech
444e25bc5abSBram Moolenaar  set iminsert=0
445e25bc5abSBram Moolenaar  call feedkeys("o|\<c-^>|01234567890|\<esc>", 'tx')
446e25bc5abSBram Moolenaar  call assert_equal("|'é+ěščřžýáíé'", getline('.'))
447e25bc5abSBram Moolenaar  " reset keymap and encoding option
448e25bc5abSBram Moolenaar  set keymap=
449e25bc5abSBram Moolenaar  bw!
450e25bc5abSBram Moolenaarendfunc
451e25bc5abSBram Moolenaar
4525f73ef8dSBram Moolenaarfunc Test_digraph_cmndline()
453e25bc5abSBram Moolenaar  " Create digraph on commandline
454*91ffc8a5SBram Moolenaar  call feedkeys(":\"\<c-k>Eu\<cr>", 'xt')
455*91ffc8a5SBram Moolenaar  call assert_equal('"€', @:)
456*91ffc8a5SBram Moolenaar
457*91ffc8a5SBram Moolenaar  " Canceling a CTRL-K on the cmdline
458*91ffc8a5SBram Moolenaar  call feedkeys(":\"a\<c-k>\<esc>b\<cr>", 'xt')
459*91ffc8a5SBram Moolenaar  call assert_equal('"ab', @:)
460e25bc5abSBram Moolenaarendfunc
461e25bc5abSBram Moolenaar
4625f73ef8dSBram Moolenaarfunc Test_show_digraph()
4635f73ef8dSBram Moolenaar  new
4645f73ef8dSBram Moolenaar  call Put_Dig("e=")
4655f73ef8dSBram Moolenaar  call assert_equal("\n<е> 1077, Hex 0435, Oct 2065, Digr e=", execute('ascii'))
4665f73ef8dSBram Moolenaar  bwipe!
4675f73ef8dSBram Moolenaarendfunc
4685f73ef8dSBram Moolenaar
469bc5020aaSBram Moolenaarfunc Test_show_digraph_cp1251()
470bc5020aaSBram Moolenaar  new
471bc5020aaSBram Moolenaar  set encoding=cp1251
472bc5020aaSBram Moolenaar  call Put_Dig("='")
473bc5020aaSBram Moolenaar  call assert_equal("\n<\xfa>  <|z>  <M-z>  250,  Hex fa,  Oct 372, Digr ='", execute('ascii'))
474bc5020aaSBram Moolenaar  set encoding=utf-8
475bc5020aaSBram Moolenaar  bwipe!
476bc5020aaSBram Moolenaarendfunc
477bc5020aaSBram Moolenaar
4789e4d8215SBram Moolenaar" vim: shiftwidth=2 sts=2 expandtab
479