| /* |
| * Copyright (C) 2012 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| import java.text.DateFormat; |
| import java.text.DateFormatSymbols; |
| import java.text.Normalizer; |
| import java.util.Arrays; |
| import java.util.Calendar; |
| import java.util.Currency; |
| import java.util.Date; |
| import java.util.Locale; |
| import java.util.MissingResourceException; |
| import java.util.TimeZone; |
| |
| /** |
| * Exercise some locale-table-driven stuff. |
| */ |
| public class Main { |
| |
| public static void main(String[] args) { |
| try { |
| testCalendar(); |
| } catch (Exception ex) { |
| ex.printStackTrace(System.out); |
| } |
| |
| try { |
| testDateFormatSymbols(); |
| } catch (Exception ex) { |
| ex.printStackTrace(System.out); |
| } |
| |
| try { |
| testCurrency(); |
| } catch (Exception ex) { |
| ex.printStackTrace(System.out); |
| } |
| |
| try { |
| testNormalizer(); |
| } catch (Exception ex) { |
| ex.printStackTrace(System.out); |
| } |
| |
| try { |
| testIso3(); |
| } catch (Exception ex) { |
| ex.printStackTrace(System.out); |
| } |
| } |
| |
| static void testCalendar() { |
| TimeZone tz = TimeZone.getTimeZone("GMT"); |
| |
| Locale usa = new Locale("en", "US"); |
| Calendar usaCal = Calendar.getInstance(tz, usa); |
| usaCal.clear(); // don't want current date/time |
| usaCal.set(2012, Calendar.JANUARY, 1); |
| |
| Date when = usaCal.getTime(); |
| DateFormat fmt = DateFormat.getDateInstance(DateFormat.FULL, usa); |
| fmt.setTimeZone(tz); // defaults to local TZ; force GMT |
| System.out.println("USA(" + fmt.getTimeZone().getID() + "): " |
| + fmt.format(when)); |
| |
| System.out.println("USA: first=" |
| + usaCal.getFirstDayOfWeek() + ", name=" |
| + usaCal.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.LONG, usa)); |
| |
| |
| Locale france = new Locale("fr", "FR"); |
| Calendar franceCal = Calendar.getInstance(tz, france); |
| franceCal.clear(); |
| franceCal.set(2012, Calendar.JANUARY, 2); |
| |
| when = franceCal.getTime(); |
| fmt = DateFormat.getDateInstance(DateFormat.FULL, usa); |
| fmt.setTimeZone(tz); // defaults to local TZ; force GMT |
| System.out.println("France(" + fmt.getTimeZone().getID() + "): " |
| + fmt.format(when)); |
| |
| System.out.println("France: first=" |
| + franceCal.getFirstDayOfWeek() + ", name=" |
| + franceCal.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.LONG, france)); |
| } |
| |
| static void testDateFormatSymbols() { |
| Locale usa = new Locale("en", "US"); |
| DateFormatSymbols syms = DateFormatSymbols.getInstance(usa); |
| String[] list = syms.getAmPmStrings(); |
| System.out.println("USA dfs: " + Arrays.deepToString(list)); |
| } |
| |
| static void testCurrency() { |
| Locale usa = new Locale("en", "US"); |
| Currency dollars = Currency.getInstance(usa); |
| |
| System.out.println(usa.toString() + ": " + dollars.toString() |
| + " " + dollars.getSymbol() + dollars.getDefaultFractionDigits()); |
| |
| Locale japan = new Locale("jp", "JP"); |
| Currency yen = Currency.getInstance(japan); |
| |
| System.out.println(japan.toString() + ": " + yen.toString() |
| + " " + yen.getSymbol() + yen.getDefaultFractionDigits()); |
| } |
| |
| static void testNormalizer() { |
| String composed = "Bl\u00c1ah"; |
| String decomposed = "Bl\u0041\u0301ah"; |
| String res; |
| |
| res = Normalizer.normalize(composed, Normalizer.Form.NFD); |
| if (!decomposed.equals(res)) { |
| System.out.println("Bad decompose: '" + composed + "' --> '" |
| + res + "'"); |
| } |
| |
| res = Normalizer.normalize(decomposed, Normalizer.Form.NFC); |
| if (!composed.equals(res)) { |
| System.out.println("Bad compose: '" + decomposed + "' --> '" |
| + res + "'"); |
| } |
| |
| System.out.println("Normalizer passed"); |
| } |
| |
| /* |
| * Test that we can set and get an ISO3 language code. Support for this |
| * is expected by the Android framework. |
| */ |
| static void testIso3() { |
| Locale loc; |
| loc = new Locale("en", "US"); |
| System.out.println("loc: " + loc); |
| System.out.println(" iso3=" + loc.getISO3Language()); |
| |
| loc = new Locale("eng", "USA"); |
| System.out.println("loc: " + loc); |
| try { |
| System.out.println(" iso3=" + loc.getISO3Language()); |
| } catch (MissingResourceException mre) { |
| System.out.println("couldn't get iso3 language"); |
| } |
| } |
| } |