#!/bin/sh
# Check of --unicode-subst, --byte-subst, --widechar-subst options.
set -e
iconv=../src/iconv_no_i18n

options_ascii='--unicode-subst=<U+%04X> --byte-subst=<0x%02x> --widechar-subst=<%08x>'
options_utf8='--unicode-subst=«U+%04X» --byte-subst=«0x%02x» --widechar-subst=«%08x»'

# Test of --byte-subst with an ASCII substitution.

cat > tmp-in <<\EOF
Böse Bübchen
EOF
$iconv $options_ascii -f ASCII -t ASCII < tmp-in > tmp-out
cat > tmp-ok <<\EOF
B<0xc3><0xb6>se B<0xc3><0xbc>bchen
EOF
cmp tmp-out tmp-ok

# Test of --byte-subst with a non-ASCII substitution.

if test "`(locale charmap) 2>/dev/null`" = UTF-8; then
  cat > tmp-in <<\EOF
Böse Bübchen
EOF
  $iconv $options_utf8 -f ASCII -t UTF-8 2>/dev/null < tmp-in > tmp-out
  cat > tmp-ok <<\EOF
B«0xc3»«0xb6»se B«0xc3»«0xbc»bchen
EOF
  cmp tmp-out tmp-ok
fi

if test "`(locale charmap) 2>/dev/null`" = UTF-8; then
  cat > tmp-in <<\EOF
Böse Bübchen
EOF
  $iconv $options_utf8 -f ASCII -t ISO-8859-1 2>/dev/null < tmp-in > tmp-out
  $iconv -f ISO-8859-1 -t UTF-8 < tmp-out > tmp-out2
  cat > tmp-ok <<\EOF
B«0xc3»«0xb6»se B«0xc3»«0xbc»bchen
EOF
  cmp tmp-out2 tmp-ok
fi

# Test of --byte-subst with a very long substitution.

cat > tmp-in <<\EOF
Böse Bübchen
EOF
$iconv --byte-subst='<0x%010000x>' -f ASCII -t ASCII < tmp-in > tmp-out
printf 'B<0x%010000x><0x%010000x>se B<0x%010000x><0x%010000x>bchen\n' 0xC3 0xB6 0xC3 0xBC > tmp-ok
cmp tmp-out tmp-ok

# Test of --unicode-subst with an ASCII substitution.

cat > tmp-in <<\EOF
Böse Bübchen
EOF
$iconv $options_ascii -f UTF-8 -t ASCII < tmp-in > tmp-out
cat > tmp-ok <<\EOF
B<U+00F6>se B<U+00FC>bchen
EOF
cmp tmp-out tmp-ok

cat > tmp-in <<\EOF
Russian (Русский)
EOF
$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
cat > tmp-ok <<\EOF
Russian (<U+0420><U+0443><U+0441><U+0441><U+043A><U+0438><U+0439>)
EOF
cmp tmp-out tmp-ok

# Test of --unicode-subst with a non-ASCII substitution.

if test "`(locale charmap) 2>/dev/null`" = UTF-8; then
  cat > tmp-in <<\EOF
Russian (Русский)
EOF
  $iconv $options_utf8 -f UTF-8 -t ISO-8859-1 2>/dev/null < tmp-in > tmp-out
  $iconv -f ISO-8859-1 -t UTF-8 < tmp-out > tmp-out2
  cat > tmp-ok <<\EOF
Russian («U+0420»«U+0443»«U+0441»«U+0441»«U+043A»«U+0438»«U+0439»)
EOF
  cmp tmp-out2 tmp-ok
fi

# Test of --unicode-subst with a very long substitution.

cat > tmp-in <<\EOF
Böse Bübchen
EOF
$iconv --unicode-subst='<U+%010000X>' -f UTF-8 -t ASCII < tmp-in > tmp-out
printf 'B<U+%010000X>se B<U+%010000X>bchen\n' 0x00F6 0x00FC > tmp-ok
cmp tmp-out tmp-ok

cat > tmp-in <<\EOF
Böse Bübchen
EOF
$iconv --byte-subst='<0x%010000x>' -f ASCII -t ASCII < tmp-in > tmp-out
printf 'B<0x%010000x><0x%010000x>se B<0x%010000x><0x%010000x>bchen\n' 0xC3 0xB6 0xC3 0xBC > tmp-ok
cmp tmp-out tmp-ok

# Test of --widechar-subst:
# wcrtomb() doesn't exist on FreeBSD 4.0 and is broken on MacOS X 10.3.
# So far this has been tested only on a glibc system with !__STDC_ISO_10646__.

if false && test "`(locale charmap) 2>/dev/null`" = UTF-8; then
  cat > tmp-in <<\EOF
Russian (Русский)
EOF
  $iconv -f char -t wchar_t < tmp-in > tmp-inw
  LC_ALL=C                $iconv $options_ascii -f wchar_t -t ASCII < tmp-inw > tmp-out1
  LC_ALL=de_DE.ISO-8859-1 $iconv $options_ascii -f wchar_t -t ASCII < tmp-inw > tmp-out2
  cat > tmp-ok <<\EOF
Russian (<00000420><00000443><00000441><00000441><0000043a><00000438><00000439>)
EOF
  cmp tmp-out1 tmp-ok
  cmp tmp-out2 tmp-ok
  if test "`(LC_ALL=de_DE.ISO-8859-1 locale charmap) 2>/dev/null`" = ISO-8859-1; then
    options_latin1=`echo " $options_utf8" | $iconv -f UTF-8 -t ISO-8859-1`
    LC_ALL=de_DE.ISO-8859-1 $iconv $options_latin1 -f wchar_t -t UTF-8 < tmp-inw > tmp-out1
    cat > tmp-ok <<\EOF
Russian («00000420»«00000443»«00000441»«00000441»«0000043a»«00000438»«00000439»)
EOF
    cmp tmp-out1 tmp-ok
  fi
fi

rm -f tmp-in* tmp-out* tmp-ok
exit 0
