diff options
author | Bram Moolenaar <Bram@vim.org> | 2021-01-03 16:18:04 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2021-01-03 16:18:04 +0100 |
commit | fefa6c347e2c7f01ed2b095084f4aa694ff72149 (patch) | |
tree | b2d010495d9098558cece957b63dc2d823d89b01 /src/testdir/test_sort.vim | |
parent | b0d8182fa39f2c9403f5f9a0663589fcab43a6c8 (diff) |
patch 8.2.2286: sort test fails when locale is Canadian Englishv8.2.2286
Problem: Sort test fails when locale is Canadian English. (Neil H Watson)
Solution: Expect a different sort order. (closes #7609)
Diffstat (limited to 'src/testdir/test_sort.vim')
-rw-r--r-- | src/testdir/test_sort.vim | 164 |
1 files changed, 109 insertions, 55 deletions
diff --git a/src/testdir/test_sort.vim b/src/testdir/test_sort.vim index 39005627c1..42a44528f3 100644 --- a/src/testdir/test_sort.vim +++ b/src/testdir/test_sort.vim @@ -24,14 +24,18 @@ func Test_sort_strings() " This does not appear to work correctly on Mac. if !has('mac') - " With the following locales, the accentuated letters are ordered - " similarly to the non-accentuated letters... - if v:collate =~? '^\(en\|es\|de\|fr\|it\|nl\).*\.utf-\?8$' + if v:collate =~? '^en_ca.*\.utf-\?8$' && !has('mac') + " with Canadian English capitals come before lower case. + call assert_equal(['A', 'a', 'Ä', 'ä', 'O', 'o', 'Ô', 'ô', 'œ', 'œ', 'P', 'p'], + \ sort(['A', 'a', 'o', 'O', 'œ', 'œ', 'p', 'P', 'Ä', 'ä', 'ô', 'Ô'], 'l')) + elseif v:collate =~? '^\(en\|es\|de\|fr\|it\|nl\).*\.utf-\?8$' + " With the following locales, the accentuated letters are ordered + " similarly to the non-accentuated letters... call assert_equal(['a', 'A', 'ä', 'Ä', 'o', 'O', 'ô', 'Ô', 'œ', 'œ', 'p', 'P'], \ sort(['A', 'a', 'o', 'O', 'œ', 'œ', 'p', 'P', 'Ä', 'ä', 'ô', 'Ô'], 'l')) - " ... whereas with a Swedish locale, the accentuated letters are ordered - " after Z. elseif v:collate =~? '^sv.*utf-\?8$' + " ... whereas with a Swedish locale, the accentuated letters are ordered + " after Z. call assert_equal(['a', 'A', 'o', 'O', 'p', 'P', 'ä', 'Ä', 'œ', 'œ', 'ô', 'Ô'], \ sort(['A', 'a', 'o', 'O', 'œ', 'œ', 'p', 'P', 'Ä', 'ä', 'ô', 'Ô'], 'l')) endif @@ -1230,56 +1234,106 @@ func Test_sort_cmd() \ }, \ ] - " With the following locales, the accentuated letters are ordered - " similarly to the non-accentuated letters. - " This does not appear to work on Mac - if v:collate =~? '^\(en\|es\|de\|fr\|it\|nl\).*\.utf-\?8$' && !has('mac') - let tests += [ - \ { - \ 'name' : 'sort with locale', - \ 'cmd' : '%sort l', - \ 'input' : [ - \ 'A', - \ 'E', - \ 'O', - \ 'À', - \ 'È', - \ 'É', - \ 'Ô', - \ 'Œ', - \ 'Z', - \ 'a', - \ 'e', - \ 'o', - \ 'à', - \ 'è', - \ 'é', - \ 'ô', - \ 'œ', - \ 'z' - \ ], - \ 'expected' : [ - \ 'a', - \ 'A', - \ 'à', - \ 'À', - \ 'e', - \ 'E', - \ 'é', - \ 'É', - \ 'è', - \ 'È', - \ 'o', - \ 'O', - \ 'ô', - \ 'Ô', - \ 'œ', - \ 'Œ', - \ 'z', - \ 'Z' - \ ] - \ }, - \ ] + " This does not appear to work correctly on Mac. + if !has('mac') + if v:collate =~? '^en_ca.*\.utf-\?8$' + " en_CA.utf-8 sorts capitals before lower case + let tests += [ + \ { + \ 'name' : 'sort with locale ' .. v:collate, + \ 'cmd' : '%sort l', + \ 'input' : [ + \ 'A', + \ 'E', + \ 'O', + \ 'À', + \ 'È', + \ 'É', + \ 'Ô', + \ 'Œ', + \ 'Z', + \ 'a', + \ 'e', + \ 'o', + \ 'à', + \ 'è', + \ 'é', + \ 'ô', + \ 'œ', + \ 'z' + \ ], + \ 'expected' : [ + \ 'A', + \ 'a', + \ 'À', + \ 'à', + \ 'E', + \ 'e', + \ 'É', + \ 'é', + \ 'È', + \ 'è', + \ 'O', + \ 'o', + \ 'Ô', + \ 'ô', + \ 'œ', + \ 'Œ', + \ 'Z', + \ 'z' + \ ] + \ }, + \ ] + elseif v:collate =~? '^\(en\|es\|de\|fr\|it\|nl\).*\.utf-\?8$' + " With these locales, the accentuated letters are ordered + " similarly to the non-accentuated letters. + let tests += [ + \ { + \ 'name' : 'sort with locale ' .. v:collate, + \ 'cmd' : '%sort l', + \ 'input' : [ + \ 'A', + \ 'E', + \ 'O', + \ 'À', + \ 'È', + \ 'É', + \ 'Ô', + \ 'Œ', + \ 'Z', + \ 'a', + \ 'e', + \ 'o', + \ 'à', + \ 'è', + \ 'é', + \ 'ô', + \ 'œ', + \ 'z' + \ ], + \ 'expected' : [ + \ 'a', + \ 'A', + \ 'à', + \ 'À', + \ 'e', + \ 'E', + \ 'é', + \ 'É', + \ 'è', + \ 'È', + \ 'o', + \ 'O', + \ 'ô', + \ 'Ô', + \ 'œ', + \ 'Œ', + \ 'z', + \ 'Z' + \ ] + \ }, + \ ] + endif endif if has('float') let tests += [ |