Home | History | Annotate | Download | only in src
      1 /*
      2  * Copyright (C) 2012 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 import java.text.DateFormat;
     18 import java.text.DateFormatSymbols;
     19 import java.text.Normalizer;
     20 import java.util.Arrays;
     21 import java.util.Calendar;
     22 import java.util.Currency;
     23 import java.util.Date;
     24 import java.util.Locale;
     25 import java.util.MissingResourceException;
     26 import java.util.TimeZone;
     27 
     28 /**
     29  * Exercise some locale-table-driven stuff.
     30  */
     31 public class Main {
     32 
     33     public static void main(String[] args) {
     34         try {
     35             testCalendar();
     36         } catch (Exception ex) {
     37             ex.printStackTrace(System.out);
     38         }
     39 
     40         try {
     41             testDateFormatSymbols();
     42         } catch (Exception ex) {
     43             ex.printStackTrace(System.out);
     44         }
     45 
     46         try {
     47             testCurrency();
     48         } catch (Exception ex) {
     49             ex.printStackTrace(System.out);
     50         }
     51 
     52         try {
     53             testNormalizer();
     54         } catch (Exception ex) {
     55             ex.printStackTrace(System.out);
     56         }
     57 
     58         try {
     59             testIso3();
     60         } catch (Exception ex) {
     61             ex.printStackTrace(System.out);
     62         }
     63     }
     64 
     65     static void testCalendar() {
     66         TimeZone tz = TimeZone.getTimeZone("GMT");
     67 
     68         Locale usa = new Locale("en", "US");
     69         Calendar usaCal = Calendar.getInstance(tz, usa);
     70         usaCal.clear();     // don't want current date/time
     71         usaCal.set(2012, Calendar.JANUARY, 1);
     72 
     73         Date when = usaCal.getTime();
     74         DateFormat fmt = DateFormat.getDateInstance(DateFormat.FULL, usa);
     75         fmt.setTimeZone(tz);    // defaults to local TZ; force GMT
     76         System.out.println("USA(" + fmt.getTimeZone().getID() + "): "
     77             + fmt.format(when));
     78 
     79         System.out.println("USA: first="
     80             + usaCal.getFirstDayOfWeek() + ", name="
     81             + usaCal.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.LONG, usa));
     82 
     83 
     84         Locale france = new Locale("fr", "FR");
     85         Calendar franceCal = Calendar.getInstance(tz, france);
     86         franceCal.clear();
     87         franceCal.set(2012, Calendar.JANUARY, 2);
     88 
     89         when = franceCal.getTime();
     90         fmt = DateFormat.getDateInstance(DateFormat.FULL, usa);
     91         fmt.setTimeZone(tz);    // defaults to local TZ; force GMT
     92         System.out.println("France(" + fmt.getTimeZone().getID() + "): "
     93             + fmt.format(when));
     94 
     95         System.out.println("France: first="
     96             + franceCal.getFirstDayOfWeek() + ", name="
     97             + franceCal.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.LONG, france));
     98     }
     99 
    100     static void testDateFormatSymbols() {
    101         Locale usa = new Locale("en", "US");
    102         DateFormatSymbols syms = DateFormatSymbols.getInstance(usa);
    103         String[] list = syms.getAmPmStrings();
    104         System.out.println("USA dfs: " + Arrays.deepToString(list));
    105     }
    106 
    107     static void testCurrency() {
    108         Locale usa = new Locale("en", "US");
    109         Currency dollars = Currency.getInstance(usa);
    110 
    111         System.out.println(usa.toString() + ": " + dollars.toString()
    112             + " " + dollars.getSymbol() + dollars.getDefaultFractionDigits());
    113 
    114         Locale japan = new Locale("jp", "JP");
    115         Currency yen = Currency.getInstance(japan);
    116 
    117         System.out.println(japan.toString() + ": " + yen.toString()
    118             + " " + yen.getSymbol() + yen.getDefaultFractionDigits());
    119     }
    120 
    121     static void testNormalizer() {
    122         String composed = "Bl\u00c1ah";
    123         String decomposed = "Bl\u0041\u0301ah";
    124         String res;
    125 
    126         res = Normalizer.normalize(composed, Normalizer.Form.NFD);
    127         if (!decomposed.equals(res)) {
    128             System.out.println("Bad decompose: '" + composed + "' --> '"
    129                 + res + "'");
    130         }
    131 
    132         res = Normalizer.normalize(decomposed, Normalizer.Form.NFC);
    133         if (!composed.equals(res)) {
    134             System.out.println("Bad compose: '" + decomposed + "' --> '"
    135                 + res + "'");
    136         }
    137 
    138         System.out.println("Normalizer passed");
    139     }
    140 
    141     /*
    142      * Test that we can set and get an ISO3 language code.  Support for this
    143      * is expected by the Android framework.
    144      */
    145     static void testIso3() {
    146         Locale loc;
    147         loc = new Locale("en", "US");
    148         System.out.println("loc: " + loc);
    149         System.out.println(" iso3=" + loc.getISO3Language());
    150 
    151         loc = new Locale("eng", "USA");
    152         System.out.println("loc: " + loc);
    153         try {
    154             System.out.println(" iso3=" + loc.getISO3Language());
    155         } catch (MissingResourceException mre) {
    156             System.out.println("couldn't get iso3 language");
    157         }
    158     }
    159 }
    160