Files
neovim/src/nvim/testdir/test82.in
Eliseo Martínez da51dc9cf2 Introduce nvim namespace: Move files.
Move files from src/ to src/nvim/.
- src/nvim/ becomes the new root dir for nvim executable sources.
- src/libnvim/ is planned to become root dir of the neovim library.
2014-05-15 20:46:01 +02:00

104 lines
3.1 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
Tests for case-insensitive UTF-8 comparisons (utf_strnicmp() in mbyte.c)
Also test "g~ap".
STARTTEST
:so small.vim
:if !has("multi_byte")
: e! test.ok
: w! test.out
: qa!
:endif
:set enc=utf8
ggdG
:
:function! Ch(a, op, b, expected)
: if eval(printf('"%s" %s "%s"', a:a, a:op, a:b)) != a:expected
: call append(line('$'), printf('"%s" %s "%s" should return %d', a:a, a:op, a:b, a:expected))
: else
: let b:passed += 1
: endif
:endfunction
:
:function! Chk(a, b, result)
: if a:result == 0
: call Ch(a:a, '==?', a:b, 1)
: call Ch(a:a, '!=?', a:b, 0)
: call Ch(a:a, '<=?', a:b, 1)
: call Ch(a:a, '>=?', a:b, 1)
: call Ch(a:a, '<?', a:b, 0)
: call Ch(a:a, '>?', a:b, 0)
: elseif a:result > 0
: call Ch(a:a, '==?', a:b, 0)
: call Ch(a:a, '!=?', a:b, 1)
: call Ch(a:a, '<=?', a:b, 0)
: call Ch(a:a, '>=?', a:b, 1)
: call Ch(a:a, '<?', a:b, 0)
: call Ch(a:a, '>?', a:b, 1)
: else
: call Ch(a:a, '==?', a:b, 0)
: call Ch(a:a, '!=?', a:b, 1)
: call Ch(a:a, '<=?', a:b, 1)
: call Ch(a:a, '>=?', a:b, 0)
: call Ch(a:a, '<?', a:b, 1)
: call Ch(a:a, '>?', a:b, 0)
: endif
:endfunction
:
:function! Check(a, b, result)
: call Chk(a:a, a:b, a:result)
: call Chk(a:b, a:a, -a:result)
:endfunction
:
:function! LT(a, b)
: call Check(a:a, a:b, -1)
:endfunction
:
:function! GT(a, b)
: call Check(a:a, a:b, 1)
:endfunction
:
:function! EQ(a, b)
: call Check(a:a, a:b, 0)
:endfunction
:
:let b:passed=0
:call EQ('', '')
:call LT('', 'a')
:call EQ('abc', 'abc')
:call EQ('Abc', 'abC')
:call LT('ab', 'abc')
:call LT('AB', 'abc')
:call LT('ab', 'aBc')
:call EQ('\xd0\xb9\xd1\x86\xd1\x83\xd0\xba\xd0\xb5\xd0\xbd', '\xd0\xb9\xd0\xa6\xd0\xa3\xd0\xba\xd0\x95\xd0\xbd')
:call LT('\xd0\xb9\xd1\x86\xd1\x83\xd0\xba\xd0\xb5\xd0\xbd', '\xd0\xaf\xd1\x86\xd1\x83\xd0\xba\xd0\xb5\xd0\xbd')
:call EQ('\xe2\x84\xaa', 'k')
:call LT('\xe2\x84\xaa', 'kkkkkk')
:call EQ('\xe2\x84\xaa\xe2\x84\xaa\xe2\x84\xaa', 'kkk')
:call LT('kk', '\xe2\x84\xaa\xe2\x84\xaa\xe2\x84\xaa')
:call EQ('\xe2\x84\xaa\xe2\x84\xa6k\xe2\x84\xaak\xcf\x89', 'k\xcf\x89\xe2\x84\xaakk\xe2\x84\xa6')
:call EQ('Abc\x80', 'AbC\x80')
:call LT('Abc\x80', 'AbC\x81')
:call LT('Abc', 'AbC\x80')
:call LT('abc\x80DEF', 'abc\x80def') " case folding stops at the first bad character
:call LT('\xc3XYZ', '\xc3xyz')
:call EQ('\xef\xbc\xba', '\xef\xbd\x9a') " FF3A (upper), FF5A (lower)
:call GT('\xef\xbc\xba', '\xef\xbc\xff') " first string is ok and equals \xef\xbd\x9a after folding, second string is illegal and was left unchanged, then the strings were bytewise compared
:call LT('\xc3', '\xc3\x83')
:call EQ('\xc3\xa3xYz', '\xc3\x83XyZ')
:for n in range(0x60, 0xFF) | call LT(printf('xYz\x%.2X', n-1), printf('XyZ\x%.2X', n)) | endfor
:for n in range(0x80, 0xBF) | call EQ(printf('xYz\xc2\x%.2XUvW', n), printf('XyZ\xc2\x%.2XuVw', n)) | endfor
:for n in range(0xC0, 0xFF) | call LT(printf('xYz\xc2\x%.2XUvW', n), printf('XyZ\xc2\x%.2XuVw', n)) | endfor
:call append(0, printf('%d checks passed', b:passed))
:"
:" test that g~ap changes one paragraph only.
:new
iabcd
defggg0g~ap:let lns = getline(1,3)
:q!
:call append(line('$'), lns)
:"
:wq! test.out
ENDTEST