]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
patch 8.2.2286: sort test fails when locale is Canadian English v8.2.2286
authorBram Moolenaar <Bram@vim.org>
Sun, 3 Jan 2021 15:18:04 +0000 (16:18 +0100)
committerBram Moolenaar <Bram@vim.org>
Sun, 3 Jan 2021 15:18:04 +0000 (16:18 +0100)
Problem:    Sort test fails when locale is Canadian English. (Neil H Watson)
Solution:   Expect a different sort order. (closes #7609)

src/testdir/test_sort.vim
src/version.c

index 39005627c1cffecd84a789a0889d12ab1c64e1d3..42a44528f36efd20eabcefd6539f491fe59187c4 100644 (file)
@@ -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 += [
index ea53d3a72ac68e4c62b07128401e8c4e53b5c7f9..aa01a3920237364edb17d575d665928405b5337b 100644 (file)
@@ -750,6 +750,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    2286,
 /**/
     2285,
 /**/