File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / libiconv / tests / check-subst
Revision 1.1.1.3 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Wed Mar 17 13:38:46 2021 UTC (3 years, 9 months ago) by misho
Branches: libiconv, MAIN
CVS tags: v1_16p0, HEAD
libiconv 1.16

    1: #!/bin/sh
    2: # Check of --unicode-subst, --byte-subst, --widechar-subst options.
    3: set -e
    4: iconv=../src/iconv_no_i18n
    5: 
    6: options_ascii='--unicode-subst=<U+%04X> --byte-subst=<0x%02x> --widechar-subst=<%08x>'
    7: options_utf8='--unicode-subst=«U+%04X» --byte-subst=«0x%02x» --widechar-subst=«%08x»'
    8: 
    9: # Test of --byte-subst with an ASCII substitution.
   10: 
   11: cat > tmp-in <<\EOF
   12: Böse Bübchen
   13: EOF
   14: $iconv $options_ascii -f ASCII -t ASCII < tmp-in > tmp-out
   15: cat > tmp-ok <<\EOF
   16: B<0xc3><0xb6>se B<0xc3><0xbc>bchen
   17: EOF
   18: cmp tmp-out tmp-ok
   19: 
   20: # Test of --byte-subst with a non-ASCII substitution.
   21: 
   22: if test "`(locale charmap) 2>/dev/null`" = UTF-8; then
   23:   cat > tmp-in <<\EOF
   24: Böse Bübchen
   25: EOF
   26:   $iconv $options_utf8 -f ASCII -t UTF-8 2>/dev/null < tmp-in > tmp-out
   27:   cat > tmp-ok <<\EOF
   28: B«0xc3»«0xb6»se B«0xc3»«0xbc»bchen
   29: EOF
   30:   cmp tmp-out tmp-ok
   31: fi
   32: 
   33: if test "`(locale charmap) 2>/dev/null`" = UTF-8; then
   34:   cat > tmp-in <<\EOF
   35: Böse Bübchen
   36: EOF
   37:   $iconv $options_utf8 -f ASCII -t ISO-8859-1 2>/dev/null < tmp-in > tmp-out
   38:   $iconv -f ISO-8859-1 -t UTF-8 < tmp-out > tmp-out2
   39:   cat > tmp-ok <<\EOF
   40: B«0xc3»«0xb6»se B«0xc3»«0xbc»bchen
   41: EOF
   42:   cmp tmp-out2 tmp-ok
   43: fi
   44: 
   45: # Test of --byte-subst with a very long substitution.
   46: 
   47: cat > tmp-in <<\EOF
   48: Böse Bübchen
   49: EOF
   50: $iconv --byte-subst='<0x%010000x>' -f ASCII -t ASCII < tmp-in > tmp-out
   51: # This printf command crashes on Solaris 10.
   52: # See <http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6550204>.
   53: # Likewise on OSF/1 5.1.
   54: if printf 'B<0x%010000x><0x%010000x>se B<0x%010000x><0x%010000x>bchen\n' 0xC3 0xB6 0xC3 0xBC > tmp-ok 2>/dev/null; then
   55:   cmp tmp-out tmp-ok
   56: fi
   57: 
   58: # Test of --unicode-subst with an ASCII substitution.
   59: 
   60: cat > tmp-in <<\EOF
   61: Böse Bübchen
   62: EOF
   63: $iconv $options_ascii -f UTF-8 -t ASCII < tmp-in > tmp-out
   64: cat > tmp-ok <<\EOF
   65: B<U+00F6>se B<U+00FC>bchen
   66: EOF
   67: cmp tmp-out tmp-ok
   68: 
   69: cat > tmp-in <<\EOF
   70: Russian (Русский)
   71: EOF
   72: $iconv $options_ascii -f UTF-8 -t ISO-8859-1 2>/dev/null < tmp-in | $iconv -f ISO-8859-1 -t UTF-8 > tmp-out
   73: cat > tmp-ok <<\EOF
   74: Russian (<U+0420><U+0443><U+0441><U+0441><U+043A><U+0438><U+0439>)
   75: EOF
   76: cmp tmp-out tmp-ok
   77: 
   78: # Test of --unicode-subst with a non-ASCII substitution.
   79: 
   80: if test "`(locale charmap) 2>/dev/null`" = UTF-8; then
   81:   cat > tmp-in <<\EOF
   82: Russian (Русский)
   83: EOF
   84:   $iconv $options_utf8 -f UTF-8 -t ISO-8859-1 2>/dev/null < tmp-in > tmp-out
   85:   $iconv -f ISO-8859-1 -t UTF-8 < tmp-out > tmp-out2
   86:   cat > tmp-ok <<\EOF
   87: Russian («U+0420»«U+0443»«U+0441»«U+0441»«U+043A»«U+0438»«U+0439»)
   88: EOF
   89:   cmp tmp-out2 tmp-ok
   90: fi
   91: 
   92: # Test of --unicode-subst with a very long substitution.
   93: 
   94: cat > tmp-in <<\EOF
   95: Böse Bübchen
   96: EOF
   97: $iconv --unicode-subst='<U+%010000X>' -f UTF-8 -t ASCII < tmp-in > tmp-out
   98: # This printf command crashes on Solaris 10.
   99: # See <http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6550204>.
  100: if printf 'B<U+%010000X>se B<U+%010000X>bchen\n' 0x00F6 0x00FC > tmp-ok 2>/dev/null; then
  101:   cmp tmp-out tmp-ok
  102: fi
  103: 
  104: cat > tmp-in <<\EOF
  105: Böse Bübchen
  106: EOF
  107: $iconv --byte-subst='<0x%010000x>' -f ASCII -t ASCII < tmp-in > tmp-out
  108: # This printf command crashes on Solaris 10.
  109: # See <http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6550204>.
  110: # Likewise on OSF/1 5.1.
  111: if printf 'B<0x%010000x><0x%010000x>se B<0x%010000x><0x%010000x>bchen\n' 0xC3 0xB6 0xC3 0xBC > tmp-ok 2>/dev/null; then
  112:   cmp tmp-out tmp-ok
  113: fi
  114: 
  115: # Test of --widechar-subst:
  116: # wcrtomb() doesn't exist on FreeBSD 4.0 and is broken on MacOS X 10.3.
  117: # So far this has been tested only on a glibc system with !__STDC_ISO_10646__.
  118: 
  119: if false && test "`(locale charmap) 2>/dev/null`" = UTF-8; then
  120:   cat > tmp-in <<\EOF
  121: Russian (Русский)
  122: EOF
  123:   $iconv -f char -t wchar_t < tmp-in > tmp-inw
  124:   LC_ALL=C                $iconv $options_ascii -f wchar_t -t ASCII < tmp-inw > tmp-out1
  125:   LC_ALL=de_DE.ISO-8859-1 $iconv $options_ascii -f wchar_t -t ASCII < tmp-inw > tmp-out2
  126:   cat > tmp-ok <<\EOF
  127: Russian (<00000420><00000443><00000441><00000441><0000043a><00000438><00000439>)
  128: EOF
  129:   cmp tmp-out1 tmp-ok
  130:   cmp tmp-out2 tmp-ok
  131:   if test "`(LC_ALL=de_DE.ISO-8859-1 locale charmap) 2>/dev/null`" = ISO-8859-1; then
  132:     options_latin1=`echo " $options_utf8" | $iconv -f UTF-8 -t ISO-8859-1`
  133:     LC_ALL=de_DE.ISO-8859-1 $iconv $options_latin1 -f wchar_t -t UTF-8 < tmp-inw > tmp-out1
  134:     cat > tmp-ok <<\EOF
  135: Russian («00000420»«00000443»«00000441»«00000441»«0000043a»«00000438»«00000439»)
  136: EOF
  137:     cmp tmp-out1 tmp-ok
  138:   fi
  139: fi
  140: 
  141: rm -f tmp-in* tmp-out* tmp-ok
  142: exit 0

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>