Mercurial > vim
view src/testdir/test_utf8_comparisons.vim @ 16150:b23048205589 v8.1.1080
patch 8.1.1080: when a screendump test fails, moving the file is a hassle
commit https://github.com/vim/vim/commit/ef7f0e367eeaf6fb31b1caa0e3de1a4b07e86af3
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Mar 30 15:59:51 2019 +0100
patch 8.1.1080: when a screendump test fails, moving the file is a hassle
Problem: When a screendump test fails, moving the file is a hassle.
Solution: Instead of appending ".failed" to the file name, keep the same
file name but put the screendump in the "failed" directory.
Then the file name only needs to be typed once when moving a
screendump.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sat, 30 Mar 2019 16:00:06 +0100 |
parents | 2dcaa860e3fc |
children | 97d534e17874 |
line wrap: on
line source
" Tests for case-insensitive UTF-8 comparisons (utf_strnicmp() in mbyte.c) " Also test "g~ap". func Ch(a, op, b, expected) call assert_equal(eval(printf('"%s" %s "%s"', a:a, a:op, a:b)), a:expected, \ printf('"%s" %s "%s" should return %d', a:a, a:op, a:b, a:expected)) endfunc func 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 endfunc func Check(a, b, result) call Chk(a:a, a:b, a:result) call Chk(a:b, a:a, -a:result) endfunc func LT(a, b) call Check(a:a, a:b, -1) endfunc func GT(a, b) call Check(a:a, a:b, 1) endfunc func EQ(a, b) call Check(a:a, a:b, 0) endfunc func Test_comparisons() 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 endfunc " test that g~ap changes one paragraph only. func Test_gap() new call feedkeys("iabcd\n\ndefggg0g~ap", "tx") call assert_equal(["ABCD", "", "defg"], getline(1,3)) endfunc