# Available tests for iconv(1) (and therefore iconv(3)) in GNU libc.
# Copyright (C) 1998-2014 Free Software Foundation, Inc.
# This file is part of the GNU C Library.
# Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
#

# The GNU C Library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.

# The GNU C Library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# Lesser General Public License for more details.

# You should have received a copy of the GNU Lesser General Public
# License along with the GNU C Library; if not, see
# <http://www.gnu.org/licenses/>.

# Each line consists of at least four entries:
# 1.  input file name.
# 2.  output file name; this is different from the input file name only for
#     conversions which do not produce the same output when the transformation
#     is applied back and forth.
# 3.  Y or N depending of whether the character set contains ASCII as a
#     subset or not.
# 4.
# ...
# N.  target coded character set.

ISO-8859-1		ISO-8859-1		Y	UTF8
ISO-8859-2		ISO-8859-2		Y	UCS4 UTF8
ISO-8859-3		ISO-8859-3		Y	UTF8
ISO-8859-4		ISO-8859-4		Y	UTF8
ISO-8859-5		ISO-8859-5		Y	UTF8
ISO-8859-6		ISO-8859-6		Y	UTF8
ISO-8859-7		ISO-8859-7		Y	UTF8
ISO-8859-8		ISO-8859-8		Y	UTF8
ISO-8859-9		ISO-8859-9		Y	UTF8
ISO-8859-9E		ISO-8859-9E		Y	UTF8
ISO-8859-10		ISO-8859-10		Y	UCS-2BE UTF8
ISO-8859-14		ISO-8859-14		Y	UTF8
ISO-8859-15		ISO-8859-15		Y	UTF8
ANSI_X3.4-1968		ANSI_X3.4-1968		Y	UTF8
BS_4730			BS_4730			Y	UTF8
CSA_Z243.4-1985-1	CSA_Z243.4-1985-1	Y	UCS-2BE
CSA_Z243.4-1985-2	CSA_Z243.4-1985-2	Y	UCS4
DIN_66003		DIN_66003		Y	UTF8
DS_2089			DS_2089			Y	UTF8
ES			ES			Y	UTF8
ES2			ES2			Y	UTF8
GB_1988-80		GB_1988-80		Y	UTF8
IT			IT			Y	UTF8
JIS_C6220-1969-RO	JIS_C6220-1969-RO	Y	UTF8
JIS_C6229-1984-B	JIS_C6229-1984-B	Y	UTF8
JUS_I.B1.002		JUS_I.B1.002		Y	UTF8
KSC5636			KSC5636			Y	UTF8
MSZ_7795.3		MSZ_7795.3		Y	UTF8
NC_NC00-10		NC_NC00-10		Y	UTF8
NF_Z_62-010		NF_Z_62-010		Y	UTF8
NF_Z_62-010_1973	NF_Z_62-010_1973	Y	UTF8
NS_4551-1		NS_4551-1		Y	UTF8
NS_4551-2		NS_4551-2		Y	UTF8
PT			PT			Y	UTF8
PT2			PT2			Y	UTF8
SEN_850200_B		SEN_850200_B		Y	UTF8
SEN_850200_C		SEN_850200_C		Y	UTF8
KOI-8			KOI-8			Y	UTF8
KOI8-R			KOI8-R			Y	UTF8
CP1250			CP1250			Y	UTF8
CP1251			CP1251			Y	UTF8
CP1252			CP1252			Y	UTF8
CP1253			CP1253			Y	UTF8
CP1254			CP1254			Y	UTF8
# CP1255 and WINDOWS-1255 are the same encodings. The first test works with the
# charmap as well. The second one tests character composition/decomposition.
CP1255			CP1255			Y	UTF8
WINDOWS-1255		WINDOWS-1255		N	UTF8
CP1256			CP1256			Y	UTF8
CP1257			CP1257			Y	UTF8
# CP1258 and WINDOWS-1258 are the same encodings. The first test works with the
# charmap as well. The second one tests character composition/decomposition.
CP1258			CP1258			Y	UTF8
WINDOWS-1258		WINDOWS-1258		N	UTF8
ISO-2022-JP		ISO-2022-JP		N	UTF8
ISO-2022-JP-2		ISO-2022-JP-2		N	UTF8
ISO-2022-KR		ISO-2022-KR		N	UTF8
ISO-2022-CN		ISO-2022-CN		N	UTF8
ISO-2022-CN-EXT		ISO-2022-CN-EXT		N	UTF8
EUC-KR			EUC-KR			Y	UTF8
EUC-JP			EUC-JP			Y	UTF8
EUC-CN			EUC-CN			Y	UTF8
EUC-TW			EUC-TW			Y	UTF8
GBK			GBK			Y	UTF8
BIG5HKSCS		BIG5HKSCS		Y	UTF8
UTF-7			UTF-7			N	UTF8
IBM856			IBM856			N	UTF8
IBM922			IBM922			Y	UTF8
IBM930			IBM930			N	UTF8
IBM933			IBM933			N	UTF8
IBM935			IBM935			N	UTF8
IBM937			IBM937			N	UTF8
IBM939			IBM939			N	UTF8
IBM932			IBM932			Y	UTF8
IBM943			IBM943			Y	UTF8
IBM1046			IBM1046			Y	UTF8
IBM1124			IBM1124			Y	UTF8
IBM1129			IBM1129			Y	UTF8
IBM1160			IBM1160			N	UTF8
IBM1161			IBM1161			Y	UTF8
IBM1132			IBM1132                 N       UTF8
IBM1133			IBM1133			Y	UTF8
IBM1162			IBM1162			Y	UTF8
IBM1163			IBM1163			Y	UTF8
IBM1164			IBM1164			N	UTF8
TCVN-5712		TCVN-5712		Y	UTF8
EUC-JISX0213		EUC-JISX0213		Y	UTF8
SHIFT_JISX0213		SHIFT_JISX0213		Y	UTF8
ISO-2022-JP-3		ISO-2022-JP-3		N	UTF8
TSCII			TSCII			Y	UTF8
IBM1025			IBM1025			N	UTF8
IBM1122			IBM1122			N	UTF8
IBM1137			IBM1137			N	UTF8
IBM1153			IBM1153			N	UTF8
IBM1154			IBM1154			N	UTF8
IBM1155			IBM1155			N	UTF8
IBM1156			IBM1156			N	UTF8
IBM1157			IBM1157			N	UTF8
IBM1158			IBM1158			N	UTF8
IBM803			IBM803			-	UTF8
IBM901			IBM901			N	UTF8
IBM902			IBM902			N	UTF8
IBM921			IBM921			N	UTF8
IBM1008			IBM1008			N	UTF8
IBM1097			IBM1097			Y	UTF8
IBM1112			IBM1112			N	UTF8
IBM1123			IBM1123			N	UTF8
IBM1130			IBM1130			N	UTF8
IBM1140			IBM1140			N	UTF8
IBM1141			IBM1141			N	UTF8
IBM1142			IBM1142			N	UTF8
IBM1143			IBM1143			N	UTF8
IBM1144			IBM1144			N	UTF8
IBM1145			IBM1145			N	UTF8
IBM1146			IBM1146			N	UTF8
IBM1147			IBM1147			N	UTF8
IBM1148			IBM1148			N	UTF8
IBM1149			IBM1149			N	UTF8
IBM1166			IBM1166			N	UTF8
IBM1167			IBM1167			N	UTF8
IBM4517			IBM4517			-	UTF8
IBM4899			IBM4899			-	UTF8
IBM4909			IBM4909			N	UTF8
IBM4971			IBM4971			N	UTF8
IBM5347			IBM5347			N	UTF8
IBM9030			IBM9030			N	UTF8
IBM9066			IBM9066			N	UTF8
IBM9448			IBM9448			N	UTF8
IBM12712		IBM12712		N	UTF8
IBM16804		IBM16804		-	UTF8
IBM1364			IBM1364			N	UTF8
IBM1371			IBM1371			N	UTF8
IBM1388			IBM1388			N	UTF8
IBM1390			IBM1390			N	UTF8
IBM1399			IBM1399			N	UTF8
ISO_11548-1		ISO_11548-1		-	UTF8
MIK			MIK			Y	UTF8
BRF			BRF			-	UTF8
MAC-SAMI		MAC-SAMI		Y	UTF8
MAC-CENTRALEUROPE	MAC-CENTRALEUROPE	Y	UTF8
KOI8-RU			KOI8-RU			Y	UTF8
