| 1 | #!/bin/sh
|
|---|
| 2 | # Check that case folding works even with titlecase and similarly odd chars.
|
|---|
| 3 |
|
|---|
| 4 | # Copyright 2014-2021 Free Software Foundation, Inc.
|
|---|
| 5 |
|
|---|
| 6 | # This program is free software: you can redistribute it and/or modify
|
|---|
| 7 | # it under the terms of the GNU General Public License as published by
|
|---|
| 8 | # the Free Software Foundation, either version 3 of the License, or
|
|---|
| 9 | # (at your option) any later version.
|
|---|
| 10 |
|
|---|
| 11 | # This program is distributed in the hope that it will be useful,
|
|---|
| 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|---|
| 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|---|
| 14 | # GNU General Public License for more details.
|
|---|
| 15 |
|
|---|
| 16 | # You should have received a copy of the GNU General Public License
|
|---|
| 17 | # along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|---|
| 18 |
|
|---|
| 19 | . "${srcdir=.}/init.sh"; path_prepend_ ../src
|
|---|
| 20 |
|
|---|
| 21 | require_en_utf8_locale_
|
|---|
| 22 | require_compiled_in_MB_support
|
|---|
| 23 | LC_ALL=en_US.UTF-8
|
|---|
| 24 | export LC_ALL
|
|---|
| 25 |
|
|---|
| 26 | fail=0
|
|---|
| 27 |
|
|---|
| 28 | for testcase in \
|
|---|
| 29 | 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
|---|
| 30 | do
|
|---|
| 31 | case $testcase in
|
|---|
| 32 | 0)
|
|---|
| 33 | a='\302\265' # U+00B5
|
|---|
| 34 | b='\316\234' # U+039C
|
|---|
| 35 | c='\316\274' # U+03BC
|
|---|
| 36 | ;;
|
|---|
| 37 | 1)
|
|---|
| 38 | a='\111' # U+0049
|
|---|
| 39 | b='\151' # U+0069
|
|---|
| 40 | c='\304\260' # U+0130
|
|---|
| 41 | ;;
|
|---|
| 42 | 2)
|
|---|
| 43 | a='\111' # U+0049
|
|---|
| 44 | b='\151' # U+0069
|
|---|
| 45 | c='\304\261' # U+0131
|
|---|
| 46 | ;;
|
|---|
| 47 | 3)
|
|---|
| 48 | a='\123' # U+0053
|
|---|
| 49 | b='\163' # U+0073
|
|---|
| 50 | c='\305\277' # U+017F
|
|---|
| 51 | ;;
|
|---|
| 52 | 4)
|
|---|
| 53 | a='\307\204' # U+01C4
|
|---|
| 54 | b='\307\205' # U+01C5
|
|---|
| 55 | c='\307\206' # U+01C6
|
|---|
| 56 | ;;
|
|---|
| 57 | 5)
|
|---|
| 58 | a='\307\207' # U+01C7
|
|---|
| 59 | b='\307\210' # U+01C8
|
|---|
| 60 | c='\307\211' # U+01C9
|
|---|
| 61 | ;;
|
|---|
| 62 | 6)
|
|---|
| 63 | a='\307\212' # U+01CA
|
|---|
| 64 | b='\307\213' # U+01CB
|
|---|
| 65 | c='\307\214' # U+01CC
|
|---|
| 66 | ;;
|
|---|
| 67 | 7)
|
|---|
| 68 | a='\307\261' # U+01F1
|
|---|
| 69 | b='\307\262' # U+01F2
|
|---|
| 70 | c='\307\263' # U+01F3
|
|---|
| 71 | ;;
|
|---|
| 72 | 8)
|
|---|
| 73 | a='\315\205' # U+0345
|
|---|
| 74 | b='\316\231' # U+0399
|
|---|
| 75 | c='\316\271' # U+03B9
|
|---|
| 76 | ;;
|
|---|
| 77 | 9)
|
|---|
| 78 | a='\316\243' # U+03A3
|
|---|
| 79 | b='\317\202' # U+03C2
|
|---|
| 80 | c='\317\203' # U+03C3
|
|---|
| 81 | ;;
|
|---|
| 82 | 10)
|
|---|
| 83 | a='\316\222' # U+0392
|
|---|
| 84 | b='\316\262' # U+03B2
|
|---|
| 85 | c='\317\220' # U+03D0
|
|---|
| 86 | ;;
|
|---|
| 87 | 11)
|
|---|
| 88 | a='\316\230' # U+0398
|
|---|
| 89 | b='\316\270' # U+03B8
|
|---|
| 90 | c='\317\221' # U+03D1
|
|---|
| 91 | ;;
|
|---|
| 92 | 12)
|
|---|
| 93 | a='\316\246' # U+03A6
|
|---|
| 94 | b='\317\206' # U+03C6
|
|---|
| 95 | c='\317\225' # U+03D5
|
|---|
| 96 | ;;
|
|---|
| 97 | 13)
|
|---|
| 98 | a='\316\240' # U+03A0
|
|---|
| 99 | b='\317\200' # U+03C0
|
|---|
| 100 | c='\317\226' # U+03D6
|
|---|
| 101 | ;;
|
|---|
| 102 | 14)
|
|---|
| 103 | a='\316\232' # U+039A
|
|---|
| 104 | b='\316\272' # U+03BA
|
|---|
| 105 | c='\317\260' # U+03F0
|
|---|
| 106 | ;;
|
|---|
| 107 | 15)
|
|---|
| 108 | a='\316\241' # U+03A1
|
|---|
| 109 | b='\317\201' # U+03C1
|
|---|
| 110 | c='\317\261' # U+03F1
|
|---|
| 111 | ;;
|
|---|
| 112 | 16)
|
|---|
| 113 | a='\316\230' # U+0398
|
|---|
| 114 | b='\316\270' # U+03B8
|
|---|
| 115 | c='\317\264' # U+03F4
|
|---|
| 116 | ;;
|
|---|
| 117 | 17)
|
|---|
| 118 | a='\316\225' # U+0395
|
|---|
| 119 | b='\316\265' # U+03B5
|
|---|
| 120 | c='\317\265' # U+03F5
|
|---|
| 121 | ;;
|
|---|
| 122 | 18)
|
|---|
| 123 | a='\341\271\240' # U+1E60
|
|---|
| 124 | b='\341\271\241' # U+1E61
|
|---|
| 125 | c='\341\272\233' # U+1E9B
|
|---|
| 126 | ;;
|
|---|
| 127 | 19)
|
|---|
| 128 | a='\303\237' # U+00DF
|
|---|
| 129 | b='\303\237' # U+00DF
|
|---|
| 130 | c='\341\272\236' # U+1E9E
|
|---|
| 131 | ;;
|
|---|
| 132 | 20)
|
|---|
| 133 | a='\316\231' # U+0399
|
|---|
| 134 | b='\316\271' # U+03B9
|
|---|
| 135 | c='\341\276\276' # U+1FBE
|
|---|
| 136 | ;;
|
|---|
| 137 | 21)
|
|---|
| 138 | a='\316\251' # U+03A9
|
|---|
| 139 | b='\317\211' # U+03C9
|
|---|
| 140 | c='\342\204\246' # U+2126
|
|---|
| 141 | ;;
|
|---|
| 142 | 22)
|
|---|
| 143 | a='\113' # U+004B
|
|---|
| 144 | b='\153' # U+006B
|
|---|
| 145 | c='\342\204\252' # U+212A
|
|---|
| 146 | ;;
|
|---|
| 147 | 23)
|
|---|
| 148 | a='\303\205' # U+00C5
|
|---|
| 149 | b='\303\245' # U+00E5
|
|---|
| 150 | c='\342\204\253' # U+212B
|
|---|
| 151 | ;;
|
|---|
| 152 | 24)
|
|---|
| 153 | a='\316\243' # U+03A3
|
|---|
| 154 | b='\317\203' # U+03C3
|
|---|
| 155 | c='\317\262' # U+03F2
|
|---|
| 156 | ;;
|
|---|
| 157 | esac
|
|---|
| 158 |
|
|---|
| 159 | printf "$a\\n$b\\n$c\\n" >in || framework_failure_
|
|---|
| 160 | for pattern in "$a" "$b" "$c"; do
|
|---|
| 161 | pat=$(printf "$pattern\\n") || framework_failure_
|
|---|
| 162 | grep -i "\\(\\)\\1$pat" in >out-regex || fail=1
|
|---|
| 163 | grep -i "$pat" in >out-dfa || fail=1
|
|---|
| 164 | compare_ out-regex out-dfa || fail=1
|
|---|
| 165 | grep -iF "$pat" in >out-fixed || fail=1
|
|---|
| 166 | compare_ out-regex out-fixed || fail=1
|
|---|
| 167 | done
|
|---|
| 168 | done
|
|---|
| 169 |
|
|---|
| 170 | # Try a unibyte test with ISO 8859-7, if available.
|
|---|
| 171 | if test "$(get-mb-cur-max el_GR.iso88597)" -eq 1; then
|
|---|
| 172 | LC_ALL=el_GR.iso88597
|
|---|
| 173 | export LC_ALL
|
|---|
| 174 |
|
|---|
| 175 | a='\323' # SIGMA
|
|---|
| 176 | b='\362' # stigma
|
|---|
| 177 | c='\363' # sigma
|
|---|
| 178 |
|
|---|
| 179 | printf "$a\\n$b\\n$c\\n" >in || framework_failure_
|
|---|
| 180 | for pattern in "$a" "$b" "$c"; do
|
|---|
| 181 | pat=$(printf "$pattern\\n") || framework_failure_
|
|---|
| 182 | grep -i "\\(\\)\\1$pat" in >out-regex || fail=1
|
|---|
| 183 | grep -i "$pat" in >out-dfa || fail=1
|
|---|
| 184 | compare_ out-regex out-dfa || fail=1
|
|---|
| 185 | grep -iF "$pat" in >out-fixed || fail=1
|
|---|
| 186 | compare_ out-regex out-fixed || fail=1
|
|---|
| 187 | done
|
|---|
| 188 | fi
|
|---|
| 189 |
|
|---|
| 190 | Exit $fail
|
|---|