Blame tests/case-fold-titlecase

Packit 709fb3
#!/bin/sh
Packit 709fb3
# Check that case folding works even with titlecase and similarly odd chars.
Packit 709fb3
Packit 709fb3
# Copyright 2014-2017 Free Software Foundation, Inc.
Packit 709fb3
Packit 709fb3
# This program is free software: you can redistribute it and/or modify
Packit 709fb3
# it under the terms of the GNU General Public License as published by
Packit 709fb3
# the Free Software Foundation, either version 3 of the License, or
Packit 709fb3
# (at your option) any later version.
Packit 709fb3
Packit 709fb3
# This program is distributed in the hope that it will be useful,
Packit 709fb3
# but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit 709fb3
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit 709fb3
# GNU General Public License for more details.
Packit 709fb3
Packit 709fb3
# You should have received a copy of the GNU General Public License
Packit 709fb3
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
Packit 709fb3
Packit 709fb3
. "${srcdir=.}/init.sh"; path_prepend_ ../src
Packit 709fb3
Packit 709fb3
require_en_utf8_locale_
Packit 709fb3
require_compiled_in_MB_support
Packit 709fb3
LC_ALL=en_US.UTF-8
Packit 709fb3
export LC_ALL
Packit 709fb3
Packit 709fb3
fail=0
Packit 709fb3
Packit 709fb3
for testcase in \
Packit 709fb3
  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
Packit 709fb3
do
Packit 709fb3
  case $testcase in
Packit 709fb3
    0)
Packit 709fb3
      a='\302\265'     # U+00B5
Packit 709fb3
      b='\316\234'     # U+039C
Packit 709fb3
      c='\316\274'     # U+03BC
Packit 709fb3
      ;;
Packit 709fb3
    1)
Packit 709fb3
      a='\111'         # U+0049
Packit 709fb3
      b='\151'         # U+0069
Packit 709fb3
      c='\304\260'     # U+0130
Packit 709fb3
      ;;
Packit 709fb3
    2)
Packit 709fb3
      a='\111'         # U+0049
Packit 709fb3
      b='\151'         # U+0069
Packit 709fb3
      c='\304\261'     # U+0131
Packit 709fb3
      ;;
Packit 709fb3
    3)
Packit 709fb3
      a='\123'         # U+0053
Packit 709fb3
      b='\163'         # U+0073
Packit 709fb3
      c='\305\277'     # U+017F
Packit 709fb3
      ;;
Packit 709fb3
    4)
Packit 709fb3
      a='\307\204'     # U+01C4
Packit 709fb3
      b='\307\205'     # U+01C5
Packit 709fb3
      c='\307\206'     # U+01C6
Packit 709fb3
      ;;
Packit 709fb3
    5)
Packit 709fb3
      a='\307\207'     # U+01C7
Packit 709fb3
      b='\307\210'     # U+01C8
Packit 709fb3
      c='\307\211'     # U+01C9
Packit 709fb3
      ;;
Packit 709fb3
    6)
Packit 709fb3
      a='\307\212'     # U+01CA
Packit 709fb3
      b='\307\213'     # U+01CB
Packit 709fb3
      c='\307\214'     # U+01CC
Packit 709fb3
      ;;
Packit 709fb3
    7)
Packit 709fb3
      a='\307\261'     # U+01F1
Packit 709fb3
      b='\307\262'     # U+01F2
Packit 709fb3
      c='\307\263'     # U+01F3
Packit 709fb3
      ;;
Packit 709fb3
    8)
Packit 709fb3
      a='\315\205'     # U+0345
Packit 709fb3
      b='\316\231'     # U+0399
Packit 709fb3
      c='\316\271'     # U+03B9
Packit 709fb3
      ;;
Packit 709fb3
    9)
Packit 709fb3
      a='\316\243'     # U+03A3
Packit 709fb3
      b='\317\202'     # U+03C2
Packit 709fb3
      c='\317\203'     # U+03C3
Packit 709fb3
      ;;
Packit 709fb3
    10)
Packit 709fb3
      a='\316\222'     # U+0392
Packit 709fb3
      b='\316\262'     # U+03B2
Packit 709fb3
      c='\317\220'     # U+03D0
Packit 709fb3
      ;;
Packit 709fb3
    11)
Packit 709fb3
      a='\316\230'     # U+0398
Packit 709fb3
      b='\316\270'     # U+03B8
Packit 709fb3
      c='\317\221'     # U+03D1
Packit 709fb3
      ;;
Packit 709fb3
    12)
Packit 709fb3
      a='\316\246'     # U+03A6
Packit 709fb3
      b='\317\206'     # U+03C6
Packit 709fb3
      c='\317\225'     # U+03D5
Packit 709fb3
      ;;
Packit 709fb3
    13)
Packit 709fb3
      a='\316\240'     # U+03A0
Packit 709fb3
      b='\317\200'     # U+03C0
Packit 709fb3
      c='\317\226'     # U+03D6
Packit 709fb3
      ;;
Packit 709fb3
    14)
Packit 709fb3
      a='\316\232'     # U+039A
Packit 709fb3
      b='\316\272'     # U+03BA
Packit 709fb3
      c='\317\260'     # U+03F0
Packit 709fb3
      ;;
Packit 709fb3
    15)
Packit 709fb3
      a='\316\241'     # U+03A1
Packit 709fb3
      b='\317\201'     # U+03C1
Packit 709fb3
      c='\317\261'     # U+03F1
Packit 709fb3
      ;;
Packit 709fb3
    16)
Packit 709fb3
      a='\316\230'     # U+0398
Packit 709fb3
      b='\316\270'     # U+03B8
Packit 709fb3
      c='\317\264'     # U+03F4
Packit 709fb3
      ;;
Packit 709fb3
    17)
Packit 709fb3
      a='\316\225'     # U+0395
Packit 709fb3
      b='\316\265'     # U+03B5
Packit 709fb3
      c='\317\265'     # U+03F5
Packit 709fb3
      ;;
Packit 709fb3
    18)
Packit 709fb3
      a='\341\271\240' # U+1E60
Packit 709fb3
      b='\341\271\241' # U+1E61
Packit 709fb3
      c='\341\272\233' # U+1E9B
Packit 709fb3
      ;;
Packit 709fb3
    19)
Packit 709fb3
      a='\303\237'     # U+00DF
Packit 709fb3
      b='\303\237'     # U+00DF
Packit 709fb3
      c='\341\272\236' # U+1E9E
Packit 709fb3
      ;;
Packit 709fb3
    20)
Packit 709fb3
      a='\316\231'     # U+0399
Packit 709fb3
      b='\316\271'     # U+03B9
Packit 709fb3
      c='\341\276\276' # U+1FBE
Packit 709fb3
      ;;
Packit 709fb3
    21)
Packit 709fb3
      a='\316\251'     # U+03A9
Packit 709fb3
      b='\317\211'     # U+03C9
Packit 709fb3
      c='\342\204\246' # U+2126
Packit 709fb3
      ;;
Packit 709fb3
    22)
Packit 709fb3
      a='\113'         # U+004B
Packit 709fb3
      b='\153'         # U+006B
Packit 709fb3
      c='\342\204\252' # U+212A
Packit 709fb3
      ;;
Packit 709fb3
    23)
Packit 709fb3
      a='\303\205'     # U+00C5
Packit 709fb3
      b='\303\245'     # U+00E5
Packit 709fb3
      c='\342\204\253' # U+212B
Packit 709fb3
      ;;
Packit 709fb3
    24)
Packit 709fb3
      a='\316\243'     # U+03A3
Packit 709fb3
      b='\317\203'     # U+03C3
Packit 709fb3
      c='\317\262'     # U+03F2
Packit 709fb3
      ;;
Packit 709fb3
  esac
Packit 709fb3
Packit 709fb3
  printf "$a\\n$b\\n$c\\n" >in || framework_failure_
Packit 709fb3
  for pattern in "$a" "$b" "$c"; do
Packit 709fb3
     pat=$(printf "$pattern\\n") || framework_failure_
Packit 709fb3
     grep -i "\\(\\)\\1$pat" in >out-regex || fail=1
Packit 709fb3
     grep -i "$pat" in >out-dfa || fail=1
Packit 709fb3
     compare_ out-regex out-dfa || fail=1
Packit 709fb3
     grep -iF "$pat" in >out-fixed || fail=1
Packit 709fb3
     compare_ out-regex out-fixed || fail=1
Packit 709fb3
  done
Packit 709fb3
done
Packit 709fb3
Packit 709fb3
# Try a unibyte test with ISO 8859-7, if available.
Packit 709fb3
if test "$(get-mb-cur-max el_GR.iso88597)" -eq 1; then
Packit 709fb3
  LC_ALL=el_GR.iso88597
Packit 709fb3
  export LC_ALL
Packit 709fb3
Packit 709fb3
  a='\323' # SIGMA
Packit 709fb3
  b='\362' # stigma
Packit 709fb3
  c='\363' # sigma
Packit 709fb3
Packit 709fb3
  printf "$a\\n$b\\n$c\\n" >in || framework_failure_
Packit 709fb3
  for pattern in "$a" "$b" "$c"; do
Packit 709fb3
     pat=$(printf "$pattern\\n") || framework_failure_
Packit 709fb3
     grep -i "\\(\\)\\1$pat" in >out-regex || fail=1
Packit 709fb3
     grep -i "$pat" in >out-dfa || fail=1
Packit 709fb3
     compare_ out-regex out-dfa || fail=1
Packit 709fb3
     grep -iF "$pat" in >out-fixed || fail=1
Packit 709fb3
     compare_ out-regex out-fixed || fail=1
Packit 709fb3
  done
Packit 709fb3
fi
Packit 709fb3
Packit 709fb3
Exit $fail