diff options
Diffstat (limited to 'src/nvim/testdir/test_arabic.vim')
-rw-r--r-- | src/nvim/testdir/test_arabic.vim | 587 |
1 files changed, 0 insertions, 587 deletions
diff --git a/src/nvim/testdir/test_arabic.vim b/src/nvim/testdir/test_arabic.vim deleted file mode 100644 index 272937387d..0000000000 --- a/src/nvim/testdir/test_arabic.vim +++ /dev/null @@ -1,587 +0,0 @@ -" Simplistic testing of Arabic mode. -" NOTE: This just checks if the code works. If you know Arabic please add -" functional tests that check the shaping works with real text. - -source check.vim -CheckFeature arabic - -source view_util.vim - -" Return list of Unicode characters at line lnum. -" Combining characters are treated as a single item. -func s:get_chars(lnum) - call cursor(a:lnum, 1) - let chars = [] - let numchars = strchars(getline('.'), 1) - for i in range(1, numchars) - exe 'norm ' i . '|' - let c = execute('ascii') - let c = substitute(c, '\n\?<.\{-}Hex\s*', 'U+', 'g') - let c = substitute(c, ',\s*Oct\(al\)\=\s\d*\(, Digr ..\)\=', '', 'g') - call add(chars, c) - endfor - return chars -endfunc - -func Test_arabic_toggle() - set arabic - call assert_equal(1, &rightleft) - call assert_equal(1, &arabicshape) - call assert_equal('arabic', &keymap) - call assert_equal(1, &delcombine) - - set iminsert=1 imsearch=1 - set arabic& - call assert_equal(0, &rightleft) - call assert_equal(1, &arabicshape) - call assert_equal('arabic', &keymap) - call assert_equal(1, &delcombine) - call assert_equal(0, &iminsert) - call assert_equal(-1, &imsearch) - - set arabicshape& keymap= delcombine& -endfunc - -func Test_arabic_input() - new - set arabic - " Typing sghl in Arabic insert mode should show the - " Arabic word 'Salaam' i.e. 'peace', spelled: - " SEEN, LAM, ALEF, MEEM. - " See: https://www.mediawiki.org/wiki/VisualEditor/Typing/Right-to-left - call feedkeys('isghl!', 'tx') - call assert_match("^ *!\uFEE1\uFEFC\uFEB3$", ScreenLines(1, &columns)[0]) - call assert_equal([ - \ 'U+0633', - \ 'U+0644 U+0627', - \ 'U+0645', - \ 'U+21'], s:get_chars(1)) - - " Without shaping, it should give individual Arabic letters. - set noarabicshape - call assert_match("^ *!\u0645\u0627\u0644\u0633$", ScreenLines(1, &columns)[0]) - call assert_equal([ - \ 'U+0633', - \ 'U+0644', - \ 'U+0627', - \ 'U+0645', - \ 'U+21'], s:get_chars(1)) - - set arabic& arabicshape& - bwipe! -endfunc - -func Test_arabic_toggle_keymap() - new - set arabic - call feedkeys("i12\<C-^>12\<C-^>12", 'tx') - call assert_match("^ *٢١21٢١$", ScreenLines(1, &columns)[0]) - call assert_equal('١٢12١٢', getline('.')) - set arabic& - bwipe! -endfunc - -func Test_delcombine() - new - set arabic - call feedkeys("isghl\<BS>\<BS>", 'tx') - call assert_match("^ *\uFEDE\uFEB3$", ScreenLines(1, &columns)[0]) - call assert_equal(['U+0633', 'U+0644'], s:get_chars(1)) - - " Now the same with 'nodelcombine' - set nodelcombine - %d - call feedkeys("isghl\<BS>\<BS>", 'tx') - call assert_match("^ *\uFEB1$", ScreenLines(1, &columns)[0]) - call assert_equal(['U+0633'], s:get_chars(1)) - set arabic& - bwipe! -endfunc - -" Values from src/arabic.h (not all used yet) -let s:a_COMMA = "\u060C" -let s:a_SEMICOLON = "\u061B" -let s:a_QUESTION = "\u061F" -let s:a_HAMZA = "\u0621" -let s:a_ALEF_MADDA = "\u0622" -let s:a_ALEF_HAMZA_ABOVE = "\u0623" -let s:a_WAW_HAMZA = "\u0624" -let s:a_ALEF_HAMZA_BELOW = "\u0625" -let s:a_YEH_HAMZA = "\u0626" -let s:a_ALEF = "\u0627" -let s:a_BEH = "\u0628" -let s:a_TEH_MARBUTA = "\u0629" -let s:a_TEH = "\u062a" -let s:a_THEH = "\u062b" -let s:a_JEEM = "\u062c" -let s:a_HAH = "\u062d" -let s:a_KHAH = "\u062e" -let s:a_DAL = "\u062f" -let s:a_THAL = "\u0630" -let s:a_REH = "\u0631" -let s:a_ZAIN = "\u0632" -let s:a_SEEN = "\u0633" -let s:a_SHEEN = "\u0634" -let s:a_SAD = "\u0635" -let s:a_DAD = "\u0636" -let s:a_TAH = "\u0637" -let s:a_ZAH = "\u0638" -let s:a_AIN = "\u0639" -let s:a_GHAIN = "\u063a" -let s:a_TATWEEL = "\u0640" -let s:a_FEH = "\u0641" -let s:a_QAF = "\u0642" -let s:a_KAF = "\u0643" -let s:a_LAM = "\u0644" -let s:a_MEEM = "\u0645" -let s:a_NOON = "\u0646" -let s:a_HEH = "\u0647" -let s:a_WAW = "\u0648" -let s:a_ALEF_MAKSURA = "\u0649" -let s:a_YEH = "\u064a" - -let s:a_FATHATAN = "\u064b" -let s:a_DAMMATAN = "\u064c" -let s:a_KASRATAN = "\u064d" -let s:a_FATHA = "\u064e" -let s:a_DAMMA = "\u064f" -let s:a_KASRA = "\u0650" -let s:a_SHADDA = "\u0651" -let s:a_SUKUN = "\u0652" - -let s:a_MADDA_ABOVE = "\u0653" -let s:a_HAMZA_ABOVE = "\u0654" -let s:a_HAMZA_BELOW = "\u0655" - -let s:a_ZERO = "\u0660" -let s:a_ONE = "\u0661" -let s:a_TWO = "\u0662" -let s:a_THREE = "\u0663" -let s:a_FOUR = "\u0664" -let s:a_FIVE = "\u0665" -let s:a_SIX = "\u0666" -let s:a_SEVEN = "\u0667" -let s:a_EIGHT = "\u0668" -let s:a_NINE = "\u0669" -let s:a_PERCENT = "\u066a" -let s:a_DECIMAL = "\u066b" -let s:a_THOUSANDS = "\u066c" -let s:a_STAR = "\u066d" -let s:a_MINI_ALEF = "\u0670" - -let s:a_s_FATHATAN = "\ufe70" -let s:a_m_TATWEEL_FATHATAN = "\ufe71" -let s:a_s_DAMMATAN = "\ufe72" - -let s:a_s_KASRATAN = "\ufe74" - -let s:a_s_FATHA = "\ufe76" -let s:a_m_FATHA = "\ufe77" -let s:a_s_DAMMA = "\ufe78" -let s:a_m_DAMMA = "\ufe79" -let s:a_s_KASRA = "\ufe7a" -let s:a_m_KASRA = "\ufe7b" -let s:a_s_SHADDA = "\ufe7c" -let s:a_m_SHADDA = "\ufe7d" -let s:a_s_SUKUN = "\ufe7e" -let s:a_m_SUKUN = "\ufe7f" - -let s:a_s_HAMZA = "\ufe80" -let s:a_s_ALEF_MADDA = "\ufe81" -let s:a_f_ALEF_MADDA = "\ufe82" -let s:a_s_ALEF_HAMZA_ABOVE = "\ufe83" -let s:a_f_ALEF_HAMZA_ABOVE = "\ufe84" -let s:a_s_WAW_HAMZA = "\ufe85" -let s:a_f_WAW_HAMZA = "\ufe86" -let s:a_s_ALEF_HAMZA_BELOW = "\ufe87" -let s:a_f_ALEF_HAMZA_BELOW = "\ufe88" -let s:a_s_YEH_HAMZA = "\ufe89" -let s:a_f_YEH_HAMZA = "\ufe8a" -let s:a_i_YEH_HAMZA = "\ufe8b" -let s:a_m_YEH_HAMZA = "\ufe8c" -let s:a_s_ALEF = "\ufe8d" -let s:a_f_ALEF = "\ufe8e" -let s:a_s_BEH = "\ufe8f" -let s:a_f_BEH = "\ufe90" -let s:a_i_BEH = "\ufe91" -let s:a_m_BEH = "\ufe92" -let s:a_s_TEH_MARBUTA = "\ufe93" -let s:a_f_TEH_MARBUTA = "\ufe94" -let s:a_s_TEH = "\ufe95" -let s:a_f_TEH = "\ufe96" -let s:a_i_TEH = "\ufe97" -let s:a_m_TEH = "\ufe98" -let s:a_s_THEH = "\ufe99" -let s:a_f_THEH = "\ufe9a" -let s:a_i_THEH = "\ufe9b" -let s:a_m_THEH = "\ufe9c" -let s:a_s_JEEM = "\ufe9d" -let s:a_f_JEEM = "\ufe9e" -let s:a_i_JEEM = "\ufe9f" -let s:a_m_JEEM = "\ufea0" -let s:a_s_HAH = "\ufea1" -let s:a_f_HAH = "\ufea2" -let s:a_i_HAH = "\ufea3" -let s:a_m_HAH = "\ufea4" -let s:a_s_KHAH = "\ufea5" -let s:a_f_KHAH = "\ufea6" -let s:a_i_KHAH = "\ufea7" -let s:a_m_KHAH = "\ufea8" -let s:a_s_DAL = "\ufea9" -let s:a_f_DAL = "\ufeaa" -let s:a_s_THAL = "\ufeab" -let s:a_f_THAL = "\ufeac" -let s:a_s_REH = "\ufead" -let s:a_f_REH = "\ufeae" -let s:a_s_ZAIN = "\ufeaf" -let s:a_f_ZAIN = "\ufeb0" -let s:a_s_SEEN = "\ufeb1" -let s:a_f_SEEN = "\ufeb2" -let s:a_i_SEEN = "\ufeb3" -let s:a_m_SEEN = "\ufeb4" -let s:a_s_SHEEN = "\ufeb5" -let s:a_f_SHEEN = "\ufeb6" -let s:a_i_SHEEN = "\ufeb7" -let s:a_m_SHEEN = "\ufeb8" -let s:a_s_SAD = "\ufeb9" -let s:a_f_SAD = "\ufeba" -let s:a_i_SAD = "\ufebb" -let s:a_m_SAD = "\ufebc" -let s:a_s_DAD = "\ufebd" -let s:a_f_DAD = "\ufebe" -let s:a_i_DAD = "\ufebf" -let s:a_m_DAD = "\ufec0" -let s:a_s_TAH = "\ufec1" -let s:a_f_TAH = "\ufec2" -let s:a_i_TAH = "\ufec3" -let s:a_m_TAH = "\ufec4" -let s:a_s_ZAH = "\ufec5" -let s:a_f_ZAH = "\ufec6" -let s:a_i_ZAH = "\ufec7" -let s:a_m_ZAH = "\ufec8" -let s:a_s_AIN = "\ufec9" -let s:a_f_AIN = "\ufeca" -let s:a_i_AIN = "\ufecb" -let s:a_m_AIN = "\ufecc" -let s:a_s_GHAIN = "\ufecd" -let s:a_f_GHAIN = "\ufece" -let s:a_i_GHAIN = "\ufecf" -let s:a_m_GHAIN = "\ufed0" -let s:a_s_FEH = "\ufed1" -let s:a_f_FEH = "\ufed2" -let s:a_i_FEH = "\ufed3" -let s:a_m_FEH = "\ufed4" -let s:a_s_QAF = "\ufed5" -let s:a_f_QAF = "\ufed6" -let s:a_i_QAF = "\ufed7" -let s:a_m_QAF = "\ufed8" -let s:a_s_KAF = "\ufed9" -let s:a_f_KAF = "\ufeda" -let s:a_i_KAF = "\ufedb" -let s:a_m_KAF = "\ufedc" -let s:a_s_LAM = "\ufedd" -let s:a_f_LAM = "\ufede" -let s:a_i_LAM = "\ufedf" -let s:a_m_LAM = "\ufee0" -let s:a_s_MEEM = "\ufee1" -let s:a_f_MEEM = "\ufee2" -let s:a_i_MEEM = "\ufee3" -let s:a_m_MEEM = "\ufee4" -let s:a_s_NOON = "\ufee5" -let s:a_f_NOON = "\ufee6" -let s:a_i_NOON = "\ufee7" -let s:a_m_NOON = "\ufee8" -let s:a_s_HEH = "\ufee9" -let s:a_f_HEH = "\ufeea" -let s:a_i_HEH = "\ufeeb" -let s:a_m_HEH = "\ufeec" -let s:a_s_WAW = "\ufeed" -let s:a_f_WAW = "\ufeee" -let s:a_s_ALEF_MAKSURA = "\ufeef" -let s:a_f_ALEF_MAKSURA = "\ufef0" -let s:a_s_YEH = "\ufef1" -let s:a_f_YEH = "\ufef2" -let s:a_i_YEH = "\ufef3" -let s:a_m_YEH = "\ufef4" -let s:a_s_LAM_ALEF_MADDA_ABOVE = "\ufef5" -let s:a_f_LAM_ALEF_MADDA_ABOVE = "\ufef6" -let s:a_s_LAM_ALEF_HAMZA_ABOVE = "\ufef7" -let s:a_f_LAM_ALEF_HAMZA_ABOVE = "\ufef8" -let s:a_s_LAM_ALEF_HAMZA_BELOW = "\ufef9" -let s:a_f_LAM_ALEF_HAMZA_BELOW = "\ufefa" -let s:a_s_LAM_ALEF = "\ufefb" -let s:a_f_LAM_ALEF = "\ufefc" - -let s:a_BYTE_ORDER_MARK = "\ufeff" - -func Test_shape_initial() - new - set arabicshape - - " Shaping arabic {testchar} non-arabic Tests chg_c_a2i(). - " pair[0] = testchar, pair[1] = next-result, pair[2] = current-result - for pair in [[s:a_YEH_HAMZA, s:a_f_GHAIN, s:a_i_YEH_HAMZA], - \ [s:a_HAMZA, s:a_s_GHAIN, s:a_s_HAMZA], - \ [s:a_ALEF_MADDA, s:a_s_GHAIN, s:a_s_ALEF_MADDA], - \ [s:a_ALEF_HAMZA_ABOVE, s:a_s_GHAIN, s:a_s_ALEF_HAMZA_ABOVE], - \ [s:a_WAW_HAMZA, s:a_s_GHAIN, s:a_s_WAW_HAMZA], - \ [s:a_ALEF_HAMZA_BELOW, s:a_s_GHAIN, s:a_s_ALEF_HAMZA_BELOW], - \ [s:a_ALEF, s:a_s_GHAIN, s:a_s_ALEF], - \ [s:a_TEH_MARBUTA, s:a_s_GHAIN, s:a_s_TEH_MARBUTA], - \ [s:a_DAL, s:a_s_GHAIN, s:a_s_DAL], - \ [s:a_THAL, s:a_s_GHAIN, s:a_s_THAL], - \ [s:a_REH, s:a_s_GHAIN, s:a_s_REH], - \ [s:a_ZAIN, s:a_s_GHAIN, s:a_s_ZAIN], - \ [s:a_TATWEEL, s:a_f_GHAIN, s:a_TATWEEL], - \ [s:a_WAW, s:a_s_GHAIN, s:a_s_WAW], - \ [s:a_ALEF_MAKSURA, s:a_s_GHAIN, s:a_s_ALEF_MAKSURA], - \ [s:a_BEH, s:a_f_GHAIN, s:a_i_BEH], - \ [s:a_TEH, s:a_f_GHAIN, s:a_i_TEH], - \ [s:a_THEH, s:a_f_GHAIN, s:a_i_THEH], - \ [s:a_JEEM, s:a_f_GHAIN, s:a_i_JEEM], - \ [s:a_HAH, s:a_f_GHAIN, s:a_i_HAH], - \ [s:a_KHAH, s:a_f_GHAIN, s:a_i_KHAH], - \ [s:a_SEEN, s:a_f_GHAIN, s:a_i_SEEN], - \ [s:a_SHEEN, s:a_f_GHAIN, s:a_i_SHEEN], - \ [s:a_SAD, s:a_f_GHAIN, s:a_i_SAD], - \ [s:a_DAD, s:a_f_GHAIN, s:a_i_DAD], - \ [s:a_TAH, s:a_f_GHAIN, s:a_i_TAH], - \ [s:a_ZAH, s:a_f_GHAIN, s:a_i_ZAH], - \ [s:a_AIN, s:a_f_GHAIN, s:a_i_AIN], - \ [s:a_GHAIN, s:a_f_GHAIN, s:a_i_GHAIN], - \ [s:a_FEH, s:a_f_GHAIN, s:a_i_FEH], - \ [s:a_QAF, s:a_f_GHAIN, s:a_i_QAF], - \ [s:a_KAF, s:a_f_GHAIN, s:a_i_KAF], - \ [s:a_LAM, s:a_f_GHAIN, s:a_i_LAM], - \ [s:a_MEEM, s:a_f_GHAIN, s:a_i_MEEM], - \ [s:a_NOON, s:a_f_GHAIN, s:a_i_NOON], - \ [s:a_HEH, s:a_f_GHAIN, s:a_i_HEH], - \ [s:a_YEH, s:a_f_GHAIN, s:a_i_YEH], - \ ] - call setline(1, s:a_GHAIN . pair[0] . ' ') - call assert_equal([pair[1] . pair[2] . ' '], ScreenLines(1, 3)) - endfor - - set arabicshape& - bwipe! -endfunc - -func Test_shape_isolated() - new - set arabicshape - - " Shaping non-arabic {testchar} non-arabic Tests chg_c_a2s(). - " pair[0] = testchar, pair[1] = current-result - for pair in [[s:a_HAMZA, s:a_s_HAMZA], - \ [s:a_ALEF_MADDA, s:a_s_ALEF_MADDA], - \ [s:a_ALEF_HAMZA_ABOVE, s:a_s_ALEF_HAMZA_ABOVE], - \ [s:a_WAW_HAMZA, s:a_s_WAW_HAMZA], - \ [s:a_ALEF_HAMZA_BELOW, s:a_s_ALEF_HAMZA_BELOW], - \ [s:a_YEH_HAMZA, s:a_s_YEH_HAMZA], - \ [s:a_ALEF, s:a_s_ALEF], - \ [s:a_TEH_MARBUTA, s:a_s_TEH_MARBUTA], - \ [s:a_DAL, s:a_s_DAL], - \ [s:a_THAL, s:a_s_THAL], - \ [s:a_REH, s:a_s_REH], - \ [s:a_ZAIN, s:a_s_ZAIN], - \ [s:a_TATWEEL, s:a_TATWEEL], - \ [s:a_WAW, s:a_s_WAW], - \ [s:a_ALEF_MAKSURA, s:a_s_ALEF_MAKSURA], - \ [s:a_BEH, s:a_s_BEH], - \ [s:a_TEH, s:a_s_TEH], - \ [s:a_THEH, s:a_s_THEH], - \ [s:a_JEEM, s:a_s_JEEM], - \ [s:a_HAH, s:a_s_HAH], - \ [s:a_KHAH, s:a_s_KHAH], - \ [s:a_SEEN, s:a_s_SEEN], - \ [s:a_SHEEN, s:a_s_SHEEN], - \ [s:a_SAD, s:a_s_SAD], - \ [s:a_DAD, s:a_s_DAD], - \ [s:a_TAH, s:a_s_TAH], - \ [s:a_ZAH, s:a_s_ZAH], - \ [s:a_AIN, s:a_s_AIN], - \ [s:a_GHAIN, s:a_s_GHAIN], - \ [s:a_FEH, s:a_s_FEH], - \ [s:a_QAF, s:a_s_QAF], - \ [s:a_KAF, s:a_s_KAF], - \ [s:a_LAM, s:a_s_LAM], - \ [s:a_MEEM, s:a_s_MEEM], - \ [s:a_NOON, s:a_s_NOON], - \ [s:a_HEH, s:a_s_HEH], - \ [s:a_YEH, s:a_s_YEH], - \ ] - call setline(1, ' ' . pair[0] . ' ') - call assert_equal([' ' . pair[1] . ' '], ScreenLines(1, 3)) - endfor - - set arabicshape& - bwipe! -endfunc - -func Test_shape_iso_to_medial() - new - set arabicshape - - " Shaping arabic {testchar} arabic Tests chg_c_a2m(). - " pair[0] = testchar, pair[1] = next-result, pair[2] = current-result, - " pair[3] = previous-result - for pair in [[s:a_HAMZA, s:a_s_GHAIN, s:a_s_HAMZA, s:a_s_BEH], - \[s:a_ALEF_MADDA, s:a_s_GHAIN, s:a_f_ALEF_MADDA, s:a_i_BEH], - \[s:a_ALEF_HAMZA_ABOVE, s:a_s_GHAIN, s:a_f_ALEF_HAMZA_ABOVE, s:a_i_BEH], - \[s:a_WAW_HAMZA, s:a_s_GHAIN, s:a_f_WAW_HAMZA, s:a_i_BEH], - \[s:a_ALEF_HAMZA_BELOW, s:a_s_GHAIN, s:a_f_ALEF_HAMZA_BELOW, s:a_i_BEH], - \[s:a_YEH_HAMZA, s:a_f_GHAIN, s:a_m_YEH_HAMZA, s:a_i_BEH], - \[s:a_ALEF, s:a_s_GHAIN, s:a_f_ALEF, s:a_i_BEH], - \[s:a_BEH, s:a_f_GHAIN, s:a_m_BEH, s:a_i_BEH], - \[s:a_TEH_MARBUTA, s:a_s_GHAIN, s:a_f_TEH_MARBUTA, s:a_i_BEH], - \[s:a_TEH, s:a_f_GHAIN, s:a_m_TEH, s:a_i_BEH], - \[s:a_THEH, s:a_f_GHAIN, s:a_m_THEH, s:a_i_BEH], - \[s:a_JEEM, s:a_f_GHAIN, s:a_m_JEEM, s:a_i_BEH], - \[s:a_HAH, s:a_f_GHAIN, s:a_m_HAH, s:a_i_BEH], - \[s:a_KHAH, s:a_f_GHAIN, s:a_m_KHAH, s:a_i_BEH], - \[s:a_DAL, s:a_s_GHAIN, s:a_f_DAL, s:a_i_BEH], - \[s:a_THAL, s:a_s_GHAIN, s:a_f_THAL, s:a_i_BEH], - \[s:a_REH, s:a_s_GHAIN, s:a_f_REH, s:a_i_BEH], - \[s:a_ZAIN, s:a_s_GHAIN, s:a_f_ZAIN, s:a_i_BEH], - \[s:a_SEEN, s:a_f_GHAIN, s:a_m_SEEN, s:a_i_BEH], - \[s:a_SHEEN, s:a_f_GHAIN, s:a_m_SHEEN, s:a_i_BEH], - \[s:a_SAD, s:a_f_GHAIN, s:a_m_SAD, s:a_i_BEH], - \[s:a_DAD, s:a_f_GHAIN, s:a_m_DAD, s:a_i_BEH], - \[s:a_TAH, s:a_f_GHAIN, s:a_m_TAH, s:a_i_BEH], - \[s:a_ZAH, s:a_f_GHAIN, s:a_m_ZAH, s:a_i_BEH], - \[s:a_AIN, s:a_f_GHAIN, s:a_m_AIN, s:a_i_BEH], - \[s:a_GHAIN, s:a_f_GHAIN, s:a_m_GHAIN, s:a_i_BEH], - \[s:a_TATWEEL, s:a_f_GHAIN, s:a_TATWEEL, s:a_i_BEH], - \[s:a_FEH, s:a_f_GHAIN, s:a_m_FEH, s:a_i_BEH], - \[s:a_QAF, s:a_f_GHAIN, s:a_m_QAF, s:a_i_BEH], - \[s:a_KAF, s:a_f_GHAIN, s:a_m_KAF, s:a_i_BEH], - \[s:a_LAM, s:a_f_GHAIN, s:a_m_LAM, s:a_i_BEH], - \[s:a_MEEM, s:a_f_GHAIN, s:a_m_MEEM, s:a_i_BEH], - \[s:a_NOON, s:a_f_GHAIN, s:a_m_NOON, s:a_i_BEH], - \[s:a_HEH, s:a_f_GHAIN, s:a_m_HEH, s:a_i_BEH], - \[s:a_WAW, s:a_s_GHAIN, s:a_f_WAW, s:a_i_BEH], - \[s:a_ALEF_MAKSURA, s:a_s_GHAIN, s:a_f_ALEF_MAKSURA, s:a_i_BEH], - \[s:a_YEH, s:a_f_GHAIN, s:a_m_YEH, s:a_i_BEH], - \ ] - call setline(1, s:a_GHAIN . pair[0] . s:a_BEH) - call assert_equal([pair[1] . pair[2] . pair[3]], ScreenLines(1, 3)) - endfor - - set arabicshape& - bwipe! -endfunc - -func Test_shape_final() - new - set arabicshape - - " Shaping arabic {testchar} arabic Tests chg_c_a2f(). - " pair[0] = testchar, pair[1] = current-result, pair[2] = previous-result - for pair in [[s:a_HAMZA, s:a_s_HAMZA, s:a_s_BEH], - \[s:a_ALEF_MADDA, s:a_f_ALEF_MADDA, s:a_i_BEH], - \[s:a_ALEF_HAMZA_ABOVE, s:a_f_ALEF_HAMZA_ABOVE, s:a_i_BEH], - \[s:a_WAW_HAMZA, s:a_f_WAW_HAMZA, s:a_i_BEH], - \[s:a_ALEF_HAMZA_BELOW, s:a_f_ALEF_HAMZA_BELOW, s:a_i_BEH], - \[s:a_YEH_HAMZA, s:a_f_YEH_HAMZA, s:a_i_BEH], - \[s:a_ALEF, s:a_f_ALEF, s:a_i_BEH], - \[s:a_BEH, s:a_f_BEH, s:a_i_BEH], - \[s:a_TEH_MARBUTA, s:a_f_TEH_MARBUTA, s:a_i_BEH], - \[s:a_TEH, s:a_f_TEH, s:a_i_BEH], - \[s:a_THEH, s:a_f_THEH, s:a_i_BEH], - \[s:a_JEEM, s:a_f_JEEM, s:a_i_BEH], - \[s:a_HAH, s:a_f_HAH, s:a_i_BEH], - \[s:a_KHAH, s:a_f_KHAH, s:a_i_BEH], - \[s:a_DAL, s:a_f_DAL, s:a_i_BEH], - \[s:a_THAL, s:a_f_THAL, s:a_i_BEH], - \[s:a_REH, s:a_f_REH, s:a_i_BEH], - \[s:a_ZAIN, s:a_f_ZAIN, s:a_i_BEH], - \[s:a_SEEN, s:a_f_SEEN, s:a_i_BEH], - \[s:a_SHEEN, s:a_f_SHEEN, s:a_i_BEH], - \[s:a_SAD, s:a_f_SAD, s:a_i_BEH], - \[s:a_DAD, s:a_f_DAD, s:a_i_BEH], - \[s:a_TAH, s:a_f_TAH, s:a_i_BEH], - \[s:a_ZAH, s:a_f_ZAH, s:a_i_BEH], - \[s:a_AIN, s:a_f_AIN, s:a_i_BEH], - \[s:a_GHAIN, s:a_f_GHAIN, s:a_i_BEH], - \[s:a_TATWEEL, s:a_TATWEEL, s:a_i_BEH], - \[s:a_FEH, s:a_f_FEH, s:a_i_BEH], - \[s:a_QAF, s:a_f_QAF, s:a_i_BEH], - \[s:a_KAF, s:a_f_KAF, s:a_i_BEH], - \[s:a_LAM, s:a_f_LAM, s:a_i_BEH], - \[s:a_MEEM, s:a_f_MEEM, s:a_i_BEH], - \[s:a_NOON, s:a_f_NOON, s:a_i_BEH], - \[s:a_HEH, s:a_f_HEH, s:a_i_BEH], - \[s:a_WAW, s:a_f_WAW, s:a_i_BEH], - \[s:a_ALEF_MAKSURA, s:a_f_ALEF_MAKSURA, s:a_i_BEH], - \[s:a_YEH, s:a_f_YEH, s:a_i_BEH], - \ ] - call setline(1, ' ' . pair[0] . s:a_BEH) - call assert_equal([' ' . pair[1] . pair[2]], ScreenLines(1, 3)) - endfor - - set arabicshape& - bwipe! -endfunc - -func Test_shape_combination_final() - new - set arabicshape - - " Shaping arabic {testchar} arabic Tests chg_c_laa2f(). - " pair[0] = testchar, pair[1] = current-result - for pair in [[s:a_ALEF_MADDA, s:a_f_LAM_ALEF_MADDA_ABOVE], - \ [s:a_ALEF_HAMZA_ABOVE, s:a_f_LAM_ALEF_HAMZA_ABOVE], - \ [s:a_ALEF_HAMZA_BELOW, s:a_f_LAM_ALEF_HAMZA_BELOW], - \ [s:a_ALEF, s:a_f_LAM_ALEF], - \ ] - " The test char is a composing char, put on s:a_LAM. - call setline(1, ' ' . s:a_LAM . pair[0] . s:a_BEH) - call assert_equal([' ' . pair[1] . s:a_i_BEH], ScreenLines(1, 3)) - endfor - - set arabicshape& - bwipe! -endfunc - -func Test_shape_combination_isolated() - new - set arabicshape - - " Shaping arabic {testchar} arabic Tests chg_c_laa2i(). - " pair[0] = testchar, pair[1] = current-result - for pair in [[s:a_ALEF_MADDA, s:a_s_LAM_ALEF_MADDA_ABOVE], - \ [s:a_ALEF_HAMZA_ABOVE, s:a_s_LAM_ALEF_HAMZA_ABOVE], - \ [s:a_ALEF_HAMZA_BELOW, s:a_s_LAM_ALEF_HAMZA_BELOW], - \ [s:a_ALEF, s:a_s_LAM_ALEF], - \ ] - " The test char is a composing char, put on s:a_LAM. - call setline(1, ' ' . s:a_LAM . pair[0] . ' ') - call assert_equal([' ' . pair[1] . ' '], ScreenLines(1, 3)) - endfor - - set arabicshape& - bwipe! -endfunc - -" Test for entering arabic character in a search command -func Test_arabic_chars_in_search_cmd() - new - set arabic - call feedkeys("i\nsghl!\<C-^>vim\<C-^>", 'tx') - call cursor(1, 1) - call feedkeys("/^sghl!\<C-^>vim$\<C-^>\<CR>", 'tx') - call assert_equal([2, 1], [line('.'), col('.')]) - - " Try searching in left-to-right mode - set rightleftcmd= - call cursor(1, 1) - call feedkeys("/^sghl!\<C-^>vim$\<CR>", 'tx') - call assert_equal([2, 1], [line('.'), col('.')]) - - set rightleftcmd& - set rightleft& - set arabic& - bwipe! -endfunc - -" vim: shiftwidth=2 sts=2 expandtab |