2 *******************************************************************************
\r
3 * Copyright (C) 1996-2009, International Business Machines Corporation and *
\r
4 * others. All Rights Reserved. *
\r
5 *******************************************************************************
\r
9 package com.ibm.icu.dev.test.serializable;
\r
11 import java.util.Date;
\r
12 import java.util.HashMap;
\r
13 import java.util.Locale;
\r
15 import com.ibm.icu.dev.test.TestFmwk;
\r
16 import com.ibm.icu.impl.JavaTimeZone;
\r
17 import com.ibm.icu.impl.OlsonTimeZone;
\r
18 import com.ibm.icu.impl.TimeZoneAdapter;
\r
19 import com.ibm.icu.math.BigDecimal;
\r
20 import com.ibm.icu.math.MathContext;
\r
21 import com.ibm.icu.util.AnnualTimeZoneRule;
\r
22 import com.ibm.icu.util.Calendar;
\r
23 import com.ibm.icu.util.Currency;
\r
24 import com.ibm.icu.util.DateInterval;
\r
25 import com.ibm.icu.util.DateTimeRule;
\r
26 import com.ibm.icu.util.GregorianCalendar;
\r
27 import com.ibm.icu.util.InitialTimeZoneRule;
\r
28 import com.ibm.icu.util.RuleBasedTimeZone;
\r
29 import com.ibm.icu.util.SimpleTimeZone;
\r
30 import com.ibm.icu.util.TimeArrayTimeZoneRule;
\r
31 import com.ibm.icu.util.TimeZone;
\r
32 import com.ibm.icu.util.TimeZoneRule;
\r
33 import com.ibm.icu.util.ULocale;
\r
34 import com.ibm.icu.util.VTimeZone;
\r
39 * TODO To change the template for this generated type comment go to
\r
40 * Window - Preferences - Java - Code Style - Code Templates
\r
42 public class SerializableTest extends TestFmwk.TestGroup
\r
44 public interface Handler
\r
46 public Object[] getTestObjects();
\r
48 public boolean hasSameBehavior(Object a, Object b);
\r
51 public static Handler getHandler(String className)
\r
53 return (Handler) map.get(className);
\r
56 private static class TimeZoneHandler implements Handler
\r
58 String[] ZONES = { "GMT", "MET", "IST" };
\r
60 public Object[] getTestObjects()
\r
62 TimeZone zones[] = new TimeZone[ZONES.length];
\r
64 for(int z = 0; z < ZONES.length; z += 1) {
\r
65 zones[z] = TimeZone.getTimeZone(ZONES[z]);
\r
71 public boolean hasSameBehavior(Object a, Object b)
\r
73 TimeZone zone_a = (TimeZone) a;
\r
74 TimeZone zone_b = (TimeZone) b;
\r
76 if (!(zone_a.getDisplayName().equals(zone_b.getDisplayName()))) {
\r
80 int a_offsets[] = {0, 0};
\r
81 int b_offsets[] = {0, 0};
\r
83 boolean bSame = true;
\r
84 for (int i = 0; i < sampleTimes.length; i++) {
\r
85 zone_a.getOffset(sampleTimes[i], false, a_offsets);
\r
86 zone_b.getOffset(sampleTimes[i], false, b_offsets);
\r
87 if (a_offsets[0] != b_offsets[0] || a_offsets[1] != b_offsets[1]) {
\r
96 private static Locale locales[] = {
\r
97 Locale.CANADA, Locale.CANADA_FRENCH, Locale.CHINA,
\r
98 Locale.CHINESE, Locale.ENGLISH, Locale.FRANCE, Locale.FRENCH,
\r
99 Locale.GERMAN, Locale.GERMANY, Locale.ITALIAN, Locale.ITALY,
\r
100 Locale.JAPAN, Locale.JAPANESE, Locale.KOREA, Locale.KOREAN,
\r
101 Locale.PRC, Locale.SIMPLIFIED_CHINESE, Locale.TAIWAN,
\r
102 Locale.TRADITIONAL_CHINESE, Locale.UK, Locale.US
\r
105 private static Locale places[] = {
\r
106 Locale.CANADA, Locale.CANADA_FRENCH, Locale.CHINA,
\r
107 Locale.FRANCE, Locale.GERMANY, Locale.ITALY,
\r
108 Locale.JAPAN, Locale.KOREA, Locale.PRC, Locale.TAIWAN,
\r
109 Locale.UK, Locale.US
\r
112 public static Locale[] getLocales()
\r
117 public static boolean compareStrings(String a[], String b[])
\r
119 if (a.length != b.length) {
\r
123 for (int i = 0; i < a.length; i += 1) {
\r
124 if (! a[i].equals(b[i])) {
\r
132 public static boolean compareChars(char a[], char b[])
\r
134 if (a.length != b.length) {
\r
138 for (int i = 0; i < a.length; i += 1) {
\r
139 if (a[i] != b[i]) {
\r
147 private static class SimpleTimeZoneHandler extends TimeZoneHandler
\r
149 public Object[] getTestObjects()
\r
151 SimpleTimeZone simpleTimeZones[] = new SimpleTimeZone[6];
\r
153 simpleTimeZones[0] = new SimpleTimeZone(32400000, "MyTimeZone");
\r
155 simpleTimeZones[1] = new SimpleTimeZone(32400000, "Asia/Tokyo");
\r
157 simpleTimeZones[2] = new SimpleTimeZone(32400000, "Asia/Tokyo");
\r
158 simpleTimeZones[2].setRawOffset(0);
\r
160 simpleTimeZones[3] = new SimpleTimeZone(32400000, "Asia/Tokyo");
\r
161 simpleTimeZones[3].setStartYear(100);
\r
163 simpleTimeZones[4] = new SimpleTimeZone(32400000, "Asia/Tokyo");
\r
164 simpleTimeZones[4].setStartYear(1000);
\r
165 simpleTimeZones[4].setDSTSavings(1800000);
\r
166 simpleTimeZones[4].setStartRule(3, 4, 180000);
\r
167 simpleTimeZones[4].setEndRule(6, 3, 4, 360000);
\r
169 simpleTimeZones[5] = new SimpleTimeZone(32400000, "Asia/Tokyo");
\r
170 simpleTimeZones[5].setStartRule(2, 3, 4, 360000);
\r
171 simpleTimeZones[5].setEndRule(6, 3, 4, 360000);
\r
173 return simpleTimeZones;
\r
177 private static class VTimeZoneHandler extends TimeZoneHandler {
\r
178 public Object[] getTestObjects() {
\r
180 VTimeZone[] vtzs = new VTimeZone[1];
\r
181 vtzs[0] = VTimeZone.create("America/New_York");
\r
186 private static final int HOUR = 60*60*1000;
\r
187 private static final AnnualTimeZoneRule[] TEST_US_EASTERN = {
\r
188 new AnnualTimeZoneRule("EST", -5*HOUR, 0,
\r
189 new DateTimeRule(Calendar.OCTOBER, -1, Calendar.SUNDAY, 2*HOUR, DateTimeRule.WALL_TIME),
\r
192 new AnnualTimeZoneRule("EST", -5*HOUR, 0,
\r
193 new DateTimeRule(Calendar.NOVEMBER, 1, Calendar.SUNDAY, true, 2*HOUR, DateTimeRule.WALL_TIME),
\r
194 2007, AnnualTimeZoneRule.MAX_YEAR),
\r
196 new AnnualTimeZoneRule("EDT", -5*HOUR, 1*HOUR,
\r
197 new DateTimeRule(Calendar.APRIL, -1, Calendar.SUNDAY, 2*HOUR, DateTimeRule.WALL_TIME),
\r
200 new AnnualTimeZoneRule("EDT", -5*HOUR, 1*HOUR,
\r
201 new DateTimeRule(Calendar.JANUARY, 6, 2*HOUR, DateTimeRule.WALL_TIME),
\r
204 new AnnualTimeZoneRule("EDT", -5*HOUR, 1*HOUR,
\r
205 new DateTimeRule(Calendar.FEBRUARY, 23, 2*HOUR, DateTimeRule.WALL_TIME),
\r
208 new AnnualTimeZoneRule("EDT", -5*HOUR, 1*HOUR,
\r
209 new DateTimeRule(Calendar.APRIL, -1, Calendar.SUNDAY, 2*HOUR, DateTimeRule.WALL_TIME),
\r
212 new AnnualTimeZoneRule("EDT", -5*HOUR, 1*HOUR,
\r
213 new DateTimeRule(Calendar.APRIL, 1, Calendar.SUNDAY, true, 2*HOUR, DateTimeRule.WALL_TIME),
\r
216 new AnnualTimeZoneRule("EDT", -5*HOUR, 1*HOUR,
\r
217 new DateTimeRule(Calendar.MARCH, 8, Calendar.SUNDAY, true, 2*HOUR, DateTimeRule.WALL_TIME),
\r
218 2007, AnnualTimeZoneRule.MAX_YEAR)
\r
223 private static class RuleBasedTimeZoneHandler extends TimeZoneHandler
\r
225 public Object[] getTestObjects()
\r
227 RuleBasedTimeZone ruleBasedTimeZones[] = new RuleBasedTimeZone[2];
\r
229 InitialTimeZoneRule ir = new InitialTimeZoneRule("GMT-5", -5*HOUR, 0);
\r
231 // GMT-5, no transition
\r
232 ruleBasedTimeZones[0] = new RuleBasedTimeZone("GMT-5", ir);
\r
235 // US Eastern since 1967
\r
236 ruleBasedTimeZones[1] = new RuleBasedTimeZone("US_East", ir);
\r
237 for (int i = 0; i < TEST_US_EASTERN.length; i++) {
\r
238 ruleBasedTimeZones[1].addTransitionRule(TEST_US_EASTERN[i]);
\r
240 return ruleBasedTimeZones;
\r
244 private static class DateTimeRuleHandler implements Handler {
\r
245 public Object[] getTestObjects() {
\r
246 DateTimeRule[] rules = new DateTimeRule[4];
\r
249 rules[0] = new DateTimeRule(Calendar.OCTOBER, 10, 13*HOUR, DateTimeRule.UTC_TIME);
\r
252 rules[1] = new DateTimeRule(Calendar.MARCH, 2, Calendar.SUNDAY, 2*HOUR, DateTimeRule.WALL_TIME);
\r
254 // DOW_GEQ_DOM + STD
\r
255 rules[2] = new DateTimeRule(Calendar.MAY, 1, Calendar.MONDAY, true, 0*HOUR, DateTimeRule.STANDARD_TIME);
\r
257 // DOW_LEQ_DOM + WALL
\r
258 rules[3] = new DateTimeRule(Calendar.AUGUST, 31, Calendar.SATURDAY, false, 1*HOUR, DateTimeRule.WALL_TIME);
\r
263 public boolean hasSameBehavior(Object a, Object b) {
\r
264 return hasSameRule((DateTimeRule)a, (DateTimeRule)b);
\r
267 static boolean hasSameRule(DateTimeRule dtra, DateTimeRule dtrb) {
\r
268 boolean bSame = false;
\r
269 if (dtra.getDateRuleType() == dtrb.getDateRuleType()
\r
270 && dtra.getRuleMonth() == dtrb.getRuleMonth()
\r
271 && dtra.getTimeRuleType() == dtrb.getTimeRuleType()
\r
272 && dtra.getRuleMillisInDay() == dtrb.getRuleMillisInDay()) {
\r
273 switch (dtra.getDateRuleType()) {
\r
274 case DateTimeRule.DOM:
\r
275 bSame = (dtra.getRuleDayOfMonth() == dtrb.getRuleDayOfMonth());
\r
277 case DateTimeRule.DOW:
\r
278 bSame = (dtra.getRuleDayOfWeek() == dtrb.getRuleDayOfWeek() &&
\r
279 dtra.getRuleWeekInMonth() == dtrb.getRuleWeekInMonth());
\r
281 case DateTimeRule.DOW_GEQ_DOM:
\r
282 case DateTimeRule.DOW_LEQ_DOM:
\r
283 bSame = (dtra.getRuleDayOfMonth() == dtrb.getRuleDayOfMonth() &&
\r
284 dtra.getRuleDayOfWeek() == dtrb.getRuleDayOfWeek());
\r
292 private static boolean compareTimeZoneRules(TimeZoneRule ra, TimeZoneRule rb) {
\r
293 if (ra.getName().equals(rb.getName()) &&
\r
294 ra.getRawOffset() == rb.getRawOffset() &&
\r
295 ra.getDSTSavings() == rb.getDSTSavings()) {
\r
301 private static class AnnualTimeZoneRuleHandler implements Handler {
\r
302 public Object[] getTestObjects() {
\r
303 return TEST_US_EASTERN;
\r
306 public boolean hasSameBehavior(Object a, Object b) {
\r
307 AnnualTimeZoneRule ra = (AnnualTimeZoneRule)a;
\r
308 AnnualTimeZoneRule rb = (AnnualTimeZoneRule)b;
\r
309 if (DateTimeRuleHandler.hasSameRule(ra.getRule(), rb.getRule()) &&
\r
310 ra.getStartYear() == rb.getStartYear() &&
\r
311 ra.getEndYear() == rb.getEndYear()) {
\r
312 return compareTimeZoneRules(ra, rb);
\r
318 private static class InitialTimeZoneRuleHandler implements Handler {
\r
319 public Object[] getTestObjects() {
\r
320 TimeZoneRule[] rules = new TimeZoneRule[2];
\r
321 rules[0] = new InitialTimeZoneRule("EST", -5*HOUR, 0);
\r
322 rules[1] = new InitialTimeZoneRule("PST", -8*HOUR, 0);
\r
326 public boolean hasSameBehavior(Object a, Object b) {
\r
327 return compareTimeZoneRules((TimeZoneRule)a, (TimeZoneRule)b);
\r
331 private static class TimeArrayTimeZoneRuleHandler implements Handler {
\r
332 public Object[] getTestObjects() {
\r
333 TimeArrayTimeZoneRule[] rules = new TimeArrayTimeZoneRule[1];
\r
334 long[] ttime = new long[] {-631152000000L, 0L, 946684800000L}; /* {1950-1-1, 1970-1-1, 2000-1-1} */
\r
335 rules[0] = new TimeArrayTimeZoneRule("Foo", 1*HOUR, 1*HOUR, ttime, DateTimeRule.UTC_TIME);
\r
339 public boolean hasSameBehavior(Object a, Object b) {
\r
340 TimeArrayTimeZoneRule ra = (TimeArrayTimeZoneRule)a;
\r
341 TimeArrayTimeZoneRule rb = (TimeArrayTimeZoneRule)b;
\r
343 Date da = ra.getFirstStart(0, 0);
\r
344 Date db = rb.getFirstStart(0, 0);
\r
345 long t = da.getTime();
\r
346 if (da.equals(db)) {
\r
347 da = ra.getFinalStart(0, 0);
\r
348 db = rb.getFinalStart(0, 0);
\r
349 long end = da.getTime();
\r
350 if (da.equals(db)) {
\r
352 da = ra.getNextStart(t, 0, 0, false);
\r
353 db = ra.getNextStart(t, 0, 0, false);
\r
354 if (da == null || db == null || !da.equals(db)) {
\r
359 return compareTimeZoneRules(ra, rb);
\r
366 private static class ULocaleHandler implements Handler
\r
368 public Object[] getTestObjects()
\r
370 ULocale uLocales[] = new ULocale[locales.length];
\r
372 for (int i = 0; i < locales.length; i += 1) {
\r
373 uLocales[i] = ULocale.forLocale(locales[i]);
\r
379 public boolean hasSameBehavior(Object a, Object b)
\r
381 ULocale uloc_a = (ULocale) a;
\r
382 ULocale uloc_b = (ULocale) b;
\r
384 return uloc_a.getName().equals(uloc_b.getName());
\r
388 public static class DateIntervalHandler implements Handler
\r
390 private DateInterval dateInterval[] = {
\r
391 new DateInterval(0L, 1164931200000L/*20061201T000000Z*/)
\r
393 public Object[] getTestObjects()
\r
395 return dateInterval;
\r
398 public boolean hasSameBehavior(Object a, Object b)
\r
400 return a.equals(b);
\r
405 private static class CurrencyHandler implements Handler
\r
407 public Object[] getTestObjects()
\r
409 Currency currencies[] = new Currency[places.length];
\r
411 for (int i = 0; i < places.length; i += 1) {
\r
412 currencies[i] = Currency.getInstance(places[i]);
\r
418 public boolean hasSameBehavior(Object a, Object b)
\r
420 Currency curr_a = (Currency) a;
\r
421 Currency curr_b = (Currency) b;
\r
423 return curr_a.getCurrencyCode().equals(curr_b.getCurrencyCode());
\r
428 private static String zoneIDs[] = {
\r
429 "Pacific/Honolulu", "America/Anchorage", "America/Los_Angeles", "America/Denver",
\r
430 "America/Chicago", "America/New_York", "Africa/Cairo", "Africa/Addis_Ababa", "Africa/Dar_es_Salaam",
\r
431 "Africa/Freetown", "Africa/Johannesburg", "Africa/Nairobi", "Asia/Bangkok", "Asia/Baghdad",
\r
432 "Asia/Calcutta", "Asia/Hong_Kong", "Asia/Jakarta", "Asia/Jerusalem", "Asia/Manila", "Asia/Tokyo",
\r
433 "Europe/Amsterdam", "Europe/Athens", "Europe/Berlin", "Europe/London", "Europe/Malta", "Europe/Moscow",
\r
434 "Europe/Paris", "Europe/Rome"
\r
437 private static long sampleTimes[] = {
\r
438 1136073600000L, // 20060101T000000Z
\r
439 1138752000000L, // 20060201T000000Z
\r
440 1141171200000L, // 20060301T000000Z
\r
441 1143849600000L, // 20060401T000000Z
\r
442 1146441600000L, // 20060501T000000Z
\r
443 1149120000000L, // 20060601T000000Z
\r
444 1151712000000L, // 20060701T000000Z
\r
445 1154390400000L, // 20060801T000000Z
\r
446 1157068800000L, // 20060901T000000Z
\r
447 1159660800000L, // 20061001T000000Z
\r
448 1162339200000L, // 20061101T000000Z
\r
449 1164931200000L, // 20061201T000000Z
\r
452 private static class OlsonTimeZoneHandler implements Handler
\r
454 public Object[] getTestObjects()
\r
456 OlsonTimeZone timeZones[] = new OlsonTimeZone[zoneIDs.length];
\r
458 for (int i = 0; i < zoneIDs.length; i += 1) {
\r
459 timeZones[i] = new OlsonTimeZone(zoneIDs[i]);
\r
466 public boolean hasSameBehavior(Object a, Object b)
\r
468 OlsonTimeZone otz_a = (OlsonTimeZone) a;
\r
469 OlsonTimeZone otz_b = (OlsonTimeZone) b;
\r
470 int a_offsets[] = {0, 0};
\r
471 int b_offsets[] = {0, 0};
\r
473 boolean bSame = true;
\r
474 for (int i = 0; i < sampleTimes.length; i++) {
\r
475 otz_a.getOffset(sampleTimes[i], false, a_offsets);
\r
476 otz_b.getOffset(sampleTimes[i], false, b_offsets);
\r
477 if (a_offsets[0] != b_offsets[0] || a_offsets[1] != b_offsets[1]) {
\r
486 private static class TimeZoneAdapterHandler implements Handler
\r
488 public Object[] getTestObjects()
\r
490 TimeZoneAdapter timeZones[] = new TimeZoneAdapter[zoneIDs.length];
\r
492 for (int i = 0; i < zoneIDs.length; i += 1) {
\r
493 timeZones[i] = new TimeZoneAdapter(TimeZone.getTimeZone(zoneIDs[i]));
\r
500 public boolean hasSameBehavior(Object a, Object b)
\r
502 GregorianCalendar cal = new GregorianCalendar();
\r
503 TimeZoneAdapter tza_a = (TimeZoneAdapter) a;
\r
504 TimeZoneAdapter tza_b = (TimeZoneAdapter) b;
\r
506 int a_offset, b_offset;
\r
507 boolean a_dst, b_dst;
\r
508 boolean bSame = true;
\r
509 for (int i = 0; i < sampleTimes.length; i++) {
\r
510 cal.setTimeInMillis(sampleTimes[i]);
\r
511 int era = cal.get(Calendar.ERA);
\r
512 int year = cal.get(Calendar.YEAR);
\r
513 int month = cal.get(Calendar.MONTH);
\r
514 int day = cal.get(Calendar.DAY_OF_MONTH);
\r
515 int dow = cal.get(Calendar.DAY_OF_WEEK);
\r
516 int mid = cal.get(Calendar.MILLISECONDS_IN_DAY);
\r
517 a_offset = tza_a.getOffset(era, year, month, day, dow, mid);
\r
518 b_offset = tza_b.getOffset(era, year, month, day, dow, mid);
\r
519 Date d = new Date(sampleTimes[i]);
\r
520 a_dst = tza_a.inDaylightTime(d);
\r
521 b_dst = tza_b.inDaylightTime(d);
\r
522 if (a_offset != b_offset || a_dst != b_dst) {
\r
531 private static class JavaTimeZoneHandler implements Handler {
\r
532 String[] ZONES = { "GMT", "America/New_York", "GMT+05:45" };
\r
534 public Object[] getTestObjects() {
\r
535 JavaTimeZone zones[] = new JavaTimeZone[ZONES.length];
\r
536 for(int z = 0; z < ZONES.length; z += 1) {
\r
537 zones[z] = new JavaTimeZone(ZONES[z]);
\r
542 public boolean hasSameBehavior(Object a, Object b)
\r
544 TimeZone zone_a = (TimeZone) a;
\r
545 TimeZone zone_b = (TimeZone) b;
\r
547 if (!(TimeZone.getCanonicalID(zone_a.getID()).equals(TimeZone.getCanonicalID(zone_b.getID())))) {
\r
551 int a_offsets[] = {0, 0};
\r
552 int b_offsets[] = {0, 0};
\r
554 boolean bSame = true;
\r
555 for (int i = 0; i < sampleTimes.length; i++) {
\r
556 zone_a.getOffset(sampleTimes[i], false, a_offsets);
\r
557 zone_b.getOffset(sampleTimes[i], false, b_offsets);
\r
558 if (a_offsets[0] != b_offsets[0] || a_offsets[1] != b_offsets[1]) {
\r
567 private static class BigDecimalHandler implements Handler
\r
569 String values[] = {
\r
582 public Object[] getTestObjects()
\r
584 BigDecimal bds[] = new BigDecimal[values.length];
\r
586 for (int i = 0; i < values.length; i += 1) {
\r
587 bds[i] = new BigDecimal(values[i]);
\r
593 public boolean hasSameBehavior(Object a, Object b) {
\r
594 BigDecimal bda = (BigDecimal) a;
\r
595 BigDecimal bdb = (BigDecimal) b;
\r
597 return bda.toString().equals(bdb.toString());
\r
601 private static class MathContextHandler implements Handler
\r
603 int forms[] = {MathContext.PLAIN, MathContext.ENGINEERING, MathContext.SCIENTIFIC};
\r
605 MathContext.ROUND_CEILING, MathContext.ROUND_DOWN, MathContext.ROUND_FLOOR,
\r
606 MathContext.ROUND_HALF_DOWN, MathContext.ROUND_HALF_EVEN, MathContext.ROUND_HALF_UP,
\r
607 MathContext.ROUND_UNNECESSARY, MathContext.ROUND_UP};
\r
609 public Object[] getTestObjects()
\r
611 int objectCount = forms.length * rounds.length;
\r
612 MathContext contexts[] = new MathContext[objectCount];
\r
615 for (int f = 0; f < forms.length; f += 1) {
\r
616 for (int r = 0; r < rounds.length; r += 1) {
\r
617 int digits = f * r;
\r
618 boolean lostDigits = (r & 1) != 0;
\r
620 contexts[i++] = new MathContext(digits, forms[f], lostDigits, rounds[r]);
\r
627 public boolean hasSameBehavior(Object a, Object b)
\r
629 MathContext mca = (MathContext) a;
\r
630 MathContext mcb = (MathContext) b;
\r
632 return mca.toString().equals(mcb.toString());
\r
636 private static HashMap map = new HashMap();
\r
639 map.put("com.ibm.icu.util.TimeZone", new TimeZoneHandler());
\r
640 map.put("com.ibm.icu.util.SimpleTimeZone", new SimpleTimeZoneHandler());
\r
641 map.put("com.ibm.icu.util.RuleBasedTimeZone", new RuleBasedTimeZoneHandler());
\r
642 map.put("com.ibm.icu.util.VTimeZone", new VTimeZoneHandler());
\r
643 map.put("com.ibm.icu.util.DateTimeRule", new DateTimeRuleHandler());
\r
644 map.put("com.ibm.icu.util.AnnualTimeZoneRule", new AnnualTimeZoneRuleHandler());
\r
645 map.put("com.ibm.icu.util.InitialTimeZoneRule", new InitialTimeZoneRuleHandler());
\r
646 map.put("com.ibm.icu.util.TimeArrayTimeZoneRule", new TimeArrayTimeZoneRuleHandler());
\r
647 map.put("com.ibm.icu.util.ULocale", new ULocaleHandler());
\r
648 map.put("com.ibm.icu.util.Currency", new CurrencyHandler());
\r
649 map.put("com.ibm.icu.impl.JavaTimeZone", new JavaTimeZoneHandler());
\r
650 map.put("com.ibm.icu.impl.OlsonTimeZone", new OlsonTimeZoneHandler());
\r
651 map.put("com.ibm.icu.impl.TimeZoneAdapter", new TimeZoneAdapterHandler());
\r
652 map.put("com.ibm.icu.math.BigDecimal", new BigDecimalHandler());
\r
653 map.put("com.ibm.icu.math.MathContext", new MathContextHandler());
\r
655 map.put("com.ibm.icu.text.NumberFormat", new FormatTests.NumberFormatHandler());
\r
656 map.put("com.ibm.icu.text.DecimalFormat", new FormatTests.DecimalFormatHandler());
\r
657 map.put("com.ibm.icu.text.RuleBasedNumberFormat", new FormatTests.RuleBasedNumberFormatHandler());
\r
658 map.put("com.ibm.icu.text.CurrencyPluralInfo", new FormatTests.CurrencyPluralInfoHandler());
\r
659 map.put("com.ibm.icu.text.DecimalFormatSymbols", new FormatTests.DecimalFormatSymbolsHandler());
\r
660 map.put("com.ibm.icu.text.MessageFormat", new FormatTests.MessageFormatHandler());
\r
661 map.put("com.ibm.icu.text.DateFormat", new FormatTests.DateFormatHandler());
\r
662 map.put("com.ibm.icu.text.DateFormatSymbols", new FormatTests.DateFormatSymbolsHandler());
\r
663 map.put("com.ibm.icu.util.DateInterval", new DateIntervalHandler());
\r
664 map.put("com.ibm.icu.text.DateIntervalFormat", new FormatTests.DateIntervalFormatHandler());
\r
665 map.put("com.ibm.icu.text.DateIntervalInfo", new FormatTests.DateIntervalInfoHandler());
\r
666 map.put("com.ibm.icu.text.DateIntervalInfo$PatternInfo", new FormatTests.PatternInfoHandler());
\r
667 map.put("com.ibm.icu.text.SimpleDateFormat", new FormatTests.SimpleDateFormatHandler());
\r
668 map.put("com.ibm.icu.text.ChineseDateFormat", new FormatTests.ChineseDateFormatHandler());
\r
669 map.put("com.ibm.icu.text.ChineseDateFormatSymbols", new FormatTests.ChineseDateFormatSymbolsHandler());
\r
670 map.put("com.ibm.icu.impl.DateNumberFormat", new FormatTests.DateNumberFormatHandler());
\r
671 map.put("com.ibm.icu.text.PluralFormat", new FormatTests.PluralFormatHandler());
\r
672 map.put("com.ibm.icu.text.PluralRules", new FormatTests.PluralRulesHandler());
\r
673 map.put("com.ibm.icu.text.TimeUnitFormat", new FormatTests.TimeUnitFormatHandler());
\r
674 map.put("com.ibm.icu.text.SelectFormat", new FormatTests.SelectFormatHandler());
\r
676 map.put("com.ibm.icu.util.Calendar", new CalendarTests.CalendarHandler());
\r
677 map.put("com.ibm.icu.util.BuddhistCalendar", new CalendarTests.BuddhistCalendarHandler());
\r
678 map.put("com.ibm.icu.util.ChineseCalendar", new CalendarTests.ChineseCalendarHandler());
\r
679 map.put("com.ibm.icu.util.CopticCalendar", new CalendarTests.CopticCalendarHandler());
\r
680 map.put("com.ibm.icu.util.EthiopicCalendar", new CalendarTests.EthiopicCalendarHandler());
\r
681 map.put("com.ibm.icu.util.GregorianCalendar", new CalendarTests.GregorianCalendarHandler());
\r
682 map.put("com.ibm.icu.util.HebrewCalendar", new CalendarTests.HebrewCalendarHandler());
\r
683 map.put("com.ibm.icu.util.IndianCalendar", new CalendarTests.IndianCalendarHandler());
\r
684 map.put("com.ibm.icu.util.IslamicCalendar", new CalendarTests.IslamicCalendarHandler());
\r
685 map.put("com.ibm.icu.util.JapaneseCalendar", new CalendarTests.JapaneseCalendarHandler());
\r
686 map.put("com.ibm.icu.util.TaiwanCalendar", new CalendarTests.TaiwanCalendarHandler());
\r
688 map.put("com.ibm.icu.text.ArabicShapingException", new ExceptionTests.ArabicShapingExceptionHandler());
\r
689 map.put("com.ibm.icu.text.StringPrepParseException", new ExceptionTests.StringPrepParseExceptionHandler());
\r
690 map.put("com.ibm.icu.util.UResourceTypeMismatchException", new ExceptionTests.UResourceTypeMismatchExceptionHandler());
\r
691 map.put("com.ibm.icu.impl.InvalidFormatException", new ExceptionTests.InvalidFormatExceptionHandler());
\r
693 map.put("com.ibm.icu.text.NumberFormat$Field", new FormatTests.NumberFormatFieldHandler());
\r
694 map.put("com.ibm.icu.text.DateFormat$Field", new FormatTests.DateFormatFieldHandler());
\r
695 map.put("com.ibm.icu.text.ChineseDateFormat$Field", new FormatTests.ChineseDateFormatFieldHandler());
\r
696 map.put("com.ibm.icu.text.MessageFormat$Field", new FormatTests.MessageFormatFieldHandler());
\r
698 map.put("com.ibm.icu.impl.duration.BasicDurationFormat", new FormatTests.BasicDurationFormatHandler());
\r
699 map.put("com.ibm.icu.impl.RelativeDateFormat", new FormatTests.RelativeDateFormatHandler());
\r
700 map.put("com.ibm.icu.util.IllformedLocaleException", new ExceptionTests.IllformedLocaleExceptionHandler());
\r
701 map.put("com.ibm.icu.impl.locale.LocaleSyntaxException", new ExceptionTests.LocaleSyntaxExceptionHandler());
\r
702 map.put("com.ibm.icu.impl.IllegalIcuArgumentException", new ExceptionTests.IllegalIcuArgumentExceptionHandler());
\r
705 public SerializableTest()
\r
709 "com.ibm.icu.dev.test.serializable.CoverageTest",
\r
710 "com.ibm.icu.dev.test.serializable.CompatibilityTest"},
\r
711 "All Serializable Tests"
\r
715 public static final String CLASS_TARGET_NAME = "Serializable";
\r
717 public static void main(String[] args)
\r
719 SerializableTest test = new SerializableTest();
\r