summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2017-02-27 21:48:26 +0100
committerBram Moolenaar <Bram@vim.org>2017-02-27 21:48:26 +0100
commitb5e8377364110ee70090274da15d202778e96a64 (patch)
treecaa02b1dec88c11db30144e6050e24323c73f4b5 /src
parentd512e17ea4cebe547197b759a047138228acc06f (diff)
downloadvim-b5e8377364110ee70090274da15d202778e96a64.zip
patch 8.0.0385: no tests for arabic
Problem: No tests for arabic. Solution: Add a first test for arabic. (Dominique Pelle, closes #1518)
Diffstat (limited to 'src')
-rw-r--r--src/Makefile1
-rw-r--r--src/testdir/Make_all.mak3
-rw-r--r--src/testdir/test_arabic.vim92
-rw-r--r--src/version.c2
4 files changed, 97 insertions, 1 deletions
diff --git a/src/Makefile b/src/Makefile
index 09adb9a2b..0bdd1d470 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -2092,6 +2092,7 @@ test1 \
# Run individual NEW style test, assuming that Vim was already compiled.
test_arglist \
+ test_arabic \
test_assert \
test_assign \
test_autochdir \
diff --git a/src/testdir/Make_all.mak b/src/testdir/Make_all.mak
index 18dfdc8e7..513fd8971 100644
--- a/src/testdir/Make_all.mak
+++ b/src/testdir/Make_all.mak
@@ -133,7 +133,8 @@ SCRIPTS_GUI =
# Tests using runtest.vim.vim.
# Keep test_alot*.res as the last one, sort the others.
-NEW_TESTS = test_arglist.res \
+NEW_TESTS = test_arabic.res \
+ test_arglist.res \
test_assert.res \
test_autochdir.res \
test_backspace_opt.res \
diff --git a/src/testdir/test_arabic.vim b/src/testdir/test_arabic.vim
new file mode 100644
index 000000000..b9e033462
--- /dev/null
+++ b/src/testdir/test_arabic.vim
@@ -0,0 +1,92 @@
+" Simplistic testing of Arabic mode.
+
+if !has('arabic')
+ finish
+endif
+
+set encoding=utf-8
+scriptencoding utf-8
+
+" Return list of utf8 sequences of each character at line lnum.
+" Combining characters are treated as a single item.
+func GetCharsUtf8(lnum)
+ call cursor(a:lnum, 1)
+ let chars = []
+ let numchars = strchars(getline('.'), 1)
+ for i in range(1, numchars)
+ exe 'norm ' i . '|'
+ call add(chars, execute('norm g8'))
+ 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'.
+ call feedkeys('isghl', 'tx')
+ redraw
+ call assert_equal([
+ \ "\nd8 b3 ",
+ \ "\nd9 84 + d8 a7 ",
+ \ "\nd9 85 "], GetCharsUtf8(1))
+
+ " Without shaping, it should give individual Arabic letters.
+ set noarabicshape
+ redraw
+ call assert_equal([
+ \ "\nd8 b3 ",
+ \ "\nd9 84 ",
+ \ "\nd8 a7 ",
+ \ "\nd9 85 "], GetCharsUtf8(1))
+
+ set arabicshape&
+ set arabic&
+ bwipe!
+endfunc
+
+func Test_arabic_toggle_keymap()
+ new
+ set arabic
+ call feedkeys("i12\<C-^>12\<C-^>12", 'tx')
+ redraw
+ call assert_equal('١٢12١٢', getline('.'))
+ set arabic&
+ bwipe!
+endfunc
+
+func Test_delcombine()
+ new
+ set arabic
+ call feedkeys("isghl\<BS>\<BS>", 'tx')
+ redraw
+ call assert_equal(["\nd8 b3 ", "\nd9 84 "], GetCharsUtf8(1))
+
+ " Now the same with nodelcombine
+ set nodelcombine
+ %d
+ call feedkeys("isghl\<BS>\<BS>", 'tx')
+ call assert_equal(["\nd8 b3 "], GetCharsUtf8(1))
+ set arabic&
+ bwipe!
+endfunc
diff --git a/src/version.c b/src/version.c
index 713b54c2b..4479cc216 100644
--- a/src/version.c
+++ b/src/version.c
@@ -765,6 +765,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 385,
+/**/
384,
/**/
383,