17935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert/*
27935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert *******************************************************************************
37935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Copyright (C) 2001-2010, International Business Machines Corporation and    *
47935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * others. All Rights Reserved.                                                *
57935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert *******************************************************************************
67935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */
77935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
87935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert/**
97935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Port From:   ICU4C v1.8.1 : format : IntlTestDateFormatAPI
107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Source File: $ICU4CRoot/source/test/intltest/dtfmapts.cpp
117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert **/
127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertpackage com.ibm.icu.dev.test.format;
147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport java.text.FieldPosition;
167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport java.text.ParsePosition;
177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport java.util.Date;
187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport com.ibm.icu.text.DateFormat;
207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport com.ibm.icu.text.DecimalFormat;
217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport com.ibm.icu.text.NumberFormat;
227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport com.ibm.icu.text.SimpleDateFormat;
237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert/*
257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * This is an API test, not a unit test.  It doesn't test very many cases, and doesn't
267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * try to test the full functionality.  It just calls each function in the class and
277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * verifies that it works on a basic level.
287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */
297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertpublic class IntlTestDateFormatAPIC extends com.ibm.icu.dev.test.TestFmwk {
307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public static void main(String[] args)  throws Exception {
327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        new IntlTestDateFormatAPIC().run(args);
337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    }
347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    /**
367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * Test hiding of parse() and format() APIs in the Format hierarchy.
377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * We test the entire hierarchy, even though this test is located in
387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     * the DateFormat API test.
397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert     */
407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    public void TestNameHiding() {
417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        // N.B.: This test passes if it COMPILES, since it's a test of
437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        // compile-time name hiding.
447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        Date dateObj = new Date(0);
467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        Number numObj = new Double(3.1415926535897932384626433832795);
477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        StringBuffer strBuffer = new StringBuffer("");
487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        String str;
497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        FieldPosition fpos = new FieldPosition(0);
507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        ParsePosition ppos = new ParsePosition(0);
517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        // DateFormat calling Format API
537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        {
547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            logln("DateFormat");
557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            DateFormat dateFmt = DateFormat.getInstance();
567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            if (dateFmt != null) {
577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                str = dateFmt.format(dateObj);
587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                strBuffer = dateFmt.format(dateObj, strBuffer, fpos);
597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            } else {
607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                errln("FAIL: Can't create DateFormat");
617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            }
627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        }
637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        // SimpleDateFormat calling Format & DateFormat API
657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        {
667935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            logln("SimpleDateFormat");
677935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            SimpleDateFormat sdf = new SimpleDateFormat();
687935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            // Format API
697935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            str = sdf.format(dateObj);
707935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            strBuffer = sdf.format(dateObj, strBuffer, fpos);
717935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            // DateFormat API
727935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            strBuffer = sdf.format(new Date(0), strBuffer, fpos);
737935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            str = sdf.format(new Date(0));
747935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            try {
757935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                sdf.parse(str);
767935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                sdf.parse(str, ppos);
777935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            } catch (java.text.ParseException pe) {
787935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                System.out.println(pe);
797935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            }
807935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        }
817935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
827935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        // NumberFormat calling Format API
837935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        {
847935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            logln("NumberFormat");
857935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            NumberFormat fmt = NumberFormat.getInstance();
867935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            if (fmt != null) {
877935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                str = fmt.format(numObj);
887935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                strBuffer = fmt.format(numObj, strBuffer, fpos);
897935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            } else {
907935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                errln("FAIL: Can't create NumberFormat");
917935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            }
927935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        }
937935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
947935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        // DecimalFormat calling Format & NumberFormat API
957935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        {
967935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            logln("DecimalFormat");
977935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            DecimalFormat fmt = new DecimalFormat();
987935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            // Format API
997935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            str = fmt.format(numObj);
1007935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            strBuffer = fmt.format(numObj, strBuffer, fpos);
1017935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            // NumberFormat API
1027935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            str = fmt.format(2.71828);
1037935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            str = fmt.format(1234567);
1047935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            strBuffer = fmt.format(1.41421, strBuffer, fpos);
1057935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            strBuffer = fmt.format(9876543, strBuffer, fpos);
1067935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            Number obj = fmt.parse(str, ppos);
1077935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            try {
1087935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                obj = fmt.parse(str);
1097935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                if(obj==null){
1107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                    errln("FAIL: The format object could not parse the string : "+str);
1117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                }
1127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            } catch (java.text.ParseException pe) {
1137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                System.out.println(pe);
1147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            }
1157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        }
1167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
1177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        //ICU4J have not the classes ChoiceFormat and MessageFormat
1187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        /*
1197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        // ChoiceFormat calling Format & NumberFormat API
1207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        {
1217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            logln("ChoiceFormat");
1227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            ChoiceFormat fmt = new ChoiceFormat("0#foo|1#foos|2#foos");
1237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            // Format API
1247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            str = fmt.format(numObj);
1257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            strBuffer = fmt.format(numObj, strBuffer, fpos);
1267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            // NumberFormat API
1277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            str = fmt.format(2.71828);
1287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            str = fmt.format(1234567);
1297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            strBuffer = fmt.format(1.41421, strBuffer, fpos);
1307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            strBuffer = fmt.format(9876543, strBuffer, fpos);
1317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            Number obj = fmt.parse(str, ppos);
1327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            try {
1337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                obj = fmt.parse(str);
1347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            } catch (java.text.ParseException pe) {
1357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                System.out.println(pe);
1367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            }
1377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        }
1387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
1397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert
1407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        // MessageFormat calling Format API
1417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        {
1427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            logln("MessageFormat");
1437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            MessageFormat fmt = new MessageFormat("");
1447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            // Format API
1457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            // We use dateObj, which MessageFormat should reject.
1467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            // We're testing name hiding, not the format method.
1477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            try {
1487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                str = fmt.format(dateObj);
1497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            } catch (Exception e) {
1507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                //e.printStackTrace();
1517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            }
1527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            try {
1537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                strBuffer = fmt.format(dateObj, strBuffer, fpos);
1547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            } catch (Exception e) {
1557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert                //e.printStackTrace();
1567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert            }
1577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        }
1587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert        */
1597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert    }
1607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert}