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