/*
 * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 *
 * This code is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License version 2 only, as
 * published by the Free Software Foundation.
 *
 * This code 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 General Public License
 * version 2 for more details (a copy is included in the LICENSE file that
 * accompanied this code).
 *
 * You should have received a copy of the GNU General Public License version
 * 2 along with this work; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 * or visit www.oracle.com if you need additional information or have any
 * questions.
 */

/* @test
   @bug 4513767 4961027 6217210
   @summary Checks canonical names match between old and (NIO) core charsets
 */
import java.io.InputStreamReader;
import java.io.IOException;

public class CheckHistoricalNames {
    static int failed = 0;
    public static void main (String[] args) throws Exception {
        checkHistoricalName("ASCII");
        checkHistoricalName("Cp1252");
        checkHistoricalName("ISO8859_1");
        checkHistoricalName("UnicodeBigUnmarked");
        checkHistoricalName("UnicodeLittle");
        checkHistoricalName("UnicodeLittleUnmarked");
        checkHistoricalName("UTF8");
        checkHistoricalName("UTF-16");

        checkMappedName("UnicodeBig", "UTF-16");
        checkMappedName("US-ASCII", "ASCII");
        checkMappedName("ISO-8859-1", "ISO8859_1");
        checkMappedName("UTF-8", "UTF8");
        checkMappedName("UTF-16BE", "UnicodeBigUnmarked");
        checkMappedName("UTF-16LE", "UnicodeLittleUnmarked");

        checkHistoricalName("ISO8859_2");
        checkHistoricalName("ISO8859_4");
        checkHistoricalName("ISO8859_5");
        checkHistoricalName("ISO8859_7");
        checkHistoricalName("ISO8859_9");
        checkHistoricalName("ISO8859_13");
        checkHistoricalName("KOI8_R");
        checkHistoricalName("Cp1250");
        checkHistoricalName("Cp1251");
        checkHistoricalName("Cp1253");
        checkHistoricalName("Cp1254");
        checkHistoricalName("Cp1257");

        checkMappedName("ISO-8859-2", "ISO8859_2");
        checkMappedName("ISO-8859-4", "ISO8859_4");
        checkMappedName("ISO-8859-5", "ISO8859_5");
        checkMappedName("ISO-8859-7", "ISO8859_7");
        checkMappedName("ISO-8859-9", "ISO8859_9");
        checkMappedName("ISO-8859-13", "ISO8859_13");
        checkMappedName("KOI8-R", "KOI8_R");
        checkMappedName("windows-1250", "Cp1250");
        checkMappedName("windows-1251","Cp1251");
        checkMappedName("windows-1253", "Cp1253");
        checkMappedName("windows-1254", "Cp1254");
        checkMappedName("windows-1257", "Cp1257");

        checkHistoricalName("EUC_CN");
        checkHistoricalName("EUC_JP");
        checkHistoricalName("EUC_JP_LINUX");
        checkHistoricalName("EUC_KR");
        checkHistoricalName("EUC_TW");
        checkHistoricalName("ISO2022CN");
        checkHistoricalName("ISO2022JP");
        checkHistoricalName("ISO2022KR");
        checkHistoricalName("ISO8859_3");
        checkHistoricalName("ISO8859_6");
        checkHistoricalName("ISO8859_8");
        checkHistoricalName("Cp1255");
        checkHistoricalName("Cp1256");
        checkHistoricalName("Cp1258");
        checkHistoricalName("MS936");
        checkHistoricalName("MS949");
        checkHistoricalName("MS950");
        checkHistoricalName("TIS620");

        checkMappedName("EUC-CN", "EUC_CN");
        checkMappedName("EUC-JP", "EUC_JP");
        checkMappedName("EUC-JP-LINUX", "EUC_JP_LINUX");
        checkMappedName("EUC-TW", "EUC_TW");
        checkMappedName("EUC-KR", "EUC_KR");
        checkMappedName("ISO-2022-CN", "ISO2022CN");
        checkMappedName("ISO-2022-JP", "ISO2022JP");
        checkMappedName("ISO-2022-KR", "ISO2022KR");
        checkMappedName("ISO-8859-3", "ISO8859_3");
        checkMappedName("ISO-8859-6", "ISO8859_6");
        checkMappedName("ISO-8859-8", "ISO8859_8");
        checkMappedName("windows-1255", "Cp1255");
        checkMappedName("windows-1256", "Cp1256");
        checkMappedName("windows-1258", "Cp1258");
        checkMappedName("windows-936", "GBK");
        checkMappedName("windows-949", "MS949");
        checkMappedName("windows-950", "MS950");
        checkMappedName("x-MS950-HKSCS", "MS950_HKSCS");
        checkMappedName("x-PCK", "PCK");
        checkMappedName("Shift_JIS", "SJIS");
        checkMappedName("x-JISAutoDetect", "JISAutoDetect");
        checkMappedName("TIS-620", "TIS620");
        checkMappedName("x-Big5-Solaris", "Big5_Solaris");

        checkHistoricalName("Cp037");
        checkHistoricalName("Cp1006");
        checkHistoricalName("Cp1025");
        checkHistoricalName("Cp1026");
        checkHistoricalName("Cp1046");
        checkHistoricalName("Cp1047");
        checkHistoricalName("Cp1097");
        checkHistoricalName("Cp1098");
        checkHistoricalName("Cp1112");
        checkHistoricalName("Cp1122");
        checkHistoricalName("Cp1123");
        checkHistoricalName("Cp1124");
        checkHistoricalName("Cp1140");
        checkHistoricalName("Cp1141");
        checkHistoricalName("Cp1142");
        checkHistoricalName("Cp1143");
        checkHistoricalName("Cp1144");
        checkHistoricalName("Cp1145");
        checkHistoricalName("Cp1146");
        checkHistoricalName("Cp1147");
        checkHistoricalName("Cp1148");
        checkHistoricalName("Cp1149");
        checkHistoricalName("Cp1381");
        checkHistoricalName("Cp1383");
        checkHistoricalName("Cp273");
        checkHistoricalName("Cp277");
        checkHistoricalName("Cp278");
        checkHistoricalName("Cp280");
        checkHistoricalName("Cp284");
        checkHistoricalName("Cp285");
        checkHistoricalName("Cp297");
        checkHistoricalName("Cp33722");
        checkHistoricalName("Cp420");
        checkHistoricalName("Cp424");
        checkHistoricalName("Cp437");
        checkHistoricalName("Cp500");
        checkHistoricalName("Cp737");
        checkHistoricalName("Cp775");
        checkHistoricalName("Cp833");
        checkHistoricalName("Cp838");
        checkHistoricalName("Cp850");
        checkHistoricalName("Cp852");
        checkHistoricalName("Cp855");
        checkHistoricalName("Cp856");
        checkHistoricalName("Cp857");
        checkHistoricalName("Cp858");
        checkHistoricalName("Cp860");
        checkHistoricalName("Cp861");
        checkHistoricalName("Cp862");
        checkHistoricalName("Cp863");
        checkHistoricalName("Cp864");
        checkHistoricalName("Cp865");
        checkHistoricalName("Cp866");
        checkHistoricalName("Cp868");
        checkHistoricalName("Cp869");
        checkHistoricalName("Cp870");
        checkHistoricalName("Cp871");
        checkHistoricalName("Cp874");
        checkHistoricalName("Cp875");
        checkHistoricalName("Cp918");
        checkHistoricalName("Cp921");
        checkHistoricalName("Cp922");
        checkHistoricalName("Cp933");
        checkHistoricalName("Cp939");
        checkHistoricalName("Cp949");
        checkHistoricalName("Cp964");
        checkHistoricalName("Cp970");

        checkMappedName("IBM037", "Cp037");
        checkMappedName("IBM1006", "Cp1006");
        checkMappedName("IBM1025", "Cp1025");
        checkMappedName("IBM1026", "Cp1026");
        checkMappedName("x-IBM1046", "Cp1046");
        checkMappedName("IBM1047", "Cp1047");
        checkMappedName("IBM1097", "Cp1097");
        checkMappedName("IBM1098", "Cp1098");
        checkMappedName("IBM1112", "Cp1112");
        checkMappedName("IBM1122", "Cp1122");
        checkMappedName("IBM1123", "Cp1123");
        checkMappedName("IBM1124", "Cp1124");
        checkMappedName("IBM1166", "Cp1166");
        checkMappedName("IBM01140", "Cp1140");
        checkMappedName("IBM01141", "Cp1141");
        checkMappedName("IBM01142", "Cp1142");
        checkMappedName("IBM01143", "Cp1143");
        checkMappedName("IBM01144", "Cp1144");
        checkMappedName("IBM01145", "Cp1145");
        checkMappedName("IBM01146", "Cp1146");
        checkMappedName("IBM01147", "Cp1147");
        checkMappedName("IBM01148", "Cp1148");
        checkMappedName("IBM01149", "Cp1149");
        checkMappedName("IBM1381", "Cp1381");
        checkMappedName("IBM1383", "Cp1383");
        checkMappedName("IBM273", "Cp273");
        checkMappedName("IBM277", "Cp277");
        checkMappedName("IBM278", "Cp278");
        checkMappedName("IBM280", "Cp280");
        checkMappedName("IBM284", "Cp284");
        checkMappedName("IBM285", "Cp285");
        checkMappedName("IBM297", "Cp297");
        checkMappedName("IBM33722", "Cp33722");
        checkMappedName("IBM420", "Cp420");
        checkMappedName("IBM424", "Cp424");
        checkMappedName("IBM437", "Cp437");
        checkMappedName("IBM500", "Cp500");
        checkMappedName("IBM737", "Cp737");
        checkMappedName("IBM775", "Cp775");
        checkMappedName("IBM838", "Cp838");
        checkMappedName("IBM850", "Cp850");
        checkMappedName("IBM852", "Cp852");
        checkMappedName("IBM855", "Cp855");
        checkMappedName("IBM856", "Cp856");
        checkMappedName("IBM857", "Cp857");
        checkMappedName("IBM00858", "Cp858");
        checkMappedName("IBM833", "Cp833");
        checkMappedName("IBM860", "Cp860");
        checkMappedName("IBM861", "Cp861");
        checkMappedName("IBM862", "Cp862");
        checkMappedName("IBM863", "Cp863");
        checkMappedName("IBM864", "Cp864");
        checkMappedName("IBM865", "Cp865");
        checkMappedName("IBM866", "Cp866");
        checkMappedName("IBM868", "Cp868");
        checkMappedName("IBM869", "Cp869");
        checkMappedName("IBM870", "Cp870");
        checkMappedName("IBM871", "Cp871");
        checkMappedName("IBM874", "Cp874");
        checkMappedName("IBM875", "Cp875");
        checkMappedName("IBM918", "Cp918");
        checkMappedName("IBM921", "Cp921");
        checkMappedName("IBM922", "Cp922");
        checkMappedName("x-IBM930", "Cp930");
        checkMappedName("IBM933", "Cp933");
        checkMappedName("x-IBM935", "Cp935");
        checkMappedName("x-IBM937", "Cp937");
        checkMappedName("IBM939", "Cp939");
        checkMappedName("x-IBM942", "Cp942");
        checkMappedName("x-IBM942C", "Cp942C");
        checkMappedName("x-IBM943", "Cp943");
        checkMappedName("x-IBM943C", "Cp943C");
        checkMappedName("x-IBM948", "Cp948");
        checkMappedName("IBM949", "Cp949");
        checkMappedName("x-IBM949C", "Cp949C");
        checkMappedName("x-IBM950", "Cp950");
        checkMappedName("IBM964", "Cp964");
        checkMappedName("IBM970", "Cp970");

        checkHistoricalName("MacArabic");
        checkHistoricalName("MacCentralEurope");
        checkHistoricalName("MacCroatian");
        checkHistoricalName("MacCyrillic");
        checkHistoricalName("MacDingbat");
        checkHistoricalName("MacGreek");
        checkHistoricalName("MacHebrew");
        checkHistoricalName("MacIceland");
        checkHistoricalName("MacRoman");
        checkHistoricalName("MacRomania");
        checkHistoricalName("MacSymbol");
        checkHistoricalName("MacThai");
        checkHistoricalName("MacTurkish");
        checkHistoricalName("MacUkraine");

        checkMappedName("x-MacArabic", "MacArabic");
        checkMappedName("x-MacCentralEurope", "MacCentralEurope");
        checkMappedName("x-MacCroatian", "MacCroatian");
        checkMappedName("x-MacCyrillic", "MacCyrillic");
        checkMappedName("x-MacDingbat", "MacDingbat");
        checkMappedName("x-MacGreek", "MacGreek");
        checkMappedName("x-MacHebrew", "MacHebrew");
        checkMappedName("x-MacIceland", "MacIceland");
        checkMappedName("x-MacRoman", "MacRoman");
        checkMappedName("x-MacRomania", "MacRomania");
        checkMappedName("x-MacSymbol", "MacSymbol");
        checkMappedName("x-MacThai", "MacThai");
        checkMappedName("x-MacTurkish", "MacTurkish");
        checkMappedName("x-MacUkraine", "MacUkraine");

        if (failed != 0)
            throw new Exception("Test Failed: " + failed);
        else
            System.out.println("Test Passed!");
    }

    private static void checkHistoricalName(String name) throws Exception {
        checkMappedName(name, name);
    }

    private static void checkMappedName(String alias, String canonical)
        throws Exception {
        InputStreamReader reader = new InputStreamReader(System.in, alias);
        if (!reader.getEncoding().equals(canonical)) {
            System.out.println("Failed canonical names : mismatch for " + alias
                               + " - expected " + canonical
                               + ", got " + reader.getEncoding());
            failed++;
        }
    }
}
