http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/e4dfdf81/juneau-core-test/src/test/java/org/apache/juneau/transforms/LocalizedDatesTest.java
----------------------------------------------------------------------
diff --git 
a/juneau-core-test/src/test/java/org/apache/juneau/transforms/LocalizedDatesTest.java
 
b/juneau-core-test/src/test/java/org/apache/juneau/transforms/LocalizedDatesTest.java
new file mode 100644
index 0000000..913c9a4
--- /dev/null
+++ 
b/juneau-core-test/src/test/java/org/apache/juneau/transforms/LocalizedDatesTest.java
@@ -0,0 +1,635 @@
+// 
***************************************************************************************************************************
+// * Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements.  See the NOTICE file *
+// * distributed with this work for additional information regarding copyright 
ownership.  The ASF licenses this file        *
+// * to you 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.                                              *
+// 
***************************************************************************************************************************
+package org.apache.juneau.transforms;
+
+import static org.apache.juneau.BeanContext.*;
+import static org.junit.Assert.*;
+
+import java.util.*;
+
+import org.apache.juneau.*;
+import org.apache.juneau.transform.*;
+import org.junit.*;
+import org.junit.runner.*;
+import org.junit.runners.*;
+
+@RunWith(Parameterized.class)
+@SuppressWarnings("javadoc")
+public class LocalizedDatesTest {
+
+       private static Calendar testDate = new 
GregorianCalendar(TimeZone.getTimeZone("GMT"));
+       static {
+               testDate.setTimeInMillis(0);
+               testDate.set(2001, 2, 3, 10, 11, 12);
+       }
+
+       @Parameterized.Parameters
+       public static Collection<Object[]> getParameters() {
+               return Arrays.asList(new Object[][] {
+
+                       // CalendarSwap.ToString
+                       { "000", testDate, CalendarSwap.ToString.class, null, 
null, null, null, "Sat Mar 03 10:11:12 GMT 2001" },
+                       { "001", testDate, CalendarSwap.ToString.class, 
"ja_JP", null, null, null, "土 3 03 10:11:12 GMT 2001" },
+                       { "002", testDate, CalendarSwap.ToString.class, 
Locale.JAPAN, null, null, null, "土 3 03 10:11:12 GMT 2001" },
+                       { "003", testDate, CalendarSwap.ToString.class, null, 
Locale.JAPAN, null, null, "土 3 03 10:11:12 GMT 2001" },
+                       { "004", testDate, CalendarSwap.ToString.class, 
"en_UK", Locale.JAPAN, null, null, "土 3 03 10:11:12 GMT 2001" },
+                       { "005", testDate, CalendarSwap.ToString.class, 
"ja_JP", Locale.KOREA, null, null, "토 3월 03 10:11:12 GMT 2001" },
+                       { "006", testDate, CalendarSwap.ToString.class, 
"en_US", null, "PST", null, "Sat Mar 03 02:11:12 PST 2001" },
+                       { "007", testDate, CalendarSwap.ToString.class, 
"en_US", null, TimeZone.getTimeZone("PST"), null, "Sat Mar 03 02:11:12 PST 
2001" },
+                       { "008", testDate, CalendarSwap.ToString.class, 
"en_US", null, null, TimeZone.getTimeZone("EST"), "Sat Mar 03 05:11:12 EST 
2001" },
+                       { "009", testDate, CalendarSwap.ToString.class, 
"en_US", null, "PST", TimeZone.getTimeZone("EST"), "Sat Mar 03 05:11:12 EST 
2001" },
+
+                       // CalendarSwap.ISO8601DT
+                       { "010", testDate, CalendarSwap.ISO8601DT.class, null, 
null, null, null, "2001-03-03T10:11:12Z" },
+                       { "011", testDate, CalendarSwap.ISO8601DT.class, 
"ja_JP", null, null, null, "2001-03-03T10:11:12Z" },
+                       { "012", testDate, CalendarSwap.ISO8601DT.class, 
Locale.JAPAN, null, null, null, "2001-03-03T10:11:12Z" },
+                       { "013", testDate, CalendarSwap.ISO8601DT.class, null, 
Locale.JAPAN, null, null, "2001-03-03T10:11:12Z" },
+                       { "014", testDate, CalendarSwap.ISO8601DT.class, 
"en_UK", Locale.JAPAN, null, null, "2001-03-03T10:11:12Z" },
+                       { "015", testDate, CalendarSwap.ISO8601DT.class, 
"ja_JP", Locale.KOREA, null, null, "2001-03-03T10:11:12Z" },
+                       { "016", testDate, CalendarSwap.ISO8601DT.class, 
"en_US", null, "PST", null, "2001-03-03T02:11:12-08:00" },
+                       { "017", testDate, CalendarSwap.ISO8601DT.class, 
"en_US", null, TimeZone.getTimeZone("PST"), null, "2001-03-03T02:11:12-08:00" },
+                       { "018", testDate, CalendarSwap.ISO8601DT.class, 
"en_US", null, null, TimeZone.getTimeZone("EST"), "2001-03-03T05:11:12-05:00" },
+                       { "019", testDate, CalendarSwap.ISO8601DT.class, 
"en_US", null, "PST", TimeZone.getTimeZone("EST"), "2001-03-03T05:11:12-05:00" 
},
+
+                       // CalendarSwap.ISO8601DTZ
+                       { "020", testDate, CalendarSwap.ISO8601DTZ.class, null, 
null, null, null, "2001-03-03T10:11:12Z" },
+                       { "021", testDate, CalendarSwap.ISO8601DTZ.class, 
"ja_JP", null, null, null, "2001-03-03T10:11:12Z" },
+                       { "022", testDate, CalendarSwap.ISO8601DTZ.class, 
Locale.JAPAN, null, null, null, "2001-03-03T10:11:12Z" },
+                       { "023", testDate, CalendarSwap.ISO8601DTZ.class, null, 
Locale.JAPAN, null, null, "2001-03-03T10:11:12Z" },
+                       { "024", testDate, CalendarSwap.ISO8601DTZ.class, 
"en_UK", Locale.JAPAN, null, null, "2001-03-03T10:11:12Z" },
+                       { "025", testDate, CalendarSwap.ISO8601DTZ.class, 
"ja_JP", Locale.KOREA, null, null, "2001-03-03T10:11:12Z" },
+                       { "026", testDate, CalendarSwap.ISO8601DTZ.class, 
"en_US", null, "PST", null, "2001-03-03T10:11:12Z" },
+                       { "027", testDate, CalendarSwap.ISO8601DTZ.class, 
"en_US", null, TimeZone.getTimeZone("PST"), null, "2001-03-03T10:11:12Z" },
+                       { "028", testDate, CalendarSwap.ISO8601DTZ.class, 
"en_US", null, null, TimeZone.getTimeZone("EST"), "2001-03-03T10:11:12Z" },
+                       { "029", testDate, CalendarSwap.ISO8601DTZ.class, 
"en_US", null, "PST", TimeZone.getTimeZone("EST"), "2001-03-03T10:11:12Z" },
+
+                       // CalendarSwap.ISO8601DTP
+                       { "030", testDate, CalendarSwap.ISO8601DTP.class, null, 
null, null, null, "2001-03-03T10:11:12.000Z" },
+                       { "031", testDate, CalendarSwap.ISO8601DTP.class, 
"ja_JP", null, null, null, "2001-03-03T10:11:12.000Z" },
+                       { "032", testDate, CalendarSwap.ISO8601DTP.class, 
Locale.JAPAN, null, null, null, "2001-03-03T10:11:12.000Z" },
+                       { "033", testDate, CalendarSwap.ISO8601DTP.class, null, 
Locale.JAPAN, null, null, "2001-03-03T10:11:12.000Z" },
+                       { "034", testDate, CalendarSwap.ISO8601DTP.class, 
"en_UK", Locale.JAPAN, null, null, "2001-03-03T10:11:12.000Z" },
+                       { "035", testDate, CalendarSwap.ISO8601DTP.class, 
"ja_JP", Locale.KOREA, null, null, "2001-03-03T10:11:12.000Z" },
+                       { "036", testDate, CalendarSwap.ISO8601DTP.class, 
"en_US", null, "PST", null, "2001-03-03T02:11:12.000-08:00" },
+                       { "037", testDate, CalendarSwap.ISO8601DTP.class, 
"en_US", null, TimeZone.getTimeZone("PST"), null, 
"2001-03-03T02:11:12.000-08:00" },
+                       { "038", testDate, CalendarSwap.ISO8601DTP.class, 
"en_US", null, null, TimeZone.getTimeZone("EST"), 
"2001-03-03T05:11:12.000-05:00" },
+                       { "039", testDate, CalendarSwap.ISO8601DTP.class, 
"en_US", null, "PST", TimeZone.getTimeZone("EST"), 
"2001-03-03T05:11:12.000-05:00" },
+
+                       // CalendarSwap.ISO8601DTPNZ
+                       { "040", testDate, CalendarSwap.ISO8601DTPZ.class, 
null, null, null, null, "2001-03-03T10:11:12.000Z" },
+                       { "041", testDate, CalendarSwap.ISO8601DTPZ.class, 
"ja_JP", null, null, null, "2001-03-03T10:11:12.000Z" },
+                       { "042", testDate, CalendarSwap.ISO8601DTPZ.class, 
Locale.JAPAN, null, null, null, "2001-03-03T10:11:12.000Z" },
+                       { "043", testDate, CalendarSwap.ISO8601DTPZ.class, 
null, Locale.JAPAN, null, null, "2001-03-03T10:11:12.000Z" },
+                       { "044", testDate, CalendarSwap.ISO8601DTPZ.class, 
"en_UK", Locale.JAPAN, null, null, "2001-03-03T10:11:12.000Z" },
+                       { "045", testDate, CalendarSwap.ISO8601DTPZ.class, 
"ja_JP", Locale.KOREA, null, null, "2001-03-03T10:11:12.000Z" },
+                       { "046", testDate, CalendarSwap.ISO8601DTPZ.class, 
"en_US", null, "PST", null, "2001-03-03T10:11:12.000Z" },
+                       { "047", testDate, CalendarSwap.ISO8601DTPZ.class, 
"en_US", null, TimeZone.getTimeZone("PST"), null, "2001-03-03T10:11:12.000Z" },
+                       { "048", testDate, CalendarSwap.ISO8601DTPZ.class, 
"en_US", null, null, TimeZone.getTimeZone("EST"), "2001-03-03T10:11:12.000Z" },
+                       { "049", testDate, CalendarSwap.ISO8601DTPZ.class, 
"en_US", null, "PST", TimeZone.getTimeZone("EST"), "2001-03-03T10:11:12.000Z" },
+
+                       // CalendarSwap.RFC2822DT
+                       { "050", testDate, CalendarSwap.RFC2822DT.class, null, 
null, null, null, "Sat, 03 Mar 2001 10:11:12 +0000" },
+                       { "051", testDate, CalendarSwap.RFC2822DT.class, 
"ja_JP", null, null, null, "土, 03 3 2001 10:11:12 +0000" },
+                       { "052", testDate, CalendarSwap.RFC2822DT.class, 
Locale.JAPAN, null, null, null, "土, 03 3 2001 10:11:12 +0000" },
+                       { "053", testDate, CalendarSwap.RFC2822DT.class, null, 
Locale.JAPAN, null, null, "土, 03 3 2001 10:11:12 +0000" },
+                       { "054", testDate, CalendarSwap.RFC2822DT.class, 
"en_UK", Locale.JAPAN, null, null, "土, 03 3 2001 10:11:12 +0000" },
+                       { "055", testDate, CalendarSwap.RFC2822DT.class, 
"ja_JP", Locale.KOREA, null, null, "토, 03 3월 2001 10:11:12 +0000" },
+                       { "056", testDate, CalendarSwap.RFC2822DT.class, 
"en_US", null, "PST", null, "Sat, 03 Mar 2001 02:11:12 -0800" },
+                       { "057", testDate, CalendarSwap.RFC2822DT.class, 
"en_US", null, TimeZone.getTimeZone("PST"), null, "Sat, 03 Mar 2001 02:11:12 
-0800" },
+                       { "058", testDate, CalendarSwap.RFC2822DT.class, 
"en_US", null, null, TimeZone.getTimeZone("EST"), "Sat, 03 Mar 2001 05:11:12 
-0500" },
+                       { "059", testDate, CalendarSwap.RFC2822DT.class, 
"en_US", null, "PST", TimeZone.getTimeZone("EST"), "Sat, 03 Mar 2001 05:11:12 
-0500" },
+
+                       // CalendarSwap.RFC2822DTZ
+                       { "060", testDate, CalendarSwap.RFC2822DTZ.class, null, 
null, null, null, "Sat, 03 Mar 2001 10:11:12 GMT" },
+                       { "061", testDate, CalendarSwap.RFC2822DTZ.class, 
"ja_JP", null, null, null, "土, 03 3 2001 10:11:12 GMT" },
+                       { "062", testDate, CalendarSwap.RFC2822DTZ.class, 
Locale.JAPAN, null, null, null, "土, 03 3 2001 10:11:12 GMT" },
+                       { "063", testDate, CalendarSwap.RFC2822DTZ.class, null, 
Locale.JAPAN, null, null, "土, 03 3 2001 10:11:12 GMT" },
+                       { "064", testDate, CalendarSwap.RFC2822DTZ.class, 
"en_UK", Locale.JAPAN, null, null, "土, 03 3 2001 10:11:12 GMT" },
+                       { "065", testDate, CalendarSwap.RFC2822DTZ.class, 
"ja_JP", Locale.KOREA, null, null, "토, 03 3월 2001 10:11:12 GMT" },
+                       { "066", testDate, CalendarSwap.RFC2822DTZ.class, 
"en_US", null, "PST", null, "Sat, 03 Mar 2001 10:11:12 GMT" },
+                       { "067", testDate, CalendarSwap.RFC2822DTZ.class, 
"en_US", null, TimeZone.getTimeZone("PST"), null, "Sat, 03 Mar 2001 10:11:12 
GMT" },
+                       { "068", testDate, CalendarSwap.RFC2822DTZ.class, 
"en_US", null, null, TimeZone.getTimeZone("EST"), "Sat, 03 Mar 2001 10:11:12 
GMT" },
+                       { "069", testDate, CalendarSwap.RFC2822DTZ.class, 
"en_US", null, "PST", TimeZone.getTimeZone("EST"), "Sat, 03 Mar 2001 10:11:12 
GMT" },
+
+                       // CalendarSwap.RFC2822D
+                       { "070", testDate, CalendarSwap.RFC2822D.class, null, 
null, null, null, "03 Mar 2001" },
+                       { "071", testDate, CalendarSwap.RFC2822D.class, 
"ja_JP", null, null, null, "03 3 2001" },
+                       { "072", testDate, CalendarSwap.RFC2822D.class, 
Locale.JAPAN, null, null, null, "03 3 2001" },
+                       { "073", testDate, CalendarSwap.RFC2822D.class, null, 
Locale.JAPAN, null, null, "03 3 2001" },
+                       { "074", testDate, CalendarSwap.RFC2822D.class, 
"en_UK", Locale.JAPAN, null, null, "03 3 2001" },
+                       { "075", testDate, CalendarSwap.RFC2822D.class, 
"ja_JP", Locale.KOREA, null, null, "03 3월 2001" },
+                       { "076", testDate, CalendarSwap.RFC2822D.class, 
"en_US", null, "PST", null, "03 Mar 2001" },
+                       { "077", testDate, CalendarSwap.RFC2822D.class, 
"en_US", null, TimeZone.getTimeZone("PST"), null, "03 Mar 2001" },
+                       { "078", testDate, CalendarSwap.RFC2822D.class, 
"en_US", null, null, TimeZone.getTimeZone("EST"), "03 Mar 2001" },
+                       { "079", testDate, CalendarSwap.RFC2822D.class, 
"en_US", null, "PST", TimeZone.getTimeZone("EST"), "03 Mar 2001" },
+
+                       // CalendarSwap.DateSimple
+                       { "080", testDate, CalendarSwap.DateSimple.class, null, 
null, null, null, "2001/03/03" },
+                       { "081", testDate, CalendarSwap.DateSimple.class, 
"ja_JP", null, null, null, "2001/03/03" },
+                       { "082", testDate, CalendarSwap.DateSimple.class, 
Locale.JAPAN, null, null, null, "2001/03/03" },
+                       { "083", testDate, CalendarSwap.DateSimple.class, null, 
Locale.JAPAN, null, null, "2001/03/03" },
+                       { "084", testDate, CalendarSwap.DateSimple.class, 
"en_UK", Locale.JAPAN, null, null, "2001/03/03" },
+                       { "085", testDate, CalendarSwap.DateSimple.class, 
"ja_JP", Locale.KOREA, null, null, "2001/03/03" },
+                       { "086", testDate, CalendarSwap.DateSimple.class, 
"en_US", null, "PST", null, "2001/03/03" },
+                       { "087", testDate, CalendarSwap.DateSimple.class, 
"en_US", null, TimeZone.getTimeZone("PST"), null, "2001/03/03" },
+                       { "088", testDate, CalendarSwap.DateSimple.class, 
"en_US", null, null, TimeZone.getTimeZone("EST"), "2001/03/03" },
+                       { "089", testDate, CalendarSwap.DateSimple.class, 
"en_US", null, "PST", TimeZone.getTimeZone("EST"), "2001/03/03" },
+
+                       // CalendarSwap.TimeSimple
+                       { "090", testDate, CalendarSwap.TimeSimple.class, null, 
null, null, null, "10:11:12" },
+                       { "091", testDate, CalendarSwap.TimeSimple.class, 
"ja_JP", null, null, null, "10:11:12" },
+                       { "092", testDate, CalendarSwap.TimeSimple.class, 
Locale.JAPAN, null, null, null, "10:11:12" },
+                       { "093", testDate, CalendarSwap.TimeSimple.class, null, 
Locale.JAPAN, null, null, "10:11:12" },
+                       { "094", testDate, CalendarSwap.TimeSimple.class, 
"en_UK", Locale.JAPAN, null, null, "10:11:12" },
+                       { "095", testDate, CalendarSwap.TimeSimple.class, 
"ja_JP", Locale.KOREA, null, null, "10:11:12" },
+                       { "096", testDate, CalendarSwap.TimeSimple.class, 
"en_US", null, "PST", null, "02:11:12" },
+                       { "097", testDate, CalendarSwap.TimeSimple.class, 
"en_US", null, TimeZone.getTimeZone("PST"), null, "02:11:12" },
+                       { "098", testDate, CalendarSwap.TimeSimple.class, 
"en_US", null, null, TimeZone.getTimeZone("EST"), "05:11:12" },
+                       { "099", testDate, CalendarSwap.TimeSimple.class, 
"en_US", null, "PST", TimeZone.getTimeZone("EST"), "05:11:12" },
+
+                       // CalendarSwap.DateTimeSimple
+                       { "100", testDate, CalendarSwap.DateTimeSimple.class, 
null, null, null, null, "2001/03/03 10:11:12" },
+                       { "101", testDate, CalendarSwap.DateTimeSimple.class, 
"ja_JP", null, null, null, "2001/03/03 10:11:12" },
+                       { "102", testDate, CalendarSwap.DateTimeSimple.class, 
Locale.JAPAN, null, null, null, "2001/03/03 10:11:12" },
+                       { "103", testDate, CalendarSwap.DateTimeSimple.class, 
null, Locale.JAPAN, null, null, "2001/03/03 10:11:12" },
+                       { "104", testDate, CalendarSwap.DateTimeSimple.class, 
"en_UK", Locale.JAPAN, null, null, "2001/03/03 10:11:12" },
+                       { "105", testDate, CalendarSwap.DateTimeSimple.class, 
"ja_JP", Locale.KOREA, null, null, "2001/03/03 10:11:12" },
+                       { "106", testDate, CalendarSwap.DateTimeSimple.class, 
"en_US", null, "PST", null, "2001/03/03 02:11:12" },
+                       { "107", testDate, CalendarSwap.DateTimeSimple.class, 
"en_US", null, TimeZone.getTimeZone("PST"), null, "2001/03/03 02:11:12" },
+                       { "108", testDate, CalendarSwap.DateTimeSimple.class, 
"en_US", null, null, TimeZone.getTimeZone("EST"), "2001/03/03 05:11:12" },
+                       { "109", testDate, CalendarSwap.DateTimeSimple.class, 
"en_US", null, "PST", TimeZone.getTimeZone("EST"), "2001/03/03 05:11:12" },
+
+                       // CalendarSwap.DateFull
+                       { "110", testDate, CalendarSwap.DateFull.class, null, 
null, null, null, "Saturday, March 3, 2001" },
+                       { "111", testDate, CalendarSwap.DateFull.class, 
"ja_JP", null, null, null, "2001年3月3日" },
+                       { "112", testDate, CalendarSwap.DateFull.class, 
Locale.JAPAN, null, null, null, "2001年3月3日" },
+                       { "113", testDate, CalendarSwap.DateFull.class, null, 
Locale.JAPAN, null, null, "2001年3月3日" },
+                       { "114", testDate, CalendarSwap.DateFull.class, 
"en_UK", Locale.JAPAN, null, null, "2001年3月3日" },
+                       { "115", testDate, CalendarSwap.DateFull.class, 
"en_UK", Locale.KOREA, null, null, "2001년 3월 3일 토요일" },
+                       { "116", testDate, CalendarSwap.DateFull.class, 
"en_US", null, "PST", null, "Saturday, March 3, 2001" },
+                       { "117", testDate, CalendarSwap.DateFull.class, 
"en_US", null, TimeZone.getTimeZone("PST"), null, "Saturday, March 3, 2001" },
+                       { "118", testDate, CalendarSwap.DateFull.class, 
"en_US", null, null, TimeZone.getTimeZone("EST"), "Saturday, March 3, 2001" },
+                       { "119", testDate, CalendarSwap.DateFull.class, 
"en_US", null, "PST", TimeZone.getTimeZone("EST"), "Saturday, March 3, 2001" },
+
+                       // CalendarSwap.DateLong
+                       { "120", testDate, CalendarSwap.DateLong.class, null, 
null, null, null, "March 3, 2001" },
+                       { "121", testDate, CalendarSwap.DateLong.class, 
"ja_JP", null, null, null, "2001/03/03" },
+                       { "122", testDate, CalendarSwap.DateLong.class, 
Locale.JAPAN, null, null, null, "2001/03/03" },
+                       { "123", testDate, CalendarSwap.DateLong.class, null, 
Locale.JAPAN, null, null, "2001/03/03" },
+                       { "124", testDate, CalendarSwap.DateLong.class, 
"en_UK", Locale.JAPAN, null, null, "2001/03/03" },
+                       { "125", testDate, CalendarSwap.DateLong.class, 
"en_UK", Locale.KOREA, null, null, "2001년 3월 3일 (토)" },
+                       { "126", testDate, CalendarSwap.DateLong.class, 
"en_US", null, "PST", null, "March 3, 2001" },
+                       { "127", testDate, CalendarSwap.DateLong.class, 
"en_US", null, TimeZone.getTimeZone("PST"), null, "March 3, 2001" },
+                       { "128", testDate, CalendarSwap.DateLong.class, 
"en_US", null, null, TimeZone.getTimeZone("EST"), "March 3, 2001" },
+                       { "129", testDate, CalendarSwap.DateLong.class, 
"en_US", null, "PST", TimeZone.getTimeZone("EST"), "March 3, 2001" },
+
+                       // CalendarSwap.DateMedium
+                       { "130", testDate, CalendarSwap.DateMedium.class, null, 
null, null, null, "Mar 3, 2001" },
+                       { "131", testDate, CalendarSwap.DateMedium.class, 
"ja_JP", null, null, null, "2001/03/03" },
+                       { "132", testDate, CalendarSwap.DateMedium.class, 
Locale.JAPAN, null, null, null, "2001/03/03" },
+                       { "133", testDate, CalendarSwap.DateMedium.class, null, 
Locale.JAPAN, null, null, "2001/03/03" },
+                       { "134", testDate, CalendarSwap.DateMedium.class, 
"en_UK", Locale.JAPAN, null, null, "2001/03/03" },
+                       { "135", testDate, CalendarSwap.DateMedium.class, 
"en_UK", Locale.KOREA, null, null, "2001. 3. 3" },
+                       { "136", testDate, CalendarSwap.DateMedium.class, 
"en_US", null, "PST", null, "Mar 3, 2001" },
+                       { "137", testDate, CalendarSwap.DateMedium.class, 
"en_US", null, TimeZone.getTimeZone("PST"), null, "Mar 3, 2001" },
+                       { "138", testDate, CalendarSwap.DateMedium.class, 
"en_US", null, null, TimeZone.getTimeZone("EST"), "Mar 3, 2001" },
+                       { "139", testDate, CalendarSwap.DateMedium.class, 
"en_US", null, "PST", TimeZone.getTimeZone("EST"), "Mar 3, 2001" },
+
+                       // CalendarSwap.DateShort
+                       { "140", testDate, CalendarSwap.DateShort.class, null, 
null, null, null, "3/3/01" },
+                       { "141", testDate, CalendarSwap.DateShort.class, 
"ja_JP", null, null, null, "01/03/03" },
+                       { "142", testDate, CalendarSwap.DateShort.class, 
Locale.JAPAN, null, null, null, "01/03/03" },
+                       { "143", testDate, CalendarSwap.DateShort.class, null, 
Locale.JAPAN, null, null, "01/03/03" },
+                       { "144", testDate, CalendarSwap.DateShort.class, 
"en_UK", Locale.JAPAN, null, null, "01/03/03" },
+                       { "145", testDate, CalendarSwap.DateShort.class, 
"en_UK", Locale.KOREA, null, null, "01. 3. 3" },
+                       { "146", testDate, CalendarSwap.DateShort.class, 
"en_US", null, "PST", null, "3/3/01" },
+                       { "147", testDate, CalendarSwap.DateShort.class, 
"en_US", null, TimeZone.getTimeZone("PST"), null, "3/3/01" },
+                       { "148", testDate, CalendarSwap.DateShort.class, 
"en_US", null, null, TimeZone.getTimeZone("EST"), "3/3/01" },
+                       { "149", testDate, CalendarSwap.DateShort.class, 
"en_US", null, "PST", TimeZone.getTimeZone("EST"), "3/3/01" },
+
+                       // CalendarSwap.TimeFull
+                       { "150", testDate, CalendarSwap.TimeFull.class, null, 
null, null, null, "10:11:12 AM GMT" },
+                       { "151", testDate, CalendarSwap.TimeFull.class, 
"ja_JP", null, null, null, "10時11分12秒 GMT" },
+                       { "152", testDate, CalendarSwap.TimeFull.class, 
Locale.JAPAN, null, null, null, "10時11分12秒 GMT" },
+                       { "153", testDate, CalendarSwap.TimeFull.class, null, 
Locale.JAPAN, null, null, "10時11分12秒 GMT" },
+                       { "154", testDate, CalendarSwap.TimeFull.class, 
"en_UK", Locale.JAPAN, null, null, "10時11分12秒 GMT" },
+                       { "155", testDate, CalendarSwap.TimeFull.class, 
"en_UK", Locale.KOREA, null, null, "오전 10시 11분 12초 GMT" },
+                       { "156", testDate, CalendarSwap.TimeFull.class, 
"en_US", null, "PST", null, "2:11:12 AM PST" },
+                       { "157", testDate, CalendarSwap.TimeFull.class, 
"en_US", null, TimeZone.getTimeZone("PST"), null, "2:11:12 AM PST" },
+                       { "158", testDate, CalendarSwap.TimeFull.class, 
"en_US", null, null, TimeZone.getTimeZone("EST"), "5:11:12 AM EST" },
+                       { "159", testDate, CalendarSwap.TimeFull.class, 
"en_US", null, "PST", TimeZone.getTimeZone("EST"), "5:11:12 AM EST" },
+
+                       // CalendarSwap.TimeLong
+                       { "160", testDate, CalendarSwap.TimeLong.class, null, 
null, null, null, "10:11:12 AM GMT" },
+                       { "161", testDate, CalendarSwap.TimeLong.class, 
"ja_JP", null, null, null, "10:11:12 GMT" },
+                       { "162", testDate, CalendarSwap.TimeLong.class, 
Locale.JAPAN, null, null, null, "10:11:12 GMT" },
+                       { "163", testDate, CalendarSwap.TimeLong.class, null, 
Locale.JAPAN, null, null, "10:11:12 GMT" },
+                       { "164", testDate, CalendarSwap.TimeLong.class, 
"en_UK", Locale.JAPAN, null, null, "10:11:12 GMT" },
+                       { "165", testDate, CalendarSwap.TimeLong.class, 
"en_UK", Locale.KOREA, null, null, "오전 10시 11분 12초" },
+                       { "166", testDate, CalendarSwap.TimeLong.class, 
"en_US", null, "PST", null, "2:11:12 AM PST" },
+                       { "167", testDate, CalendarSwap.TimeLong.class, 
"en_US", null, TimeZone.getTimeZone("PST"), null, "2:11:12 AM PST" },
+                       { "168", testDate, CalendarSwap.TimeLong.class, 
"en_US", null, null, TimeZone.getTimeZone("EST"), "5:11:12 AM EST" },
+                       { "169", testDate, CalendarSwap.TimeLong.class, 
"en_US", null, "PST", TimeZone.getTimeZone("EST"), "5:11:12 AM EST" },
+
+                       // CalendarSwap.TimeMedium
+                       { "170", testDate, CalendarSwap.TimeMedium.class, null, 
null, null, null, "10:11:12 AM" },
+                       { "171", testDate, CalendarSwap.TimeMedium.class, 
"ja_JP", null, null, null, "10:11:12" },
+                       { "172", testDate, CalendarSwap.TimeMedium.class, 
Locale.JAPAN, null, null, null, "10:11:12" },
+                       { "173", testDate, CalendarSwap.TimeMedium.class, null, 
Locale.JAPAN, null, null, "10:11:12" },
+                       { "174", testDate, CalendarSwap.TimeMedium.class, 
"en_UK", Locale.JAPAN, null, null, "10:11:12" },
+                       { "175", testDate, CalendarSwap.TimeMedium.class, 
"en_UK", Locale.KOREA, null, null, "오전 10:11:12" },
+                       { "176", testDate, CalendarSwap.TimeMedium.class, 
"en_US", null, "PST", null, "2:11:12 AM" },
+                       { "177", testDate, CalendarSwap.TimeMedium.class, 
"en_US", null, TimeZone.getTimeZone("PST"), null, "2:11:12 AM" },
+                       { "178", testDate, CalendarSwap.TimeMedium.class, 
"en_US", null, null, TimeZone.getTimeZone("EST"), "5:11:12 AM" },
+                       { "179", testDate, CalendarSwap.TimeMedium.class, 
"en_US", null, "PST", TimeZone.getTimeZone("EST"), "5:11:12 AM" },
+
+                       // CalendarSwap.TimeShort
+                       { "180", testDate, CalendarSwap.TimeShort.class, null, 
null, null, null, "10:11 AM" },
+                       { "181", testDate, CalendarSwap.TimeShort.class, 
"ja_JP", null, null, null, "10:11" },
+                       { "182", testDate, CalendarSwap.TimeShort.class, 
Locale.JAPAN, null, null, null, "10:11" },
+                       { "183", testDate, CalendarSwap.TimeShort.class, null, 
Locale.JAPAN, null, null, "10:11" },
+                       { "184", testDate, CalendarSwap.TimeShort.class, 
"en_UK", Locale.JAPAN, null, null, "10:11" },
+                       { "185", testDate, CalendarSwap.TimeShort.class, 
"en_UK", Locale.KOREA, null, null, "오전 10:11" },
+                       { "186", testDate, CalendarSwap.TimeShort.class, 
"en_US", null, "PST", null, "2:11 AM" },
+                       { "187", testDate, CalendarSwap.TimeShort.class, 
"en_US", null, TimeZone.getTimeZone("PST"), null, "2:11 AM" },
+                       { "188", testDate, CalendarSwap.TimeShort.class, 
"en_US", null, null, TimeZone.getTimeZone("EST"), "5:11 AM" },
+                       { "189", testDate, CalendarSwap.TimeShort.class, 
"en_US", null, "PST", TimeZone.getTimeZone("EST"), "5:11 AM" },
+
+                       // CalendarSwap.DateTimeFull
+                       { "190", testDate, CalendarSwap.DateTimeFull.class, 
null, null, null, null, "Saturday, March 3, 2001 10:11:12 AM GMT" },
+                       { "191", testDate, CalendarSwap.DateTimeFull.class, 
"ja_JP", null, null, null, "2001年3月3日 10時11分12秒 GMT" },
+                       { "192", testDate, CalendarSwap.DateTimeFull.class, 
Locale.JAPAN, null, null, null, "2001年3月3日 10時11分12秒 GMT" },
+                       { "193", testDate, CalendarSwap.DateTimeFull.class, 
null, Locale.JAPAN, null, null, "2001年3月3日 10時11分12秒 GMT" },
+                       { "194", testDate, CalendarSwap.DateTimeFull.class, 
"en_UK", Locale.JAPAN, null, null, "2001年3月3日 10時11分12秒 GMT" },
+                       { "195", testDate, CalendarSwap.DateTimeFull.class, 
"en_UK", Locale.KOREA, null, null, "2001년 3월 3일 토요일 오전 10시 
11분 12초 GMT" },
+                       { "196", testDate, CalendarSwap.DateTimeFull.class, 
"en_US", null, "PST", null, "Saturday, March 3, 2001 2:11:12 AM PST" },
+                       { "197", testDate, CalendarSwap.DateTimeFull.class, 
"en_US", null, TimeZone.getTimeZone("PST"), null, "Saturday, March 3, 2001 
2:11:12 AM PST" },
+                       { "198", testDate, CalendarSwap.DateTimeFull.class, 
"en_US", null, null, TimeZone.getTimeZone("EST"), "Saturday, March 3, 2001 
5:11:12 AM EST" },
+                       { "199", testDate, CalendarSwap.DateTimeFull.class, 
"en_US", null, "PST", TimeZone.getTimeZone("EST"), "Saturday, March 3, 2001 
5:11:12 AM EST" },
+
+                       // CalendarSwap.DateTimeLong
+                       { "200", testDate, CalendarSwap.DateTimeLong.class, 
null, null, null, null, "March 3, 2001 10:11:12 AM GMT" },
+                       { "201", testDate, CalendarSwap.DateTimeLong.class, 
"ja_JP", null, null, null, "2001/03/03 10:11:12 GMT" },
+                       { "202", testDate, CalendarSwap.DateTimeLong.class, 
Locale.JAPAN, null, null, null, "2001/03/03 10:11:12 GMT" },
+                       { "203", testDate, CalendarSwap.DateTimeLong.class, 
null, Locale.JAPAN, null, null, "2001/03/03 10:11:12 GMT" },
+                       { "204", testDate, CalendarSwap.DateTimeLong.class, 
"en_UK", Locale.JAPAN, null, null, "2001/03/03 10:11:12 GMT" },
+                       { "205", testDate, CalendarSwap.DateTimeLong.class, 
"en_UK", Locale.KOREA, null, null, "2001년 3월 3일 (토) 오전 10시 11분 
12초" },
+                       { "206", testDate, CalendarSwap.DateTimeLong.class, 
"en_US", null, "PST", null, "March 3, 2001 2:11:12 AM PST" },
+                       { "207", testDate, CalendarSwap.DateTimeLong.class, 
"en_US", null, TimeZone.getTimeZone("PST"), null, "March 3, 2001 2:11:12 AM 
PST" },
+                       { "208", testDate, CalendarSwap.DateTimeLong.class, 
"en_US", null, null, TimeZone.getTimeZone("EST"), "March 3, 2001 5:11:12 AM 
EST" },
+                       { "209", testDate, CalendarSwap.DateTimeLong.class, 
"en_US", null, "PST", TimeZone.getTimeZone("EST"), "March 3, 2001 5:11:12 AM 
EST" },
+
+                       // CalendarSwap.DateTimeMedium
+                       { "210", testDate, CalendarSwap.DateTimeMedium.class, 
null, null, null, null, "Mar 3, 2001 10:11:12 AM" },
+                       { "211", testDate, CalendarSwap.DateTimeMedium.class, 
"ja_JP", null, null, null, "2001/03/03 10:11:12" },
+                       { "212", testDate, CalendarSwap.DateTimeMedium.class, 
Locale.JAPAN, null, null, null, "2001/03/03 10:11:12" },
+                       { "213", testDate, CalendarSwap.DateTimeMedium.class, 
null, Locale.JAPAN, null, null, "2001/03/03 10:11:12" },
+                       { "214", testDate, CalendarSwap.DateTimeMedium.class, 
"en_UK", Locale.JAPAN, null, null, "2001/03/03 10:11:12" },
+                       { "215", testDate, CalendarSwap.DateTimeMedium.class, 
"en_UK", Locale.KOREA, null, null, "2001. 3. 3 오전 10:11:12" },
+                       { "216", testDate, CalendarSwap.DateTimeMedium.class, 
"en_US", null, "PST", null, "Mar 3, 2001 2:11:12 AM" },
+                       { "217", testDate, CalendarSwap.DateTimeMedium.class, 
"en_US", null, TimeZone.getTimeZone("PST"), null, "Mar 3, 2001 2:11:12 AM" },
+                       { "218", testDate, CalendarSwap.DateTimeMedium.class, 
"en_US", null, null, TimeZone.getTimeZone("EST"), "Mar 3, 2001 5:11:12 AM" },
+                       { "219", testDate, CalendarSwap.DateTimeMedium.class, 
"en_US", null, "PST", TimeZone.getTimeZone("EST"), "Mar 3, 2001 5:11:12 AM" },
+
+                       // CalendarSwap.DateTimeShort
+                       { "220", testDate, CalendarSwap.DateTimeShort.class, 
null, null, null, null, "3/3/01 10:11 AM" },
+                       { "221", testDate, CalendarSwap.DateTimeShort.class, 
"ja_JP", null, null, null, "01/03/03 10:11" },
+                       { "222", testDate, CalendarSwap.DateTimeShort.class, 
Locale.JAPAN, null, null, null, "01/03/03 10:11" },
+                       { "223", testDate, CalendarSwap.DateTimeShort.class, 
null, Locale.JAPAN, null, null, "01/03/03 10:11" },
+                       { "224", testDate, CalendarSwap.DateTimeShort.class, 
"en_UK", Locale.JAPAN, null, null, "01/03/03 10:11" },
+                       { "225", testDate, CalendarSwap.DateTimeShort.class, 
"en_UK", Locale.KOREA, null, null, "01. 3. 3 오전 10:11" },
+                       { "226", testDate, CalendarSwap.DateTimeShort.class, 
"en_US", null, "PST", null, "3/3/01 2:11 AM" },
+                       { "227", testDate, CalendarSwap.DateTimeShort.class, 
"en_US", null, TimeZone.getTimeZone("PST"), null, "3/3/01 2:11 AM" },
+                       { "228", testDate, CalendarSwap.DateTimeShort.class, 
"en_US", null, null, TimeZone.getTimeZone("EST"), "3/3/01 5:11 AM" },
+                       { "229", testDate, CalendarSwap.DateTimeShort.class, 
"en_US", null, "PST", TimeZone.getTimeZone("EST"), "3/3/01 5:11 AM" },
+
+                       // DateSwap.ToString
+                       { "230", testDate.getTime(), DateSwap.ToString.class, 
null, null, null, null, "Sat Mar 03 10:11:12 GMT 2001" },
+                       { "231", testDate.getTime(), DateSwap.ToString.class, 
"ja_JP", null, null, null, "土 3 03 10:11:12 GMT 2001" },
+                       { "232", testDate.getTime(), DateSwap.ToString.class, 
Locale.JAPAN, null, null, null, "土 3 03 10:11:12 GMT 2001" },
+                       { "233", testDate.getTime(), DateSwap.ToString.class, 
null, Locale.JAPAN, null, null, "土 3 03 10:11:12 GMT 2001" },
+                       { "234", testDate.getTime(), DateSwap.ToString.class, 
"en_UK", Locale.JAPAN, null, null, "土 3 03 10:11:12 GMT 2001" },
+                       { "235", testDate.getTime(), DateSwap.ToString.class, 
"ja_JP", Locale.KOREA, null, null, "토 3월 03 10:11:12 GMT 2001" },
+                       { "236", testDate.getTime(), DateSwap.ToString.class, 
"en_US", null, "PST", null, "Sat Mar 03 02:11:12 PST 2001" },
+                       { "237", testDate.getTime(), DateSwap.ToString.class, 
"en_US", null, TimeZone.getTimeZone("PST"), null, "Sat Mar 03 02:11:12 PST 
2001" },
+                       { "238", testDate.getTime(), DateSwap.ToString.class, 
"en_US", null, null, TimeZone.getTimeZone("EST"), "Sat Mar 03 05:11:12 EST 
2001" },
+                       { "239", testDate.getTime(), DateSwap.ToString.class, 
"en_US", null, "PST", TimeZone.getTimeZone("EST"), "Sat Mar 03 05:11:12 EST 
2001" },
+
+                       // DateSwap.ISO8601DT
+                       { "240", testDate.getTime(), DateSwap.ISO8601DT.class, 
null, null, null, null, "2001-03-03T10:11:12Z" },
+                       { "241", testDate.getTime(), DateSwap.ISO8601DT.class, 
"ja_JP", null, null, null, "2001-03-03T10:11:12Z" },
+                       { "242", testDate.getTime(), DateSwap.ISO8601DT.class, 
Locale.JAPAN, null, null, null, "2001-03-03T10:11:12Z" },
+                       { "243", testDate.getTime(), DateSwap.ISO8601DT.class, 
null, Locale.JAPAN, null, null, "2001-03-03T10:11:12Z" },
+                       { "244", testDate.getTime(), DateSwap.ISO8601DT.class, 
"en_UK", Locale.JAPAN, null, null, "2001-03-03T10:11:12Z" },
+                       { "245", testDate.getTime(), DateSwap.ISO8601DT.class, 
"ja_JP", Locale.KOREA, null, null, "2001-03-03T10:11:12Z" },
+                       { "246", testDate.getTime(), DateSwap.ISO8601DT.class, 
"en_US", null, "PST", null, "2001-03-03T02:11:12-08:00" },
+                       { "247", testDate.getTime(), DateSwap.ISO8601DT.class, 
"en_US", null, TimeZone.getTimeZone("PST"), null, "2001-03-03T02:11:12-08:00" },
+                       { "248", testDate.getTime(), DateSwap.ISO8601DT.class, 
"en_US", null, null, TimeZone.getTimeZone("EST"), "2001-03-03T05:11:12-05:00" },
+                       { "249", testDate.getTime(), DateSwap.ISO8601DT.class, 
"en_US", null, "PST", TimeZone.getTimeZone("EST"), "2001-03-03T05:11:12-05:00" 
},
+
+                       // DateSwap.ISO8601DTZ
+                       { "250", testDate.getTime(), DateSwap.ISO8601DTZ.class, 
null, null, null, null, "2001-03-03T10:11:12Z" },
+                       { "251", testDate.getTime(), DateSwap.ISO8601DTZ.class, 
"ja_JP", null, null, null, "2001-03-03T10:11:12Z" },
+                       { "252", testDate.getTime(), DateSwap.ISO8601DTZ.class, 
Locale.JAPAN, null, null, null, "2001-03-03T10:11:12Z" },
+                       { "253", testDate.getTime(), DateSwap.ISO8601DTZ.class, 
null, Locale.JAPAN, null, null, "2001-03-03T10:11:12Z" },
+                       { "254", testDate.getTime(), DateSwap.ISO8601DTZ.class, 
"en_UK", Locale.JAPAN, null, null, "2001-03-03T10:11:12Z" },
+                       { "255", testDate.getTime(), DateSwap.ISO8601DTZ.class, 
"ja_JP", Locale.KOREA, null, null, "2001-03-03T10:11:12Z" },
+                       { "256", testDate.getTime(), DateSwap.ISO8601DTZ.class, 
"en_US", null, "PST", null, "2001-03-03T10:11:12Z" },
+                       { "257", testDate.getTime(), DateSwap.ISO8601DTZ.class, 
"en_US", null, TimeZone.getTimeZone("PST"), null, "2001-03-03T10:11:12Z" },
+                       { "258", testDate.getTime(), DateSwap.ISO8601DTZ.class, 
"en_US", null, null, TimeZone.getTimeZone("EST"), "2001-03-03T10:11:12Z" },
+                       { "259", testDate.getTime(), DateSwap.ISO8601DTZ.class, 
"en_US", null, "PST", TimeZone.getTimeZone("EST"), "2001-03-03T10:11:12Z" },
+
+                       // DateSwap.ISO8601DTP
+                       { "260", testDate.getTime(), DateSwap.ISO8601DTP.class, 
null, null, null, null, "2001-03-03T10:11:12.000Z" },
+                       { "261", testDate.getTime(), DateSwap.ISO8601DTP.class, 
"ja_JP", null, null, null, "2001-03-03T10:11:12.000Z" },
+                       { "262", testDate.getTime(), DateSwap.ISO8601DTP.class, 
Locale.JAPAN, null, null, null, "2001-03-03T10:11:12.000Z" },
+                       { "263", testDate.getTime(), DateSwap.ISO8601DTP.class, 
null, Locale.JAPAN, null, null, "2001-03-03T10:11:12.000Z" },
+                       { "264", testDate.getTime(), DateSwap.ISO8601DTP.class, 
"en_UK", Locale.JAPAN, null, null, "2001-03-03T10:11:12.000Z" },
+                       { "265", testDate.getTime(), DateSwap.ISO8601DTP.class, 
"ja_JP", Locale.KOREA, null, null, "2001-03-03T10:11:12.000Z" },
+                       { "266", testDate.getTime(), DateSwap.ISO8601DTP.class, 
"en_US", null, "PST", null, "2001-03-03T02:11:12.000-08:00" },
+                       { "267", testDate.getTime(), DateSwap.ISO8601DTP.class, 
"en_US", null, TimeZone.getTimeZone("PST"), null, 
"2001-03-03T02:11:12.000-08:00" },
+                       { "268", testDate.getTime(), DateSwap.ISO8601DTP.class, 
"en_US", null, null, TimeZone.getTimeZone("EST"), 
"2001-03-03T05:11:12.000-05:00" },
+                       { "269", testDate.getTime(), DateSwap.ISO8601DTP.class, 
"en_US", null, "PST", TimeZone.getTimeZone("EST"), 
"2001-03-03T05:11:12.000-05:00" },
+
+                       // DateSwap.ISO8601DTPNZ
+                       { "270", testDate.getTime(), 
DateSwap.ISO8601DTPZ.class, null, null, null, null, "2001-03-03T10:11:12.000Z" 
},
+                       { "271", testDate.getTime(), 
DateSwap.ISO8601DTPZ.class, "ja_JP", null, null, null, 
"2001-03-03T10:11:12.000Z" },
+                       { "272", testDate.getTime(), 
DateSwap.ISO8601DTPZ.class, Locale.JAPAN, null, null, null, 
"2001-03-03T10:11:12.000Z" },
+                       { "273", testDate.getTime(), 
DateSwap.ISO8601DTPZ.class, null, Locale.JAPAN, null, null, 
"2001-03-03T10:11:12.000Z" },
+                       { "274", testDate.getTime(), 
DateSwap.ISO8601DTPZ.class, "en_UK", Locale.JAPAN, null, null, 
"2001-03-03T10:11:12.000Z" },
+                       { "275", testDate.getTime(), 
DateSwap.ISO8601DTPZ.class, "ja_JP", Locale.KOREA, null, null, 
"2001-03-03T10:11:12.000Z" },
+                       { "276", testDate.getTime(), 
DateSwap.ISO8601DTPZ.class, "en_US", null, "PST", null, 
"2001-03-03T10:11:12.000Z" },
+                       { "277", testDate.getTime(), 
DateSwap.ISO8601DTPZ.class, "en_US", null, TimeZone.getTimeZone("PST"), null, 
"2001-03-03T10:11:12.000Z" },
+                       { "278", testDate.getTime(), 
DateSwap.ISO8601DTPZ.class, "en_US", null, null, TimeZone.getTimeZone("EST"), 
"2001-03-03T10:11:12.000Z" },
+                       { "279", testDate.getTime(), 
DateSwap.ISO8601DTPZ.class, "en_US", null, "PST", TimeZone.getTimeZone("EST"), 
"2001-03-03T10:11:12.000Z" },
+
+                       // DateSwap.RFC2822DT
+                       { "280", testDate.getTime(), DateSwap.RFC2822DT.class, 
null, null, null, null, "Sat, 03 Mar 2001 10:11:12 +0000" },
+                       { "281", testDate.getTime(), DateSwap.RFC2822DT.class, 
"ja_JP", null, null, null, "土, 03 3 2001 10:11:12 +0000" },
+                       { "282", testDate.getTime(), DateSwap.RFC2822DT.class, 
Locale.JAPAN, null, null, null, "土, 03 3 2001 10:11:12 +0000" },
+                       { "283", testDate.getTime(), DateSwap.RFC2822DT.class, 
null, Locale.JAPAN, null, null, "土, 03 3 2001 10:11:12 +0000" },
+                       { "284", testDate.getTime(), DateSwap.RFC2822DT.class, 
"en_UK", Locale.JAPAN, null, null, "土, 03 3 2001 10:11:12 +0000" },
+                       { "285", testDate.getTime(), DateSwap.RFC2822DT.class, 
"ja_JP", Locale.KOREA, null, null, "토, 03 3월 2001 10:11:12 +0000" },
+                       { "286", testDate.getTime(), DateSwap.RFC2822DT.class, 
"en_US", null, "PST", null, "Sat, 03 Mar 2001 02:11:12 -0800" },
+                       { "287", testDate.getTime(), DateSwap.RFC2822DT.class, 
"en_US", null, TimeZone.getTimeZone("PST"), null, "Sat, 03 Mar 2001 02:11:12 
-0800" },
+                       { "288", testDate.getTime(), DateSwap.RFC2822DT.class, 
"en_US", null, null, TimeZone.getTimeZone("EST"), "Sat, 03 Mar 2001 05:11:12 
-0500" },
+                       { "289", testDate.getTime(), DateSwap.RFC2822DT.class, 
"en_US", null, "PST", TimeZone.getTimeZone("EST"), "Sat, 03 Mar 2001 05:11:12 
-0500" },
+
+                       // DateSwap.RFC2822DTZ
+                       { "290", testDate.getTime(), DateSwap.RFC2822DTZ.class, 
null, null, null, null, "Sat, 03 Mar 2001 10:11:12 GMT" },
+                       { "291", testDate.getTime(), DateSwap.RFC2822DTZ.class, 
"ja_JP", null, null, null, "土, 03 3 2001 10:11:12 GMT" },
+                       { "292", testDate.getTime(), DateSwap.RFC2822DTZ.class, 
Locale.JAPAN, null, null, null, "土, 03 3 2001 10:11:12 GMT" },
+                       { "293", testDate.getTime(), DateSwap.RFC2822DTZ.class, 
null, Locale.JAPAN, null, null, "土, 03 3 2001 10:11:12 GMT" },
+                       { "294", testDate.getTime(), DateSwap.RFC2822DTZ.class, 
"en_UK", Locale.JAPAN, null, null, "土, 03 3 2001 10:11:12 GMT" },
+                       { "295", testDate.getTime(), DateSwap.RFC2822DTZ.class, 
"ja_JP", Locale.KOREA, null, null, "토, 03 3월 2001 10:11:12 GMT" },
+                       { "296", testDate.getTime(), DateSwap.RFC2822DTZ.class, 
"en_US", null, "PST", null, "Sat, 03 Mar 2001 10:11:12 GMT" },
+                       { "297", testDate.getTime(), DateSwap.RFC2822DTZ.class, 
"en_US", null, TimeZone.getTimeZone("PST"), null, "Sat, 03 Mar 2001 10:11:12 
GMT" },
+                       { "298", testDate.getTime(), DateSwap.RFC2822DTZ.class, 
"en_US", null, null, TimeZone.getTimeZone("EST"), "Sat, 03 Mar 2001 10:11:12 
GMT" },
+                       { "299", testDate.getTime(), DateSwap.RFC2822DTZ.class, 
"en_US", null, "PST", TimeZone.getTimeZone("EST"), "Sat, 03 Mar 2001 10:11:12 
GMT" },
+
+                       // DateSwap.RFC2822D
+                       { "300", testDate.getTime(), DateSwap.RFC2822D.class, 
null, null, null, null, "03 Mar 2001" },
+                       { "301", testDate.getTime(), DateSwap.RFC2822D.class, 
"ja_JP", null, null, null, "03 3 2001" },
+                       { "302", testDate.getTime(), DateSwap.RFC2822D.class, 
Locale.JAPAN, null, null, null, "03 3 2001" },
+                       { "303", testDate.getTime(), DateSwap.RFC2822D.class, 
null, Locale.JAPAN, null, null, "03 3 2001" },
+                       { "304", testDate.getTime(), DateSwap.RFC2822D.class, 
"en_UK", Locale.JAPAN, null, null, "03 3 2001" },
+                       { "305", testDate.getTime(), DateSwap.RFC2822D.class, 
"ja_JP", Locale.KOREA, null, null, "03 3월 2001" },
+                       { "306", testDate.getTime(), DateSwap.RFC2822D.class, 
"en_US", null, "PST", null, "03 Mar 2001" },
+                       { "307", testDate.getTime(), DateSwap.RFC2822D.class, 
"en_US", null, TimeZone.getTimeZone("PST"), null, "03 Mar 2001" },
+                       { "308", testDate.getTime(), DateSwap.RFC2822D.class, 
"en_US", null, null, TimeZone.getTimeZone("EST"), "03 Mar 2001" },
+                       { "309", testDate.getTime(), DateSwap.RFC2822D.class, 
"en_US", null, "PST", TimeZone.getTimeZone("EST"), "03 Mar 2001" },
+
+                       // DateSwap.DateSimple
+                       { "310", testDate.getTime(), DateSwap.DateSimple.class, 
null, null, null, null, "2001/03/03" },
+                       { "311", testDate.getTime(), DateSwap.DateSimple.class, 
"ja_JP", null, null, null, "2001/03/03" },
+                       { "312", testDate.getTime(), DateSwap.DateSimple.class, 
Locale.JAPAN, null, null, null, "2001/03/03" },
+                       { "313", testDate.getTime(), DateSwap.DateSimple.class, 
null, Locale.JAPAN, null, null, "2001/03/03" },
+                       { "314", testDate.getTime(), DateSwap.DateSimple.class, 
"en_UK", Locale.JAPAN, null, null, "2001/03/03" },
+                       { "315", testDate.getTime(), DateSwap.DateSimple.class, 
"ja_JP", Locale.KOREA, null, null, "2001/03/03" },
+                       { "316", testDate.getTime(), DateSwap.DateSimple.class, 
"en_US", null, "PST", null, "2001/03/03" },
+                       { "317", testDate.getTime(), DateSwap.DateSimple.class, 
"en_US", null, TimeZone.getTimeZone("PST"), null, "2001/03/03" },
+                       { "318", testDate.getTime(), DateSwap.DateSimple.class, 
"en_US", null, null, TimeZone.getTimeZone("EST"), "2001/03/03" },
+                       { "319", testDate.getTime(), DateSwap.DateSimple.class, 
"en_US", null, "PST", TimeZone.getTimeZone("EST"), "2001/03/03" },
+
+                       // DateSwap.TimeSimple
+                       { "320", testDate.getTime(), DateSwap.TimeSimple.class, 
null, null, null, null, "10:11:12" },
+                       { "321", testDate.getTime(), DateSwap.TimeSimple.class, 
"ja_JP", null, null, null, "10:11:12" },
+                       { "322", testDate.getTime(), DateSwap.TimeSimple.class, 
Locale.JAPAN, null, null, null, "10:11:12" },
+                       { "323", testDate.getTime(), DateSwap.TimeSimple.class, 
null, Locale.JAPAN, null, null, "10:11:12" },
+                       { "324", testDate.getTime(), DateSwap.TimeSimple.class, 
"en_UK", Locale.JAPAN, null, null, "10:11:12" },
+                       { "325", testDate.getTime(), DateSwap.TimeSimple.class, 
"ja_JP", Locale.KOREA, null, null, "10:11:12" },
+                       { "326", testDate.getTime(), DateSwap.TimeSimple.class, 
"en_US", null, "PST", null, "02:11:12" },
+                       { "327", testDate.getTime(), DateSwap.TimeSimple.class, 
"en_US", null, TimeZone.getTimeZone("PST"), null, "02:11:12" },
+                       { "328", testDate.getTime(), DateSwap.TimeSimple.class, 
"en_US", null, null, TimeZone.getTimeZone("EST"), "05:11:12" },
+                       { "329", testDate.getTime(), DateSwap.TimeSimple.class, 
"en_US", null, "PST", TimeZone.getTimeZone("EST"), "05:11:12" },
+
+                       // DateSwap.DateTimeSimple
+                       { "330", testDate.getTime(), 
DateSwap.DateTimeSimple.class, null, null, null, null, "2001/03/03 10:11:12" },
+                       { "331", testDate.getTime(), 
DateSwap.DateTimeSimple.class, "ja_JP", null, null, null, "2001/03/03 10:11:12" 
},
+                       { "332", testDate.getTime(), 
DateSwap.DateTimeSimple.class, Locale.JAPAN, null, null, null, "2001/03/03 
10:11:12" },
+                       { "333", testDate.getTime(), 
DateSwap.DateTimeSimple.class, null, Locale.JAPAN, null, null, "2001/03/03 
10:11:12" },
+                       { "334", testDate.getTime(), 
DateSwap.DateTimeSimple.class, "en_UK", Locale.JAPAN, null, null, "2001/03/03 
10:11:12" },
+                       { "335", testDate.getTime(), 
DateSwap.DateTimeSimple.class, "ja_JP", Locale.KOREA, null, null, "2001/03/03 
10:11:12" },
+                       { "336", testDate.getTime(), 
DateSwap.DateTimeSimple.class, "en_US", null, "PST", null, "2001/03/03 
02:11:12" },
+                       { "337", testDate.getTime(), 
DateSwap.DateTimeSimple.class, "en_US", null, TimeZone.getTimeZone("PST"), 
null, "2001/03/03 02:11:12" },
+                       { "338", testDate.getTime(), 
DateSwap.DateTimeSimple.class, "en_US", null, null, 
TimeZone.getTimeZone("EST"), "2001/03/03 05:11:12" },
+                       { "339", testDate.getTime(), 
DateSwap.DateTimeSimple.class, "en_US", null, "PST", 
TimeZone.getTimeZone("EST"), "2001/03/03 05:11:12" },
+
+                       // DateSwap.DateFull
+                       { "340", testDate.getTime(), DateSwap.DateFull.class, 
null, null, null, null, "Saturday, March 3, 2001" },
+                       { "341", testDate.getTime(), DateSwap.DateFull.class, 
"ja_JP", null, null, null, "2001年3月3日" },
+                       { "342", testDate.getTime(), DateSwap.DateFull.class, 
Locale.JAPAN, null, null, null, "2001年3月3日" },
+                       { "343", testDate.getTime(), DateSwap.DateFull.class, 
null, Locale.JAPAN, null, null, "2001年3月3日" },
+                       { "344", testDate.getTime(), DateSwap.DateFull.class, 
"en_UK", Locale.JAPAN, null, null, "2001年3月3日" },
+                       { "345", testDate.getTime(), DateSwap.DateFull.class, 
"en_UK", Locale.KOREA, null, null, "2001년 3월 3일 토요일" },
+                       { "346", testDate.getTime(), DateSwap.DateFull.class, 
"en_US", null, "PST", null, "Saturday, March 3, 2001" },
+                       { "347", testDate.getTime(), DateSwap.DateFull.class, 
"en_US", null, TimeZone.getTimeZone("PST"), null, "Saturday, March 3, 2001" },
+                       { "348", testDate.getTime(), DateSwap.DateFull.class, 
"en_US", null, null, TimeZone.getTimeZone("EST"), "Saturday, March 3, 2001" },
+                       { "349", testDate.getTime(), DateSwap.DateFull.class, 
"en_US", null, "PST", TimeZone.getTimeZone("EST"), "Saturday, March 3, 2001" },
+
+                       // DateSwap.DateLong
+                       { "350", testDate.getTime(), DateSwap.DateLong.class, 
null, null, null, null, "March 3, 2001" },
+                       { "351", testDate.getTime(), DateSwap.DateLong.class, 
"ja_JP", null, null, null, "2001/03/03" },
+                       { "352", testDate.getTime(), DateSwap.DateLong.class, 
Locale.JAPAN, null, null, null, "2001/03/03" },
+                       { "353", testDate.getTime(), DateSwap.DateLong.class, 
null, Locale.JAPAN, null, null, "2001/03/03" },
+                       { "354", testDate.getTime(), DateSwap.DateLong.class, 
"en_UK", Locale.JAPAN, null, null, "2001/03/03" },
+                       { "355", testDate.getTime(), DateSwap.DateLong.class, 
"en_UK", Locale.KOREA, null, null, "2001년 3월 3일 (토)" },
+                       { "356", testDate.getTime(), DateSwap.DateLong.class, 
"en_US", null, "PST", null, "March 3, 2001" },
+                       { "357", testDate.getTime(), DateSwap.DateLong.class, 
"en_US", null, TimeZone.getTimeZone("PST"), null, "March 3, 2001" },
+                       { "358", testDate.getTime(), DateSwap.DateLong.class, 
"en_US", null, null, TimeZone.getTimeZone("EST"), "March 3, 2001" },
+                       { "359", testDate.getTime(), DateSwap.DateLong.class, 
"en_US", null, "PST", TimeZone.getTimeZone("EST"), "March 3, 2001" },
+
+                       // DateSwap.DateMedium
+                       { "360", testDate.getTime(), DateSwap.DateMedium.class, 
null, null, null, null, "Mar 3, 2001" },
+                       { "361", testDate.getTime(), DateSwap.DateMedium.class, 
"ja_JP", null, null, null, "2001/03/03" },
+                       { "362", testDate.getTime(), DateSwap.DateMedium.class, 
Locale.JAPAN, null, null, null, "2001/03/03" },
+                       { "363", testDate.getTime(), DateSwap.DateMedium.class, 
null, Locale.JAPAN, null, null, "2001/03/03" },
+                       { "364", testDate.getTime(), DateSwap.DateMedium.class, 
"en_UK", Locale.JAPAN, null, null, "2001/03/03" },
+                       { "365", testDate.getTime(), DateSwap.DateMedium.class, 
"en_UK", Locale.KOREA, null, null, "2001. 3. 3" },
+                       { "366", testDate.getTime(), DateSwap.DateMedium.class, 
"en_US", null, "PST", null, "Mar 3, 2001" },
+                       { "367", testDate.getTime(), DateSwap.DateMedium.class, 
"en_US", null, TimeZone.getTimeZone("PST"), null, "Mar 3, 2001" },
+                       { "368", testDate.getTime(), DateSwap.DateMedium.class, 
"en_US", null, null, TimeZone.getTimeZone("EST"), "Mar 3, 2001" },
+                       { "369", testDate.getTime(), DateSwap.DateMedium.class, 
"en_US", null, "PST", TimeZone.getTimeZone("EST"), "Mar 3, 2001" },
+
+                       // DateSwap.DateShort
+                       { "370", testDate.getTime(), DateSwap.DateShort.class, 
null, null, null, null, "3/3/01" },
+                       { "371", testDate.getTime(), DateSwap.DateShort.class, 
"ja_JP", null, null, null, "01/03/03" },
+                       { "372", testDate.getTime(), DateSwap.DateShort.class, 
Locale.JAPAN, null, null, null, "01/03/03" },
+                       { "373", testDate.getTime(), DateSwap.DateShort.class, 
null, Locale.JAPAN, null, null, "01/03/03" },
+                       { "374", testDate.getTime(), DateSwap.DateShort.class, 
"en_UK", Locale.JAPAN, null, null, "01/03/03" },
+                       { "375", testDate.getTime(), DateSwap.DateShort.class, 
"en_UK", Locale.KOREA, null, null, "01. 3. 3" },
+                       { "376", testDate.getTime(), DateSwap.DateShort.class, 
"en_US", null, "PST", null, "3/3/01" },
+                       { "377", testDate.getTime(), DateSwap.DateShort.class, 
"en_US", null, TimeZone.getTimeZone("PST"), null, "3/3/01" },
+                       { "378", testDate.getTime(), DateSwap.DateShort.class, 
"en_US", null, null, TimeZone.getTimeZone("EST"), "3/3/01" },
+                       { "379", testDate.getTime(), DateSwap.DateShort.class, 
"en_US", null, "PST", TimeZone.getTimeZone("EST"), "3/3/01" },
+
+                       // DateSwap.TimeFull
+                       { "380", testDate.getTime(), DateSwap.TimeFull.class, 
null, null, null, null, "10:11:12 AM GMT" },
+                       { "381", testDate.getTime(), DateSwap.TimeFull.class, 
"ja_JP", null, null, null, "10時11分12秒 GMT" },
+                       { "382", testDate.getTime(), DateSwap.TimeFull.class, 
Locale.JAPAN, null, null, null, "10時11分12秒 GMT" },
+                       { "383", testDate.getTime(), DateSwap.TimeFull.class, 
null, Locale.JAPAN, null, null, "10時11分12秒 GMT" },
+                       { "384", testDate.getTime(), DateSwap.TimeFull.class, 
"en_UK", Locale.JAPAN, null, null, "10時11分12秒 GMT" },
+                       { "385", testDate.getTime(), DateSwap.TimeFull.class, 
"en_UK", Locale.KOREA, null, null, "오전 10시 11분 12초 GMT" },
+                       { "386", testDate.getTime(), DateSwap.TimeFull.class, 
"en_US", null, "PST", null, "2:11:12 AM PST" },
+                       { "387", testDate.getTime(), DateSwap.TimeFull.class, 
"en_US", null, TimeZone.getTimeZone("PST"), null, "2:11:12 AM PST" },
+                       { "388", testDate.getTime(), DateSwap.TimeFull.class, 
"en_US", null, null, TimeZone.getTimeZone("EST"), "5:11:12 AM EST" },
+                       { "389", testDate.getTime(), DateSwap.TimeFull.class, 
"en_US", null, "PST", TimeZone.getTimeZone("EST"), "5:11:12 AM EST" },
+
+                       // DateSwap.TimeLong
+                       { "390", testDate.getTime(), DateSwap.TimeLong.class, 
null, null, null, null, "10:11:12 AM GMT" },
+                       { "391", testDate.getTime(), DateSwap.TimeLong.class, 
"ja_JP", null, null, null, "10:11:12 GMT" },
+                       { "392", testDate.getTime(), DateSwap.TimeLong.class, 
Locale.JAPAN, null, null, null, "10:11:12 GMT" },
+                       { "393", testDate.getTime(), DateSwap.TimeLong.class, 
null, Locale.JAPAN, null, null, "10:11:12 GMT" },
+                       { "394", testDate.getTime(), DateSwap.TimeLong.class, 
"en_UK", Locale.JAPAN, null, null, "10:11:12 GMT" },
+                       { "395", testDate.getTime(), DateSwap.TimeLong.class, 
"en_UK", Locale.KOREA, null, null, "오전 10시 11분 12초" },
+                       { "396", testDate.getTime(), DateSwap.TimeLong.class, 
"en_US", null, "PST", null, "2:11:12 AM PST" },
+                       { "397", testDate.getTime(), DateSwap.TimeLong.class, 
"en_US", null, TimeZone.getTimeZone("PST"), null, "2:11:12 AM PST" },
+                       { "398", testDate.getTime(), DateSwap.TimeLong.class, 
"en_US", null, null, TimeZone.getTimeZone("EST"), "5:11:12 AM EST" },
+                       { "399", testDate.getTime(), DateSwap.TimeLong.class, 
"en_US", null, "PST", TimeZone.getTimeZone("EST"), "5:11:12 AM EST" },
+
+                       // DateSwap.TimeMedium
+                       { "400", testDate.getTime(), DateSwap.TimeMedium.class, 
null, null, null, null, "10:11:12 AM" },
+                       { "401", testDate.getTime(), DateSwap.TimeMedium.class, 
"ja_JP", null, null, null, "10:11:12" },
+                       { "402", testDate.getTime(), DateSwap.TimeMedium.class, 
Locale.JAPAN, null, null, null, "10:11:12" },
+                       { "403", testDate.getTime(), DateSwap.TimeMedium.class, 
null, Locale.JAPAN, null, null, "10:11:12" },
+                       { "404", testDate.getTime(), DateSwap.TimeMedium.class, 
"en_UK", Locale.JAPAN, null, null, "10:11:12" },
+                       { "405", testDate.getTime(), DateSwap.TimeMedium.class, 
"en_UK", Locale.KOREA, null, null, "오전 10:11:12" },
+                       { "406", testDate.getTime(), DateSwap.TimeMedium.class, 
"en_US", null, "PST", null, "2:11:12 AM" },
+                       { "407", testDate.getTime(), DateSwap.TimeMedium.class, 
"en_US", null, TimeZone.getTimeZone("PST"), null, "2:11:12 AM" },
+                       { "408", testDate.getTime(), DateSwap.TimeMedium.class, 
"en_US", null, null, TimeZone.getTimeZone("EST"), "5:11:12 AM" },
+                       { "409", testDate.getTime(), DateSwap.TimeMedium.class, 
"en_US", null, "PST", TimeZone.getTimeZone("EST"), "5:11:12 AM" },
+
+                       // DateSwap.TimeShort
+                       { "410", testDate.getTime(), DateSwap.TimeShort.class, 
null, null, null, null, "10:11 AM" },
+                       { "411", testDate.getTime(), DateSwap.TimeShort.class, 
"ja_JP", null, null, null, "10:11" },
+                       { "412", testDate.getTime(), DateSwap.TimeShort.class, 
Locale.JAPAN, null, null, null, "10:11" },
+                       { "413", testDate.getTime(), DateSwap.TimeShort.class, 
null, Locale.JAPAN, null, null, "10:11" },
+                       { "414", testDate.getTime(), DateSwap.TimeShort.class, 
"en_UK", Locale.JAPAN, null, null, "10:11" },
+                       { "415", testDate.getTime(), DateSwap.TimeShort.class, 
"en_UK", Locale.KOREA, null, null, "오전 10:11" },
+                       { "416", testDate.getTime(), DateSwap.TimeShort.class, 
"en_US", null, "PST", null, "2:11 AM" },
+                       { "417", testDate.getTime(), DateSwap.TimeShort.class, 
"en_US", null, TimeZone.getTimeZone("PST"), null, "2:11 AM" },
+                       { "418", testDate.getTime(), DateSwap.TimeShort.class, 
"en_US", null, null, TimeZone.getTimeZone("EST"), "5:11 AM" },
+                       { "419", testDate.getTime(), DateSwap.TimeShort.class, 
"en_US", null, "PST", TimeZone.getTimeZone("EST"), "5:11 AM" },
+
+                       // DateSwap.DateTimeFull
+                       { "420", testDate.getTime(), 
DateSwap.DateTimeFull.class, null, null, null, null, "Saturday, March 3, 2001 
10:11:12 AM GMT" },
+                       { "421", testDate.getTime(), 
DateSwap.DateTimeFull.class, "ja_JP", null, null, null, "2001年3月3日 
10時11分12秒 GMT" },
+                       { "422", testDate.getTime(), 
DateSwap.DateTimeFull.class, Locale.JAPAN, null, null, null, "2001年3月3日 
10時11分12秒 GMT" },
+                       { "423", testDate.getTime(), 
DateSwap.DateTimeFull.class, null, Locale.JAPAN, null, null, "2001年3月3日 
10時11分12秒 GMT" },
+                       { "424", testDate.getTime(), 
DateSwap.DateTimeFull.class, "en_UK", Locale.JAPAN, null, null, 
"2001年3月3日 10時11分12秒 GMT" },
+                       { "425", testDate.getTime(), 
DateSwap.DateTimeFull.class, "en_UK", Locale.KOREA, null, null, "2001년 3월 
3일 토요일 오전 10시 11분 12초 GMT" },
+                       { "426", testDate.getTime(), 
DateSwap.DateTimeFull.class, "en_US", null, "PST", null, "Saturday, March 3, 
2001 2:11:12 AM PST" },
+                       { "427", testDate.getTime(), 
DateSwap.DateTimeFull.class, "en_US", null, TimeZone.getTimeZone("PST"), null, 
"Saturday, March 3, 2001 2:11:12 AM PST" },
+                       { "428", testDate.getTime(), 
DateSwap.DateTimeFull.class, "en_US", null, null, TimeZone.getTimeZone("EST"), 
"Saturday, March 3, 2001 5:11:12 AM EST" },
+                       { "429", testDate.getTime(), 
DateSwap.DateTimeFull.class, "en_US", null, "PST", TimeZone.getTimeZone("EST"), 
"Saturday, March 3, 2001 5:11:12 AM EST" },
+
+                       // DateSwap.DateTimeLong
+                       { "430", testDate.getTime(), 
DateSwap.DateTimeLong.class, null, null, null, null, "March 3, 2001 10:11:12 AM 
GMT" },
+                       { "431", testDate.getTime(), 
DateSwap.DateTimeLong.class, "ja_JP", null, null, null, "2001/03/03 10:11:12 
GMT" },
+                       { "432", testDate.getTime(), 
DateSwap.DateTimeLong.class, Locale.JAPAN, null, null, null, "2001/03/03 
10:11:12 GMT" },
+                       { "433", testDate.getTime(), 
DateSwap.DateTimeLong.class, null, Locale.JAPAN, null, null, "2001/03/03 
10:11:12 GMT" },
+                       { "434", testDate.getTime(), 
DateSwap.DateTimeLong.class, "en_UK", Locale.JAPAN, null, null, "2001/03/03 
10:11:12 GMT" },
+                       { "435", testDate.getTime(), 
DateSwap.DateTimeLong.class, "en_UK", Locale.KOREA, null, null, "2001년 3월 
3일 (토) 오전 10시 11분 12초" },
+                       { "436", testDate.getTime(), 
DateSwap.DateTimeLong.class, "en_US", null, "PST", null, "March 3, 2001 2:11:12 
AM PST" },
+                       { "437", testDate.getTime(), 
DateSwap.DateTimeLong.class, "en_US", null, TimeZone.getTimeZone("PST"), null, 
"March 3, 2001 2:11:12 AM PST" },
+                       { "438", testDate.getTime(), 
DateSwap.DateTimeLong.class, "en_US", null, null, TimeZone.getTimeZone("EST"), 
"March 3, 2001 5:11:12 AM EST" },
+                       { "439", testDate.getTime(), 
DateSwap.DateTimeLong.class, "en_US", null, "PST", TimeZone.getTimeZone("EST"), 
"March 3, 2001 5:11:12 AM EST" },
+
+                       // DateSwap.DateTimeMedium
+                       { "440", testDate.getTime(), 
DateSwap.DateTimeMedium.class, null, null, null, null, "Mar 3, 2001 10:11:12 
AM" },
+                       { "441", testDate.getTime(), 
DateSwap.DateTimeMedium.class, "ja_JP", null, null, null, "2001/03/03 10:11:12" 
},
+                       { "442", testDate.getTime(), 
DateSwap.DateTimeMedium.class, Locale.JAPAN, null, null, null, "2001/03/03 
10:11:12" },
+                       { "443", testDate.getTime(), 
DateSwap.DateTimeMedium.class, null, Locale.JAPAN, null, null, "2001/03/03 
10:11:12" },
+                       { "444", testDate.getTime(), 
DateSwap.DateTimeMedium.class, "en_UK", Locale.JAPAN, null, null, "2001/03/03 
10:11:12" },
+                       { "445", testDate.getTime(), 
DateSwap.DateTimeMedium.class, "en_UK", Locale.KOREA, null, null, "2001. 3. 3 
오전 10:11:12" },
+                       { "446", testDate.getTime(), 
DateSwap.DateTimeMedium.class, "en_US", null, "PST", null, "Mar 3, 2001 2:11:12 
AM" },
+                       { "447", testDate.getTime(), 
DateSwap.DateTimeMedium.class, "en_US", null, TimeZone.getTimeZone("PST"), 
null, "Mar 3, 2001 2:11:12 AM" },
+                       { "448", testDate.getTime(), 
DateSwap.DateTimeMedium.class, "en_US", null, null, 
TimeZone.getTimeZone("EST"), "Mar 3, 2001 5:11:12 AM" },
+                       { "449", testDate.getTime(), 
DateSwap.DateTimeMedium.class, "en_US", null, "PST", 
TimeZone.getTimeZone("EST"), "Mar 3, 2001 5:11:12 AM" },
+
+                       // DateSwap.DateTimeShort
+                       { "450", testDate.getTime(), 
DateSwap.DateTimeShort.class, null, null, null, null, "3/3/01 10:11 AM" },
+                       { "451", testDate.getTime(), 
DateSwap.DateTimeShort.class, "ja_JP", null, null, null, "01/03/03 10:11" },
+                       { "452", testDate.getTime(), 
DateSwap.DateTimeShort.class, Locale.JAPAN, null, null, null, "01/03/03 10:11" 
},
+                       { "453", testDate.getTime(), 
DateSwap.DateTimeShort.class, null, Locale.JAPAN, null, null, "01/03/03 10:11" 
},
+                       { "454", testDate.getTime(), 
DateSwap.DateTimeShort.class, "en_UK", Locale.JAPAN, null, null, "01/03/03 
10:11" },
+                       { "455", testDate.getTime(), 
DateSwap.DateTimeShort.class, "en_UK", Locale.KOREA, null, null, "01. 3. 3 오ì 
„ 10:11" },
+                       { "456", testDate.getTime(), 
DateSwap.DateTimeShort.class, "en_US", null, "PST", null, "3/3/01 2:11 AM" },
+                       { "457", testDate.getTime(), 
DateSwap.DateTimeShort.class, "en_US", null, TimeZone.getTimeZone("PST"), null, 
"3/3/01 2:11 AM" },
+                       { "458", testDate.getTime(), 
DateSwap.DateTimeShort.class, "en_US", null, null, TimeZone.getTimeZone("EST"), 
"3/3/01 5:11 AM" },
+                       { "459", testDate.getTime(), 
DateSwap.DateTimeShort.class, "en_US", null, "PST", 
TimeZone.getTimeZone("EST"), "3/3/01 5:11 AM" },
+               });
+       }
+
+       @Before
+       public void beforeTest() {
+               TestUtils.setLocale(Locale.US);
+               TestUtils.setTimeZone("GMT");
+       }
+
+       @After
+       public void afterTest() {
+               TestUtils.unsetLocale();
+               TestUtils.unsetTimeZone();
+       }
+
+       @SuppressWarnings("unused")
+       private String label, expected;
+       private Object calendar;
+       private ContextFactory cf;
+       private Locale sessionLocale;
+       private TimeZone sessionTimeZone;
+
+       public LocalizedDatesTest(String label, Object calendar, Class<? 
extends PojoSwap<?,?>> swap, Object contextLocale, Locale sessionLocale, Object 
contextTimeZone, TimeZone sessionTimeZone, String expected) throws Exception {
+               this.label = label;
+               this.expected = expected;
+               this.calendar = calendar;
+               this.sessionLocale = sessionLocale;
+               this.sessionTimeZone = sessionTimeZone;
+               cf = ContextFactory.create().addPojoSwaps(swap);
+               if (contextLocale != null)
+                       cf.setProperty(BEAN_locale, contextLocale);
+               if (contextTimeZone != null)
+                       cf.setProperty(BEAN_timeZone, contextTimeZone);
+       }
+
+       @Test
+       public void test() {
+               BeanSession session = cf.getBeanContext().createSession(null, 
sessionLocale, sessionTimeZone);
+               String actual = session.convertToType(calendar, String.class);
+               assertEquals(expected, actual);
+               Object c2 = session.convertToType(actual, calendar.getClass());
+               String actual2 = session.convertToType(c2, String.class);
+               assertEquals(expected, actual2);
+       }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/e4dfdf81/juneau-core-test/src/test/java/org/apache/juneau/transforms/ReaderFilterTest.java
----------------------------------------------------------------------
diff --git 
a/juneau-core-test/src/test/java/org/apache/juneau/transforms/ReaderFilterTest.java
 
b/juneau-core-test/src/test/java/org/apache/juneau/transforms/ReaderFilterTest.java
new file mode 100755
index 0000000..0398568
--- /dev/null
+++ 
b/juneau-core-test/src/test/java/org/apache/juneau/transforms/ReaderFilterTest.java
@@ -0,0 +1,48 @@
+// 
***************************************************************************************************************************
+// * Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements.  See the NOTICE file *
+// * distributed with this work for additional information regarding copyright 
ownership.  The ASF licenses this file        *
+// * to you 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.                                              *
+// 
***************************************************************************************************************************
+package org.apache.juneau.transforms;
+
+import static org.junit.Assert.*;
+
+import java.io.*;
+import java.util.*;
+
+import org.apache.juneau.json.*;
+import org.apache.juneau.serializer.*;
+import org.junit.*;
+
+@SuppressWarnings("javadoc")
+public class ReaderFilterTest {
+
+       
//====================================================================================================
+       // test
+       
//====================================================================================================
+       @Test
+       public void test() throws Exception {
+               WriterSerializer s = new 
JsonSerializer.Simple().addPojoSwaps(ReaderSwap.Json.class);
+
+               Reader r;
+               Map<String,Object> m;
+
+               r = new StringReader("{foo:'bar',baz:'quz'}");
+               m = new HashMap<String,Object>();
+               m.put("X", r);
+               assertEquals("{X:{foo:'bar',baz:'quz'}}", s.serialize(m));
+
+               s.addPojoSwaps(ReaderSwap.Xml.class);
+               r = new StringReader("<object><foo _type='string'>bar</foo><baz 
_type='string'>quz</baz></object>");
+               m = new HashMap<String,Object>();
+               m.put("X", r);
+               assertEquals("{X:{foo:'bar',baz:'quz'}}", s.serialize(m));
+       }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/e4dfdf81/juneau-core-test/src/test/java/org/apache/juneau/urlencoding/CommonParser_UonTest.java
----------------------------------------------------------------------
diff --git 
a/juneau-core-test/src/test/java/org/apache/juneau/urlencoding/CommonParser_UonTest.java
 
b/juneau-core-test/src/test/java/org/apache/juneau/urlencoding/CommonParser_UonTest.java
new file mode 100755
index 0000000..64f3d8a
--- /dev/null
+++ 
b/juneau-core-test/src/test/java/org/apache/juneau/urlencoding/CommonParser_UonTest.java
@@ -0,0 +1,170 @@
+// 
***************************************************************************************************************************
+// * Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements.  See the NOTICE file *
+// * distributed with this work for additional information regarding copyright 
ownership.  The ASF licenses this file        *
+// * to you 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.                                              *
+// 
***************************************************************************************************************************
+package org.apache.juneau.urlencoding;
+
+import static org.apache.juneau.BeanContext.*;
+import static org.apache.juneau.serializer.SerializerContext.*;
+import static org.junit.Assert.*;
+
+import java.util.*;
+
+import org.apache.juneau.*;
+import org.apache.juneau.annotation.*;
+import org.apache.juneau.parser.*;
+import org.junit.*;
+
+@SuppressWarnings({"rawtypes","serial","javadoc"})
+public class CommonParser_UonTest {
+
+       ReaderParser p = 
UonParser.DEFAULT.clone().setClassLoader(getClass().getClassLoader()).addToDictionary(A1.class);
+       ReaderParser pe = 
UonParser.DEFAULT_DECODING.clone().setClassLoader(getClass().getClassLoader());
+
+       
//====================================================================================================
+       // testFromSerializer
+       
//====================================================================================================
+       @Test
+       public void testFromSerializer() throws Exception {
+               Map m = null;
+               String in;
+
+               in = "$o(a=$n(1))";
+               m = (Map)p.parse(in, Object.class);
+               assertEquals(1, m.get("a"));
+
+               in = "$o(a=$n(1),b=foo+bar)";
+               m = (Map)p.parse(in, Object.class);
+               assertEquals(1, m.get("a"));
+               assertEquals("foo+bar", m.get("b"));
+               m = (Map)pe.parse(in, Object.class);
+               assertEquals(1, m.get("a"));
+               assertEquals("foo bar", m.get("b"));
+
+               in = "$o(a=$n(1),b=foo+bar,c=$b(false))";
+               m = (Map)pe.parse(in, Object.class);
+               assertEquals(1, m.get("a"));
+               assertEquals("foo bar", m.get("b"));
+               assertEquals(false, m.get("c"));
+
+               in = "$o(a=$n(1),b=foo%20bar,c=$b(false))";
+               m = (Map)pe.parse(in, Object.class);
+               assertEquals(1, m.get("a"));
+               assertEquals("foo bar", m.get("b"));
+               assertEquals(false, m.get("c"));
+
+               ObjectList jl = 
(ObjectList)p.parse("$a($o(attribute=value),$o(attribute='value'))", 
Object.class);
+               assertEquals("value", 
jl.getObjectMap(0).getString("attribute"));
+               assertEquals("'value'", 
jl.getObjectMap(1).getString("attribute"));
+
+               A1 b = new A1();
+               A2 tl = new A2();
+               tl.add(new A3("name0","value0"));
+               tl.add(new A3("name1","value1"));
+               b.list = tl;
+
+               in = new 
UonSerializer().setProperty(SERIALIZER_addBeanTypeProperties, 
true).serialize(b);
+               b = (A1)p.parse(in, Object.class);
+               assertEquals("value1", b.list.get(1).value);
+
+               in = UonSerializer.DEFAULT.serialize(b);
+               b = p.parse(in, A1.class);
+               assertEquals("value1", b.list.get(1).value);
+       }
+
+       @Bean(typeName="A1")
+       public static class A1 {
+               public A2 list;
+       }
+
+       public static class A2 extends LinkedList<A3> {
+       }
+
+       public static class A3 {
+               public String name, value;
+               public A3(){}
+               public A3(String name, String value) {
+                       this.name = name;
+                       this.value = value;
+               }
+       }
+
+       
//====================================================================================================
+       // Correct handling of unknown properties.
+       
//====================================================================================================
+       @Test
+       public void testCorrectHandlingOfUnknownProperties() throws Exception {
+               ReaderParser p = new 
UonParser().setProperty(BEAN_ignoreUnknownBeanProperties, true);
+               B t;
+
+               String in =  "(a=1,unknown=3,b=2)";
+               t = p.parse(in, B.class);
+               assertEquals(t.a, 1);
+               assertEquals(t.b, 2);
+
+               try {
+                       p = new UonParser();
+                       p.parse(in, B.class);
+                       fail("Exception expected");
+               } catch (ParseException e) {}
+       }
+
+       public static class B {
+               public int a, b;
+       }
+
+       
//====================================================================================================
+       // Writing to Collection properties with no setters.
+       
//====================================================================================================
+       @Test
+       public void testCollectionPropertiesWithNoSetters() throws Exception {
+
+               ReaderParser p = UonParser.DEFAULT;
+
+               String json = "(ints=(1,2,3),beans=((a=1,b=2)))";
+               C t = p.parse(json, C.class);
+               assertEquals(t.getInts().size(), 3);
+               assertEquals(t.getBeans().get(0).b, 2);
+       }
+
+       public static class C {
+               private Collection<Integer> ints = new LinkedList<Integer>();
+               private List<B> beans = new LinkedList<B>();
+               public Collection<Integer> getInts() {
+                       return ints;
+               }
+               public List<B> getBeans() {
+                       return beans;
+               }
+       }
+
+       
//====================================================================================================
+       // Parser listeners.
+       
//====================================================================================================
+       @Test
+       public void testParserListeners() throws Exception {
+               final List<String> events = new LinkedList<String>();
+               UonParser p = new 
UonParser().setProperty(BEAN_ignoreUnknownBeanProperties, true);
+               p.addListener(
+                       new ParserListener() {
+                               @Override /* ParserListener */
+                               public <T> void onUnknownProperty(String 
propertyName, Class<T> beanClass, T bean, int line, int col) {
+                                       events.add(propertyName + "," + line + 
"," + col);
+                               }
+                       }
+               );
+
+               String in = "(a=1,unknownProperty=foo,b=2)";
+               p.parse(in, B.class);
+               assertEquals(1, events.size());
+               assertEquals("unknownProperty,1,5", events.get(0));
+       }
+}

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/e4dfdf81/juneau-core-test/src/test/java/org/apache/juneau/urlencoding/CommonParser_UrlEncodingTest.java
----------------------------------------------------------------------
diff --git 
a/juneau-core-test/src/test/java/org/apache/juneau/urlencoding/CommonParser_UrlEncodingTest.java
 
b/juneau-core-test/src/test/java/org/apache/juneau/urlencoding/CommonParser_UrlEncodingTest.java
new file mode 100755
index 0000000..b75834d
--- /dev/null
+++ 
b/juneau-core-test/src/test/java/org/apache/juneau/urlencoding/CommonParser_UrlEncodingTest.java
@@ -0,0 +1,187 @@
+// 
***************************************************************************************************************************
+// * Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements.  See the NOTICE file *
+// * distributed with this work for additional information regarding copyright 
ownership.  The ASF licenses this file        *
+// * to you 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.                                              *
+// 
***************************************************************************************************************************
+package org.apache.juneau.urlencoding;
+
+import static org.apache.juneau.BeanContext.*;
+import static org.apache.juneau.TestUtils.*;
+import static org.apache.juneau.serializer.SerializerContext.*;
+import static org.junit.Assert.*;
+
+import java.util.*;
+
+import org.apache.juneau.*;
+import org.apache.juneau.annotation.*;
+import org.apache.juneau.parser.*;
+import org.apache.juneau.serializer.*;
+import org.junit.*;
+
+@SuppressWarnings({"rawtypes","serial","javadoc"})
+public class CommonParser_UrlEncodingTest {
+
+       ReaderParser p = 
UrlEncodingParser.DEFAULT.clone().setClassLoader(getClass().getClassLoader()).addToDictionary(A1.class);
+
+       
//====================================================================================================
+       // testFromSerializer
+       
//====================================================================================================
+       @Test
+       public void testFromSerializer() throws Exception {
+               Map m = null;
+               String in;
+
+               in = "a=$n(1)";
+               m = (Map)p.parse(in, Object.class);
+               assertEquals(1, m.get("a"));
+
+               in = "a=$n(1)&b=foo+bar";
+               m = (Map)p.parse(in, Object.class);
+               assertEquals(1, m.get("a"));
+               assertEquals("foo bar", m.get("b"));
+
+               in = "a=$n(1)&b=foo+bar&c=$b(false)";
+               m = (Map)p.parse(in, Object.class);
+               assertEquals(1, m.get("a"));
+               assertEquals("foo bar", m.get("b"));
+               assertEquals(false, m.get("c"));
+
+               in = "a=$n(1)&b=foo%20bar&c=$b(false)";
+               m = (Map)p.parse(in, Object.class);
+               assertEquals(1, m.get("a"));
+               assertEquals("foo bar", m.get("b"));
+               assertEquals(false, m.get("c"));
+
+               ObjectMap jm = 
(ObjectMap)p.parse("x=$a($o(attribute=value),$o(attribute='value'))", 
Object.class);
+               assertEquals("value", 
jm.getObjectList("x").getObjectMap(0).getString("attribute"));
+               assertEquals("'value'", 
jm.getObjectList("x").getObjectMap(1).getString("attribute"));
+
+               ObjectList jl = 
(ObjectList)p.parse("_value=$a($o(attribute=value),$o(attribute='value'))", 
Object.class);
+               assertEquals("value", 
jl.getObjectMap(0).getString("attribute"));
+               assertEquals("'value'", 
jl.getObjectMap(1).getString("attribute"));
+
+               A1 b = new A1();
+               A2 tl = new A2();
+               tl.add(new A3("name0","value0"));
+               tl.add(new A3("name1","value1"));
+               b.list = tl;
+
+               in = new 
UrlEncodingSerializer().setProperty(SERIALIZER_addBeanTypeProperties, 
true).serialize(b);
+               b = (A1)p.parse(in, Object.class);
+               assertEquals("value1", b.list.get(1).value);
+
+               in = UrlEncodingSerializer.DEFAULT.serialize(b);
+               b = p.parse(in, A1.class);
+               assertEquals("value1", b.list.get(1).value);
+       }
+
+       @Bean(typeName="A1")
+       public static class A1 {
+               public A2 list;
+       }
+
+       public static class A2 extends LinkedList<A3> {
+       }
+
+       public static class A3 {
+               public String name, value;
+               public A3(){}
+               public A3(String name, String value) {
+                       this.name = name;
+                       this.value = value;
+               }
+       }
+
+       
//====================================================================================================
+       // Correct handling of unknown properties.
+       
//====================================================================================================
+       @Test
+       public void testCorrectHandlingOfUnknownProperties() throws Exception {
+               ReaderParser p = new 
UrlEncodingParser().setProperty(BEAN_ignoreUnknownBeanProperties, true);
+               B t;
+
+               String in =  "a=1&unknown=3&b=2";
+               t = p.parse(in, B.class);
+               assertEquals(t.a, 1);
+               assertEquals(t.b, 2);
+
+               try {
+                       p = new UrlEncodingParser();
+                       p.parse(in, B.class);
+                       fail("Exception expected");
+               } catch (ParseException e) {}
+       }
+
+       public static class B {
+               public int a, b;
+       }
+
+       
//====================================================================================================
+       // Writing to Collection properties with no setters.
+       
//====================================================================================================
+       @Test
+       public void testCollectionPropertiesWithNoSetters() throws Exception {
+
+               ReaderParser p = UrlEncodingParser.DEFAULT;
+
+               String json = "ints=(1,2,3)&beans=((a=1,b=2))";
+               C t = p.parse(json, C.class);
+               assertEquals(t.getInts().size(), 3);
+               assertEquals(t.getBeans().get(0).b, 2);
+       }
+
+       public static class C {
+               private Collection<Integer> ints = new LinkedList<Integer>();
+               private List<B> beans = new LinkedList<B>();
+               public Collection<Integer> getInts() {
+                       return ints;
+               }
+               public List<B> getBeans() {
+                       return beans;
+               }
+       }
+
+       
//====================================================================================================
+       // Parser listeners.
+       
//====================================================================================================
+       @Test
+       public void testParserListeners() throws Exception {
+               final List<String> events = new LinkedList<String>();
+               UonParser p = new 
UrlEncodingParser().setProperty(BEAN_ignoreUnknownBeanProperties, true);
+               p.addListener(
+                       new ParserListener() {
+                               @Override /* ParserListener */
+                               public <T> void onUnknownProperty(String 
propertyName, Class<T> beanClass, T bean, int line, int col) {
+                                       events.add(propertyName + "," + line + 
"," + col);
+                               }
+                       }
+               );
+
+               String in = "a=1&unknownProperty=foo&b=2";
+               p.parse(in, B.class);
+               assertEquals(1, events.size());
+               assertEquals("unknownProperty,1,4", events.get(0));
+       }
+
+       @SuppressWarnings("unchecked")
+       @Test
+       public void testCollections() throws Exception {
+               WriterSerializer s = new 
UrlEncodingSerializer().setProperty(UonSerializerContext.UON_simpleMode, true);
+               ReaderParser p = new UrlEncodingParser();
+
+               List l = new ObjectList("foo","bar");
+               assertEquals("0=foo&1=bar", s.serialize(l));
+
+               String in =  "0=foo&1=bar";
+               ClassMeta<LinkedList<String>> cm = 
p.getBeanContext().createSession().getCollectionClassMeta(LinkedList.class, 
String.class);
+               l = p.parse(in, cm);
+               assertObjectEquals("['foo','bar']",l);
+       }
+}

Reply via email to