comparison src/testdir/test_arabic.vim @ 11004:f91d4c95b696 v8.0.0391

patch 8.0.0391: arabic support is verbose and not well tested commit https://github.com/vim/vim/commit/5f53dd3f747711be90879fa2f22a207970b86750 Author: Bram Moolenaar <Bram@vim.org> Date: Wed Mar 1 14:02:30 2017 +0100 patch 8.0.0391: arabic support is verbose and not well tested Problem: Arabic support is verbose and not well tested. Solution: Simplify the code. Add more tests.
author Christian Brabandt <cb@256bit.org>
date Wed, 01 Mar 2017 14:15:04 +0100
parents 307f9ae2a7fb
children 3fa27b97d263
comparison
equal deleted inserted replaced
11003:bf484fd6443a 11004:f91d4c95b696
95 call assert_equal(['U+0633'], s:get_chars(1)) 95 call assert_equal(['U+0633'], s:get_chars(1))
96 set arabic& 96 set arabic&
97 bwipe! 97 bwipe!
98 endfunc 98 endfunc
99 99
100 " Values from src/arabic.h (not all used yet)
101 let s:a_COMMA = "\u060C"
102 let s:a_SEMICOLON = "\u061B"
103 let s:a_QUESTION = "\u061F"
104 let s:a_HAMZA = "\u0621"
105 let s:a_ALEF_MADDA = "\u0622"
106 let s:a_ALEF_HAMZA_ABOVE = "\u0623"
107 let s:a_WAW_HAMZA = "\u0624"
108 let s:a_ALEF_HAMZA_BELOW = "\u0625"
100 let s:a_YEH_HAMZA = "\u0626" 109 let s:a_YEH_HAMZA = "\u0626"
110 let s:a_ALEF = "\u0627"
111 let s:a_BEH = "\u0628"
112 let s:a_TEH_MARBUTA = "\u0629"
113 let s:a_TEH = "\u062a"
114 let s:a_THEH = "\u062b"
115 let s:a_JEEM = "\u062c"
116 let s:a_HAH = "\u062d"
117 let s:a_KHAH = "\u062e"
118 let s:a_DAL = "\u062f"
119 let s:a_THAL = "\u0630"
120 let s:a_REH = "\u0631"
121 let s:a_ZAIN = "\u0632"
122 let s:a_SEEN = "\u0633"
123 let s:a_SHEEN = "\u0634"
124 let s:a_SAD = "\u0635"
125 let s:a_DAD = "\u0636"
126 let s:a_TAH = "\u0637"
127 let s:a_ZAH = "\u0638"
128 let s:a_AIN = "\u0639"
129 let s:a_GHAIN = "\u063a"
130 let s:a_TATWEEL = "\u0640"
131 let s:a_FEH = "\u0641"
132 let s:a_QAF = "\u0642"
133 let s:a_KAF = "\u0643"
134 let s:a_LAM = "\u0644"
135 let s:a_MEEM = "\u0645"
136 let s:a_NOON = "\u0646"
137 let s:a_HEH = "\u0647"
138 let s:a_WAW = "\u0648"
139 let s:a_ALEF_MAKSURA = "\u0649"
140 let s:a_YEH = "\u064a"
141
142 let s:a_FATHATAN = "\u064b"
143 let s:a_DAMMATAN = "\u064c"
144 let s:a_KASRATAN = "\u064d"
145 let s:a_FATHA = "\u064e"
146 let s:a_DAMMA = "\u064f"
147 let s:a_KASRA = "\u0650"
148 let s:a_SHADDA = "\u0651"
149 let s:a_SUKUN = "\u0652"
150
151 let s:a_MADDA_ABOVE = "\u0653"
152 let s:a_HAMZA_ABOVE = "\u0654"
153 let s:a_HAMZA_BELOW = "\u0655"
154
155 let s:a_ZERO = "\u0660"
156 let s:a_ONE = "\u0661"
157 let s:a_TWO = "\u0662"
158 let s:a_THREE = "\u0663"
159 let s:a_FOUR = "\u0664"
160 let s:a_FIVE = "\u0665"
161 let s:a_SIX = "\u0666"
162 let s:a_SEVEN = "\u0667"
163 let s:a_EIGHT = "\u0668"
164 let s:a_NINE = "\u0669"
165 let s:a_PERCENT = "\u066a"
166 let s:a_DECIMAL = "\u066b"
167 let s:a_THOUSANDS = "\u066c"
168 let s:a_STAR = "\u066d"
169 let s:a_MINI_ALEF = "\u0670"
170
171 let s:a_s_FATHATAN = "\ufe70"
172 let s:a_m_TATWEEL_FATHATAN = "\ufe71"
173 let s:a_s_DAMMATAN = "\ufe72"
174
175 let s:a_s_KASRATAN = "\ufe74"
176
177 let s:a_s_FATHA = "\ufe76"
178 let s:a_m_FATHA = "\ufe77"
179 let s:a_s_DAMMA = "\ufe78"
180 let s:a_m_DAMMA = "\ufe79"
181 let s:a_s_KASRA = "\ufe7a"
182 let s:a_m_KASRA = "\ufe7b"
183 let s:a_s_SHADDA = "\ufe7c"
184 let s:a_m_SHADDA = "\ufe7d"
185 let s:a_s_SUKUN = "\ufe7e"
186 let s:a_m_SUKUN = "\ufe7f"
187
188 let s:a_s_HAMZA = "\ufe80"
189 let s:a_s_ALEF_MADDA = "\ufe81"
190 let s:a_f_ALEF_MADDA = "\ufe82"
191 let s:a_s_ALEF_HAMZA_ABOVE = "\ufe83"
192 let s:a_f_ALEF_HAMZA_ABOVE = "\ufe84"
193 let s:a_s_WAW_HAMZA = "\ufe85"
194 let s:a_f_WAW_HAMZA = "\ufe86"
195 let s:a_s_ALEF_HAMZA_BELOW = "\ufe87"
196 let s:a_f_ALEF_HAMZA_BELOW = "\ufe88"
197 let s:a_s_YEH_HAMZA = "\ufe89"
198 let s:a_f_YEH_HAMZA = "\ufe8a"
101 let s:a_i_YEH_HAMZA = "\ufe8b" 199 let s:a_i_YEH_HAMZA = "\ufe8b"
102 200 let s:a_m_YEH_HAMZA = "\ufe8c"
103 let s:a_HAMZA = "\u0621" 201 let s:a_s_ALEF = "\ufe8d"
104 let s:a_s_HAMZA = "\ufe80" 202 let s:a_f_ALEF = "\ufe8e"
105 203 let s:a_s_BEH = "\ufe8f"
106 let s:a_ALEF_MADDA = "\u0622" 204 let s:a_f_BEH = "\ufe90"
107 let s:a_s_ALEF_MADDA = "\ufe81" 205 let s:a_i_BEH = "\ufe91"
108 206 let s:a_m_BEH = "\ufe92"
109 let s:a_ALEF_HAMZA_ABOVE = "\u0623" 207 let s:a_s_TEH_MARBUTA = "\ufe93"
110 let s:a_s_ALEF_HAMZA_ABOVE = "\ufe83" 208 let s:a_f_TEH_MARBUTA = "\ufe94"
111 209 let s:a_s_TEH = "\ufe95"
112 let s:a_GHAIN = "\u063a" 210 let s:a_f_TEH = "\ufe96"
211 let s:a_i_TEH = "\ufe97"
212 let s:a_m_TEH = "\ufe98"
213 let s:a_s_THEH = "\ufe99"
214 let s:a_f_THEH = "\ufe9a"
215 let s:a_i_THEH = "\ufe9b"
216 let s:a_m_THEH = "\ufe9c"
217 let s:a_s_JEEM = "\ufe9d"
218 let s:a_f_JEEM = "\ufe9e"
219 let s:a_i_JEEM = "\ufe9f"
220 let s:a_m_JEEM = "\ufea0"
221 let s:a_s_HAH = "\ufea1"
222 let s:a_f_HAH = "\ufea2"
223 let s:a_i_HAH = "\ufea3"
224 let s:a_m_HAH = "\ufea4"
225 let s:a_s_KHAH = "\ufea5"
226 let s:a_f_KHAH = "\ufea6"
227 let s:a_i_KHAH = "\ufea7"
228 let s:a_m_KHAH = "\ufea8"
229 let s:a_s_DAL = "\ufea9"
230 let s:a_f_DAL = "\ufeaa"
231 let s:a_s_THAL = "\ufeab"
232 let s:a_f_THAL = "\ufeac"
233 let s:a_s_REH = "\ufead"
234 let s:a_f_REH = "\ufeae"
235 let s:a_s_ZAIN = "\ufeaf"
236 let s:a_f_ZAIN = "\ufeb0"
237 let s:a_s_SEEN = "\ufeb1"
238 let s:a_f_SEEN = "\ufeb2"
239 let s:a_i_SEEN = "\ufeb3"
240 let s:a_m_SEEN = "\ufeb4"
241 let s:a_s_SHEEN = "\ufeb5"
242 let s:a_f_SHEEN = "\ufeb6"
243 let s:a_i_SHEEN = "\ufeb7"
244 let s:a_m_SHEEN = "\ufeb8"
245 let s:a_s_SAD = "\ufeb9"
246 let s:a_f_SAD = "\ufeba"
247 let s:a_i_SAD = "\ufebb"
248 let s:a_m_SAD = "\ufebc"
249 let s:a_s_DAD = "\ufebd"
250 let s:a_f_DAD = "\ufebe"
251 let s:a_i_DAD = "\ufebf"
252 let s:a_m_DAD = "\ufec0"
253 let s:a_s_TAH = "\ufec1"
254 let s:a_f_TAH = "\ufec2"
255 let s:a_i_TAH = "\ufec3"
256 let s:a_m_TAH = "\ufec4"
257 let s:a_s_ZAH = "\ufec5"
258 let s:a_f_ZAH = "\ufec6"
259 let s:a_i_ZAH = "\ufec7"
260 let s:a_m_ZAH = "\ufec8"
261 let s:a_s_AIN = "\ufec9"
262 let s:a_f_AIN = "\ufeca"
263 let s:a_i_AIN = "\ufecb"
264 let s:a_m_AIN = "\ufecc"
265 let s:a_s_GHAIN = "\ufecd"
113 let s:a_f_GHAIN = "\ufece" 266 let s:a_f_GHAIN = "\ufece"
114 let s:a_s_GHAIN = "\ufecd" 267 let s:a_i_GHAIN = "\ufecf"
268 let s:a_m_GHAIN = "\ufed0"
269 let s:a_s_FEH = "\ufed1"
270 let s:a_f_FEH = "\ufed2"
271 let s:a_i_FEH = "\ufed3"
272 let s:a_m_FEH = "\ufed4"
273 let s:a_s_QAF = "\ufed5"
274 let s:a_f_QAF = "\ufed6"
275 let s:a_i_QAF = "\ufed7"
276 let s:a_m_QAF = "\ufed8"
277 let s:a_s_KAF = "\ufed9"
278 let s:a_f_KAF = "\ufeda"
279 let s:a_i_KAF = "\ufedb"
280 let s:a_m_KAF = "\ufedc"
281 let s:a_s_LAM = "\ufedd"
282 let s:a_f_LAM = "\ufede"
283 let s:a_i_LAM = "\ufedf"
284 let s:a_m_LAM = "\ufee0"
285 let s:a_s_MEEM = "\ufee1"
286 let s:a_f_MEEM = "\ufee2"
287 let s:a_i_MEEM = "\ufee3"
288 let s:a_m_MEEM = "\ufee4"
289 let s:a_s_NOON = "\ufee5"
290 let s:a_f_NOON = "\ufee6"
291 let s:a_i_NOON = "\ufee7"
292 let s:a_m_NOON = "\ufee8"
293 let s:a_s_HEH = "\ufee9"
294 let s:a_f_HEH = "\ufeea"
295 let s:a_i_HEH = "\ufeeb"
296 let s:a_m_HEH = "\ufeec"
297 let s:a_s_WAW = "\ufeed"
298 let s:a_f_WAW = "\ufeee"
299 let s:a_s_ALEF_MAKSURA = "\ufeef"
300 let s:a_f_ALEF_MAKSURA = "\ufef0"
301 let s:a_s_YEH = "\ufef1"
302 let s:a_f_YEH = "\ufef2"
303 let s:a_i_YEH = "\ufef3"
304 let s:a_m_YEH = "\ufef4"
305 let s:a_s_LAM_ALEF_MADDA_ABOVE = "\ufef5"
306 let s:a_f_LAM_ALEF_MADDA_ABOVE = "\ufef6"
307 let s:a_s_LAM_ALEF_HAMZA_ABOVE = "\ufef7"
308 let s:a_f_LAM_ALEF_HAMZA_ABOVE = "\ufef8"
309 let s:a_s_LAM_ALEF_HAMZA_BELOW = "\ufef9"
310 let s:a_f_LAM_ALEF_HAMZA_BELOW = "\ufefa"
311 let s:a_s_LAM_ALEF = "\ufefb"
312 let s:a_f_LAM_ALEF = "\ufefc"
313
314 let s:a_BYTE_ORDER_MARK = "\ufeff"
115 315
116 func Test_shape_initial() 316 func Test_shape_initial()
117 new 317 new
118 set arabicshape 318 set arabicshape
119 319
120 " Shaping arabic {testchar} non-arabic Uses chg_c_a2i(). 320 " Shaping arabic {testchar} non-arabic Tests chg_c_a2i().
121 " pair[0] = testchar, pair[1] = next-result, pair[2] = current-result 321 " pair[0] = testchar, pair[1] = next-result, pair[2] = current-result
122 for pair in [[s:a_YEH_HAMZA, s:a_f_GHAIN, s:a_i_YEH_HAMZA], 322 for pair in [[s:a_YEH_HAMZA, s:a_f_GHAIN, s:a_i_YEH_HAMZA],
123 \ [s:a_HAMZA, s:a_s_GHAIN, s:a_s_HAMZA], 323 \ [s:a_HAMZA, s:a_s_GHAIN, s:a_s_HAMZA],
124 \ [s:a_ALEF_MADDA, s:a_s_GHAIN, s:a_s_ALEF_MADDA], 324 \ [s:a_ALEF_MADDA, s:a_s_GHAIN, s:a_s_ALEF_MADDA],
125 \ [s:a_ALEF_HAMZA_ABOVE, s:a_s_GHAIN, s:a_s_ALEF_HAMZA_ABOVE], 325 \ [s:a_ALEF_HAMZA_ABOVE, s:a_s_GHAIN, s:a_s_ALEF_HAMZA_ABOVE],
326 \ [s:a_WAW_HAMZA, s:a_s_GHAIN, s:a_s_WAW_HAMZA],
327 \ [s:a_ALEF_HAMZA_BELOW, s:a_s_GHAIN, s:a_s_ALEF_HAMZA_BELOW],
328 \ [s:a_ALEF, s:a_s_GHAIN, s:a_s_ALEF],
329 \ [s:a_TEH_MARBUTA, s:a_s_GHAIN, s:a_s_TEH_MARBUTA],
330 \ [s:a_DAL, s:a_s_GHAIN, s:a_s_DAL],
331 \ [s:a_THAL, s:a_s_GHAIN, s:a_s_THAL],
332 \ [s:a_REH, s:a_s_GHAIN, s:a_s_REH],
333 \ [s:a_ZAIN, s:a_s_GHAIN, s:a_s_ZAIN],
334 \ [s:a_TATWEEL, s:a_f_GHAIN, s:a_TATWEEL],
335 \ [s:a_WAW, s:a_s_GHAIN, s:a_s_WAW],
336 \ [s:a_ALEF_MAKSURA, s:a_s_GHAIN, s:a_s_ALEF_MAKSURA],
337 \ [s:a_BEH, s:a_f_GHAIN, s:a_i_BEH],
338 \ [s:a_TEH, s:a_f_GHAIN, s:a_i_TEH],
339 \ [s:a_THEH, s:a_f_GHAIN, s:a_i_THEH],
340 \ [s:a_JEEM, s:a_f_GHAIN, s:a_i_JEEM],
341 \ [s:a_HAH, s:a_f_GHAIN, s:a_i_HAH],
342 \ [s:a_KHAH, s:a_f_GHAIN, s:a_i_KHAH],
343 \ [s:a_SEEN, s:a_f_GHAIN, s:a_i_SEEN],
344 \ [s:a_SHEEN, s:a_f_GHAIN, s:a_i_SHEEN],
345 \ [s:a_SAD, s:a_f_GHAIN, s:a_i_SAD],
346 \ [s:a_DAD, s:a_f_GHAIN, s:a_i_DAD],
347 \ [s:a_TAH, s:a_f_GHAIN, s:a_i_TAH],
348 \ [s:a_ZAH, s:a_f_GHAIN, s:a_i_ZAH],
349 \ [s:a_AIN, s:a_f_GHAIN, s:a_i_AIN],
350 \ [s:a_GHAIN, s:a_f_GHAIN, s:a_i_GHAIN],
351 \ [s:a_FEH, s:a_f_GHAIN, s:a_i_FEH],
352 \ [s:a_QAF, s:a_f_GHAIN, s:a_i_QAF],
353 \ [s:a_KAF, s:a_f_GHAIN, s:a_i_KAF],
354 \ [s:a_LAM, s:a_f_GHAIN, s:a_i_LAM],
355 \ [s:a_MEEM, s:a_f_GHAIN, s:a_i_MEEM],
356 \ [s:a_NOON, s:a_f_GHAIN, s:a_i_NOON],
357 \ [s:a_HEH, s:a_f_GHAIN, s:a_i_HEH],
358 \ [s:a_YEH, s:a_f_GHAIN, s:a_i_YEH],
126 \ ] 359 \ ]
127 call setline(1, s:a_GHAIN . pair[0] . ' ') 360 call setline(1, s:a_GHAIN . pair[0] . ' ')
128 call assert_equal([pair[1] . pair[2] . ' '], ScreenLines(1, 3)) 361 call assert_equal([pair[1] . pair[2] . ' '], ScreenLines(1, 3))
129 endfor 362 endfor
130 363
131 set arabicshape& 364 set arabicshape&
132 bwipe! 365 bwipe!
133 endfunc 366 endfunc
367
368 func Test_shape_isolated()
369 new
370 set arabicshape
371
372 " Shaping non-arabic {testchar} non-arabic Tests chg_c_a2s().
373 " pair[0] = testchar, pair[1] = current-result
374 for pair in [[s:a_HAMZA, s:a_s_HAMZA],
375 \ [s:a_ALEF_MADDA, s:a_s_ALEF_MADDA],
376 \ [s:a_ALEF_HAMZA_ABOVE, s:a_s_ALEF_HAMZA_ABOVE],
377 \ [s:a_WAW_HAMZA, s:a_s_WAW_HAMZA],
378 \ [s:a_ALEF_HAMZA_BELOW, s:a_s_ALEF_HAMZA_BELOW],
379 \ [s:a_YEH_HAMZA, s:a_s_YEH_HAMZA],
380 \ [s:a_ALEF, s:a_s_ALEF],
381 \ [s:a_TEH_MARBUTA, s:a_s_TEH_MARBUTA],
382 \ [s:a_DAL, s:a_s_DAL],
383 \ [s:a_THAL, s:a_s_THAL],
384 \ [s:a_REH, s:a_s_REH],
385 \ [s:a_ZAIN, s:a_s_ZAIN],
386 \ [s:a_TATWEEL, s:a_TATWEEL],
387 \ [s:a_WAW, s:a_s_WAW],
388 \ [s:a_ALEF_MAKSURA, s:a_s_ALEF_MAKSURA],
389 \ [s:a_BEH, s:a_s_BEH],
390 \ [s:a_TEH, s:a_s_TEH],
391 \ [s:a_THEH, s:a_s_THEH],
392 \ [s:a_JEEM, s:a_s_JEEM],
393 \ [s:a_HAH, s:a_s_HAH],
394 \ [s:a_KHAH, s:a_s_KHAH],
395 \ [s:a_SEEN, s:a_s_SEEN],
396 \ [s:a_SHEEN, s:a_s_SHEEN],
397 \ [s:a_SAD, s:a_s_SAD],
398 \ [s:a_DAD, s:a_s_DAD],
399 \ [s:a_TAH, s:a_s_TAH],
400 \ [s:a_ZAH, s:a_s_ZAH],
401 \ [s:a_AIN, s:a_s_AIN],
402 \ [s:a_GHAIN, s:a_s_GHAIN],
403 \ [s:a_FEH, s:a_s_FEH],
404 \ [s:a_QAF, s:a_s_QAF],
405 \ [s:a_KAF, s:a_s_KAF],
406 \ [s:a_LAM, s:a_s_LAM],
407 \ [s:a_MEEM, s:a_s_MEEM],
408 \ [s:a_NOON, s:a_s_NOON],
409 \ [s:a_HEH, s:a_s_HEH],
410 \ [s:a_YEH, s:a_s_YEH],
411 \ ]
412 call setline(1, ' ' . pair[0] . ' ')
413 call assert_equal([' ' . pair[1] . ' '], ScreenLines(1, 3))
414 endfor
415
416 set arabicshape&
417 bwipe!
418 endfunc
419
420 func Test_shape_medial()
421 new
422 set arabicshape
423
424 " Shaping arabic {testchar} arabic Tests chg_c_a2m().
425 " pair[0] = testchar, pair[1] = next-result, pair[2] = current-result,
426 " pair[3] = previous-result
427 for pair in [[s:a_HAMZA, s:a_s_GHAIN, s:a_s_HAMZA, s:a_s_BEH],
428 \[s:a_ALEF_MADDA, s:a_s_GHAIN, s:a_f_ALEF_MADDA, s:a_i_BEH],
429 \[s:a_ALEF_HAMZA_ABOVE, s:a_s_GHAIN, s:a_f_ALEF_HAMZA_ABOVE, s:a_i_BEH],
430 \[s:a_WAW_HAMZA, s:a_s_GHAIN, s:a_f_WAW_HAMZA, s:a_i_BEH],
431 \[s:a_ALEF_HAMZA_BELOW, s:a_s_GHAIN, s:a_f_ALEF_HAMZA_BELOW, s:a_i_BEH],
432 \[s:a_YEH_HAMZA, s:a_f_GHAIN, s:a_m_YEH_HAMZA, s:a_i_BEH],
433 \[s:a_ALEF, s:a_s_GHAIN, s:a_f_ALEF, s:a_i_BEH],
434 \[s:a_BEH, s:a_f_GHAIN, s:a_m_BEH, s:a_i_BEH],
435 \[s:a_TEH_MARBUTA, s:a_s_GHAIN, s:a_f_TEH_MARBUTA, s:a_i_BEH],
436 \[s:a_TEH, s:a_f_GHAIN, s:a_m_TEH, s:a_i_BEH],
437 \[s:a_THEH, s:a_f_GHAIN, s:a_m_THEH, s:a_i_BEH],
438 \[s:a_JEEM, s:a_f_GHAIN, s:a_m_JEEM, s:a_i_BEH],
439 \[s:a_HAH, s:a_f_GHAIN, s:a_m_HAH, s:a_i_BEH],
440 \[s:a_KHAH, s:a_f_GHAIN, s:a_m_KHAH, s:a_i_BEH],
441 \[s:a_DAL, s:a_s_GHAIN, s:a_f_DAL, s:a_i_BEH],
442 \[s:a_THAL, s:a_s_GHAIN, s:a_f_THAL, s:a_i_BEH],
443 \[s:a_REH, s:a_s_GHAIN, s:a_f_REH, s:a_i_BEH],
444 \[s:a_ZAIN, s:a_s_GHAIN, s:a_f_ZAIN, s:a_i_BEH],
445 \[s:a_SEEN, s:a_f_GHAIN, s:a_m_SEEN, s:a_i_BEH],
446 \[s:a_SHEEN, s:a_f_GHAIN, s:a_m_SHEEN, s:a_i_BEH],
447 \[s:a_SAD, s:a_f_GHAIN, s:a_m_SAD, s:a_i_BEH],
448 \[s:a_DAD, s:a_f_GHAIN, s:a_m_DAD, s:a_i_BEH],
449 \[s:a_TAH, s:a_f_GHAIN, s:a_m_TAH, s:a_i_BEH],
450 \[s:a_ZAH, s:a_f_GHAIN, s:a_m_ZAH, s:a_i_BEH],
451 \[s:a_AIN, s:a_f_GHAIN, s:a_m_AIN, s:a_i_BEH],
452 \[s:a_GHAIN, s:a_f_GHAIN, s:a_m_GHAIN, s:a_i_BEH],
453 \[s:a_TATWEEL, s:a_f_GHAIN, s:a_TATWEEL, s:a_i_BEH],
454 \[s:a_FEH, s:a_f_GHAIN, s:a_m_FEH, s:a_i_BEH],
455 \[s:a_QAF, s:a_f_GHAIN, s:a_m_QAF, s:a_i_BEH],
456 \[s:a_KAF, s:a_f_GHAIN, s:a_m_KAF, s:a_i_BEH],
457 \[s:a_LAM, s:a_f_GHAIN, s:a_m_LAM, s:a_i_BEH],
458 \[s:a_MEEM, s:a_f_GHAIN, s:a_m_MEEM, s:a_i_BEH],
459 \[s:a_NOON, s:a_f_GHAIN, s:a_m_NOON, s:a_i_BEH],
460 \[s:a_HEH, s:a_f_GHAIN, s:a_m_HEH, s:a_i_BEH],
461 \[s:a_WAW, s:a_s_GHAIN, s:a_f_WAW, s:a_i_BEH],
462 \[s:a_ALEF_MAKSURA, s:a_s_GHAIN, s:a_f_ALEF_MAKSURA, s:a_i_BEH],
463 \[s:a_YEH, s:a_f_GHAIN, s:a_m_YEH, s:a_i_BEH],
464 \ ]
465 call setline(1, s:a_GHAIN . pair[0] . s:a_BEH)
466 call assert_equal([pair[1] . pair[2] . pair[3]], ScreenLines(1, 3))
467 endfor
468
469 set arabicshape&
470 bwipe!
471 endfunc
472