J. Duke | 319a3b9 | 2007-12-01 00:00:00 +0000 | [diff] [blame^] | 1 | /* |
| 2 | * Copyright (c) 2007 Sun Microsystems, Inc. All Rights Reserved. |
| 3 | * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
| 4 | * |
| 5 | * This code is free software; you can redistribute it and/or modify it |
| 6 | * under the terms of the GNU General Public License version 2 only, as |
| 7 | * published by the Free Software Foundation. |
| 8 | * |
| 9 | * This code is distributed in the hope that it will be useful, but WITHOUT |
| 10 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
| 11 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
| 12 | * version 2 for more details (a copy is included in the LICENSE file that |
| 13 | * accompanied this code). |
| 14 | * |
| 15 | * You should have received a copy of the GNU General Public License version |
| 16 | * 2 along with this work; if not, write to the Free Software Foundation, |
| 17 | * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
| 18 | * |
| 19 | * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, |
| 20 | * CA 95054 USA or visit www.sun.com if you need additional information or |
| 21 | * have any questions. |
| 22 | */ |
| 23 | /** |
| 24 | * @test |
| 25 | * @bug 4474409 |
| 26 | * @author John O'Conner |
| 27 | * |
| 28 | */ |
| 29 | |
| 30 | import java.util.*; |
| 31 | import java.text.*; |
| 32 | |
| 33 | public class ThaiGov { |
| 34 | |
| 35 | char[] hex = {'0', '1', '2', '3', |
| 36 | '4', '5', '6', '7', |
| 37 | '8', '9', 'A', 'B', |
| 38 | 'C', 'D', 'E', 'F'}; |
| 39 | |
| 40 | ThaiGov() { |
| 41 | System.out.println("ThaiGov locale test..."); |
| 42 | |
| 43 | } |
| 44 | |
| 45 | String toHex(String str) { |
| 46 | StringBuffer buff = new StringBuffer(); |
| 47 | int y=0; |
| 48 | for(int x=0; x < str.length(); ++x) { |
| 49 | buff.append("\\u"); |
| 50 | buff.append(toHex(str.charAt(x))); |
| 51 | } |
| 52 | return buff.toString(); |
| 53 | } |
| 54 | |
| 55 | String toHex(char ch) { |
| 56 | StringBuffer buff = new StringBuffer(); |
| 57 | buff.append(hex[ch>>12]); |
| 58 | buff.append(hex[(ch>>8) & 0x0F]); |
| 59 | buff.append(hex[(ch>>4) & 0x0F]); |
| 60 | buff.append(hex[ch & 0x0F]); |
| 61 | return buff.toString(); |
| 62 | } |
| 63 | |
| 64 | |
| 65 | void numberTest() throws RuntimeException { |
| 66 | final String strExpected = "\u0E51\u0E52\u002C\u0E53\u0E54\u0E55\u002C\u0E56\u0E57\u0E58\u002E\u0E52\u0E53\u0E54"; |
| 67 | final double value = 12345678.234; |
| 68 | |
| 69 | Locale locTH = new Locale("th", "TH", "TH"); |
| 70 | |
| 71 | // th_TH_TH test |
| 72 | NumberFormat nf = NumberFormat.getInstance(locTH); |
| 73 | String str = nf.format(value); |
| 74 | |
| 75 | if (!strExpected.equals(str)) { |
| 76 | throw new RuntimeException(); |
| 77 | } |
| 78 | |
| 79 | } |
| 80 | |
| 81 | void currencyTest() throws RuntimeException { |
| 82 | final String strExpected = "\u0E3F\u0E51\u0E52\u002C\u0E53\u0E54\u0E55\u002C\u0E56\u0E57\u0E58\u002E\u0E52\u0E53"; |
| 83 | final double value = 12345678.234; |
| 84 | |
| 85 | Locale locTH = new Locale("th", "TH", "TH"); |
| 86 | |
| 87 | // th_TH_TH test |
| 88 | NumberFormat nf = NumberFormat.getCurrencyInstance(locTH); |
| 89 | String str = nf.format(value); |
| 90 | |
| 91 | if (!strExpected.equals(str)) { |
| 92 | throw new RuntimeException(); |
| 93 | } |
| 94 | |
| 95 | } |
| 96 | |
| 97 | void dateTest() throws RuntimeException { |
| 98 | Locale locTH = new Locale("th", "TH", "TH"); |
| 99 | TimeZone tz = TimeZone.getTimeZone("PST"); |
| 100 | |
| 101 | Calendar calGregorian = Calendar.getInstance(tz, Locale.US); |
| 102 | calGregorian.clear(); |
| 103 | calGregorian.set(2002, 4, 1, 8, 30); |
| 104 | final Date date = calGregorian.getTime(); |
| 105 | Calendar cal = Calendar.getInstance(tz, locTH); |
| 106 | cal.clear(); |
| 107 | cal.setTime(date); |
| 108 | |
| 109 | |
| 110 | final String strExpected = "\u0E27\u0E31\u0E19\u0E1E\u0E38\u0E18\u0E17\u0E35\u0E48\u0020\u0E51\u0020\u0E1E\u0E24\u0E29\u0E20\u0E32\u0E04\u0E21\u0020\u0E1E\u002E\u0E28\u002E\u0020\u0E52\u0E55\u0E54\u0E55\u002C\u0020\u0E58\u0020\u0E19\u0E32\u0E2C\u0E34\u0E01\u0E32\u0020\u0E53\u0E50\u0020\u0E19\u0E32\u0E17\u0E35\u0020\u0E50\u0E50\u0020\u0E27\u0E34\u0E19\u0E32\u0E17\u0E35"; |
| 111 | Date value = cal.getTime(); |
| 112 | |
| 113 | // th_TH_TH test |
| 114 | DateFormat df = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL, locTH); |
| 115 | df.setTimeZone(tz); |
| 116 | String str = df.format(value); |
| 117 | |
| 118 | if (!strExpected.equals(str)) { |
| 119 | throw new RuntimeException(); |
| 120 | } |
| 121 | |
| 122 | } |
| 123 | |
| 124 | public static void main(String[] args) { |
| 125 | |
| 126 | ThaiGov app = new ThaiGov(); |
| 127 | System.out.print("Running numberTest..."); |
| 128 | app.numberTest(); |
| 129 | System.out.print("Finished\n"); |
| 130 | System.out.print("Running currencyTest..."); |
| 131 | app.currencyTest(); |
| 132 | System.out.print("Finished\n"); |
| 133 | System.out.print("Running dateTest..."); |
| 134 | app.dateTest(); |
| 135 | System.out.print("Finished\n"); |
| 136 | |
| 137 | System.out.println("PASSED"); |
| 138 | } |
| 139 | |
| 140 | |
| 141 | } |