http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/75b0d8ee/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/transforms/CalendarSwapComboTest.java ---------------------------------------------------------------------- diff --git a/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/transforms/CalendarSwapComboTest.java b/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/transforms/CalendarSwapComboTest.java new file mode 100644 index 0000000..a240e74 --- /dev/null +++ b/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/transforms/CalendarSwapComboTest.java @@ -0,0 +1,744 @@ +// *************************************************************************************************************************** +// * 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.TestUtils.*; + +import java.lang.reflect.*; +import java.util.*; + +import org.apache.juneau.*; +import org.apache.juneau.parser.*; +import org.apache.juneau.serializer.*; +import org.junit.*; +import org.junit.runner.*; +import org.junit.runners.*; + +/** + * Exhaustive serialization tests for the CalendarSwap class. + */ +@RunWith(Parameterized.class) +@SuppressWarnings({"javadoc"}) +public class CalendarSwapComboTest extends ComboRoundTripTest { + + private static Calendar singleDate = new GregorianCalendar(TimeZone.getTimeZone("PST")); + static { + singleDate.setTimeInMillis(0); + singleDate.set(1901, 2, 3, 10, 11, 12); + } + + private static Calendar[] dateArray = new Calendar[]{singleDate}; + + private static ObjectMap dateMap = new ObjectMap().append("foo", singleDate); + + + @Parameterized.Parameters + public static Collection<Object[]> getParameters() { + return Arrays.asList(new Object[][] { + { /* 0 */ + new ComboInput2<Calendar>( + "CalendarSwap.ToString/singleDate", + Calendar.class, + singleDate, + CalendarSwap.ToString.class, + /* Json */ "'Sun Mar 03 10:11:12 PST 1901'", + /* JsonT */ "'Sun Mar 03 10:11:12 PST 1901'", + /* JsonR */ "'Sun Mar 03 10:11:12 PST 1901'", + /* Xml */ "<string>Sun Mar 03 10:11:12 PST 1901</string>", + /* XmlT */ "<string>Sun Mar 03 10:11:12 PST 1901</string>", + /* XmlR */ "<string>Sun Mar 03 10:11:12 PST 1901</string>\n", + /* XmlNs */ "<string>Sun Mar 03 10:11:12 PST 1901</string>", + /* Html */ "<string>Sun Mar 03 10:11:12 PST 1901</string>", + /* HtmlT */ "<string>Sun Mar 03 10:11:12 PST 1901</string>", + /* HtmlR */ "<string>Sun Mar 03 10:11:12 PST 1901</string>", + /* Uon */ "'Sun Mar 03 10:11:12 PST 1901'", + /* UonT */ "'Sun Mar 03 10:11:12 PST 1901'", + /* UonR */ "'Sun Mar 03 10:11:12 PST 1901'", + /* UrlEnc */ "_value='Sun+Mar+03+10:11:12+PST+1901'", + /* UrlEncT */ "_value='Sun+Mar+03+10:11:12+PST+1901'", + /* UrlEncR */ "_value='Sun+Mar+03+10:11:12+PST+1901'", + /* MsgPack */ "BC53756E204D61722030332031303A31313A3132205053542031393031", + /* MsgPackT */ "BC53756E204D61722030332031303A31313A3132205053542031393031", + /* RdfXml */ "<rdf:RDF>\n<rdf:Description>\n<j:value>Sun Mar 03 10:11:12 PST 1901</j:value>\n</rdf:Description>\n</rdf:RDF>\n", + /* RdfXmlT */ "<rdf:RDF>\n<rdf:Description>\n<j:value>Sun Mar 03 10:11:12 PST 1901</j:value>\n</rdf:Description>\n</rdf:RDF>\n", + /* RdfXmlR */ "<rdf:RDF>\n <rdf:Description>\n <j:value>Sun Mar 03 10:11:12 PST 1901</j:value>\n </rdf:Description>\n</rdf:RDF>\n" + ) + { + @Override + public void verify(Calendar o) { + assertType(Calendar.class, o); + } + } + }, + { /* 1 */ + new ComboInput2<Calendar[]>( + "CalendarSwap.ToString/dateArray", + Calendar[].class, + dateArray, + CalendarSwap.ToString.class, + /* Json */ "['Sun Mar 03 10:11:12 PST 1901']", + /* JsonT */ "['Sun Mar 03 10:11:12 PST 1901']", + /* JsonR */ "[\n\t'Sun Mar 03 10:11:12 PST 1901'\n]", + /* Xml */ "<array><string>Sun Mar 03 10:11:12 PST 1901</string></array>", + /* XmlT */ "<array><string>Sun Mar 03 10:11:12 PST 1901</string></array>", + /* XmlR */ "<array>\n\t<string>Sun Mar 03 10:11:12 PST 1901</string>\n</array>\n", + /* XmlNs */ "<array><string>Sun Mar 03 10:11:12 PST 1901</string></array>", + /* Html */ "<ul><li>Sun Mar 03 10:11:12 PST 1901</li></ul>", + /* HtmlT */ "<ul><li>Sun Mar 03 10:11:12 PST 1901</li></ul>", + /* HtmlR */ "<ul>\n\t<li>Sun Mar 03 10:11:12 PST 1901</li>\n</ul>\n", + /* Uon */ "@('Sun Mar 03 10:11:12 PST 1901')", + /* UonT */ "@('Sun Mar 03 10:11:12 PST 1901')", + /* UonR */ "@(\n\t'Sun Mar 03 10:11:12 PST 1901'\n)", + /* UrlEnc */ "0='Sun+Mar+03+10:11:12+PST+1901'", + /* UrlEncT */ "0='Sun+Mar+03+10:11:12+PST+1901'", + /* UrlEncR */ "0='Sun+Mar+03+10:11:12+PST+1901'", + /* MsgPack */ "91BC53756E204D61722030332031303A31313A3132205053542031393031", + /* MsgPackT */ "91BC53756E204D61722030332031303A31313A3132205053542031393031", + /* RdfXml */ "<rdf:RDF>\n<rdf:Seq>\n<rdf:li>Sun Mar 03 10:11:12 PST 1901</rdf:li>\n</rdf:Seq>\n</rdf:RDF>\n", + /* RdfXmlT */ "<rdf:RDF>\n<rdf:Seq>\n<rdf:li>Sun Mar 03 10:11:12 PST 1901</rdf:li>\n</rdf:Seq>\n</rdf:RDF>\n", + /* RdfXmlR */ "<rdf:RDF>\n <rdf:Seq>\n <rdf:li>Sun Mar 03 10:11:12 PST 1901</rdf:li>\n </rdf:Seq>\n</rdf:RDF>\n" + ) + { + @Override + public void verify(Calendar[] o) { + assertType(Calendar.class, o[0]); + } + } + }, + { /* 2 */ + new ComboInput2<ObjectMap>( + "CalendarSwap.ToString", + getType(Map.class,String.class,Calendar.class), + dateMap, + CalendarSwap.ToString.class, + /* Json */ "{foo:'Sun Mar 03 10:11:12 PST 1901'}", + /* JsonT */ "{foo:'Sun Mar 03 10:11:12 PST 1901'}", + /* JsonR */ "{\n\tfoo: 'Sun Mar 03 10:11:12 PST 1901'\n}", + /* Xml */ "<object><foo>Sun Mar 03 10:11:12 PST 1901</foo></object>", + /* XmlT */ "<object><foo>Sun Mar 03 10:11:12 PST 1901</foo></object>", + /* XmlR */ "<object>\n\t<foo>Sun Mar 03 10:11:12 PST 1901</foo>\n</object>\n", + /* XmlNs */ "<object><foo>Sun Mar 03 10:11:12 PST 1901</foo></object>", + /* Html */ "<table><tr><td>foo</td><td>Sun Mar 03 10:11:12 PST 1901</td></tr></table>", + /* HtmlT */ "<table><tr><td>foo</td><td>Sun Mar 03 10:11:12 PST 1901</td></tr></table>", + /* HtmlR */ "<table>\n\t<tr>\n\t\t<td>foo</td>\n\t\t<td>Sun Mar 03 10:11:12 PST 1901</td>\n\t</tr>\n</table>\n", + /* Uon */ "(foo='Sun Mar 03 10:11:12 PST 1901')", + /* UonT */ "(foo='Sun Mar 03 10:11:12 PST 1901')", + /* UonR */ "(\n\tfoo='Sun Mar 03 10:11:12 PST 1901'\n)", + /* UrlEnc */ "foo='Sun+Mar+03+10:11:12+PST+1901'", + /* UrlEncT */ "foo='Sun+Mar+03+10:11:12+PST+1901'", + /* UrlEncR */ "foo='Sun+Mar+03+10:11:12+PST+1901'", + /* MsgPack */ "81A3666F6FBC53756E204D61722030332031303A31313A3132205053542031393031", + /* MsgPackT */ "81A3666F6FBC53756E204D61722030332031303A31313A3132205053542031393031", + /* RdfXml */ "<rdf:RDF>\n<rdf:Description>\n<jp:foo>Sun Mar 03 10:11:12 PST 1901</jp:foo>\n</rdf:Description>\n</rdf:RDF>\n", + /* RdfXmlT */ "<rdf:RDF>\n<rdf:Description>\n<jp:foo>Sun Mar 03 10:11:12 PST 1901</jp:foo>\n</rdf:Description>\n</rdf:RDF>\n", + /* RdfXmlR */ "<rdf:RDF>\n <rdf:Description>\n <jp:foo>Sun Mar 03 10:11:12 PST 1901</jp:foo>\n </rdf:Description>\n</rdf:RDF>\n" + ) + { + @Override + public void verify(ObjectMap o) { + assertType(Calendar.class, o.get("foo")); + } + } + }, + { /* 3 */ + new ComboInput2<Calendar>( + "CalendarSwap.ISO8601DT/singleDate", + Calendar.class, + singleDate, + CalendarSwap.ISO8601DT.class, + /* Json */ "'1901-03-03T10:11:12-08:00'", + /* JsonT */ "'1901-03-03T10:11:12-08:00'", + /* JsonR */ "'1901-03-03T10:11:12-08:00'", + /* Xml */ "<string>1901-03-03T10:11:12-08:00</string>", + /* XmlT */ "<string>1901-03-03T10:11:12-08:00</string>", + /* XmlR */ "<string>1901-03-03T10:11:12-08:00</string>\n", + /* XmlNs */ "<string>1901-03-03T10:11:12-08:00</string>", + /* Html */ "<string>1901-03-03T10:11:12-08:00</string>", + /* HtmlT */ "<string>1901-03-03T10:11:12-08:00</string>", + /* HtmlR */ "<string>1901-03-03T10:11:12-08:00</string>", + /* Uon */ "1901-03-03T10:11:12-08:00", + /* UonT */ "1901-03-03T10:11:12-08:00", + /* UonR */ "1901-03-03T10:11:12-08:00", + /* UrlEnc */ "_value=1901-03-03T10:11:12-08:00", + /* UrlEncT */ "_value=1901-03-03T10:11:12-08:00", + /* UrlEncR */ "_value=1901-03-03T10:11:12-08:00", + /* MsgPack */ "B9313930312D30332D30335431303A31313A31322D30383A3030", + /* MsgPackT */ "B9313930312D30332D30335431303A31313A31322D30383A3030", + /* RdfXml */ "<rdf:RDF>\n<rdf:Description>\n<j:value>1901-03-03T10:11:12-08:00</j:value>\n</rdf:Description>\n</rdf:RDF>\n", + /* RdfXmlT */ "<rdf:RDF>\n<rdf:Description>\n<j:value>1901-03-03T10:11:12-08:00</j:value>\n</rdf:Description>\n</rdf:RDF>\n", + /* RdfXmlR */ "<rdf:RDF>\n <rdf:Description>\n <j:value>1901-03-03T10:11:12-08:00</j:value>\n </rdf:Description>\n</rdf:RDF>\n" + ) + { + @Override + public void verify(Calendar o) { + assertType(Calendar.class, o); + } + } + }, + { /* 4 */ + new ComboInput2<Calendar[]>( + "CalendarSwap.ISO8601DT/dateArray", + Calendar[].class, + dateArray, + CalendarSwap.ISO8601DT.class, + /* Json */ "['1901-03-03T10:11:12-08:00']", + /* JsonT */ "['1901-03-03T10:11:12-08:00']", + /* JsonR */ "[\n\t'1901-03-03T10:11:12-08:00'\n]", + /* Xml */ "<array><string>1901-03-03T10:11:12-08:00</string></array>", + /* XmlT */ "<array><string>1901-03-03T10:11:12-08:00</string></array>", + /* XmlR */ "<array>\n\t<string>1901-03-03T10:11:12-08:00</string>\n</array>\n", + /* XmlNs */ "<array><string>1901-03-03T10:11:12-08:00</string></array>", + /* Html */ "<ul><li>1901-03-03T10:11:12-08:00</li></ul>", + /* HtmlT */ "<ul><li>1901-03-03T10:11:12-08:00</li></ul>", + /* HtmlR */ "<ul>\n\t<li>1901-03-03T10:11:12-08:00</li>\n</ul>\n", + /* Uon */ "@(1901-03-03T10:11:12-08:00)", + /* UonT */ "@(1901-03-03T10:11:12-08:00)", + /* UonR */ "@(\n\t1901-03-03T10:11:12-08:00\n)", + /* UrlEnc */ "0=1901-03-03T10:11:12-08:00", + /* UrlEncT */ "0=1901-03-03T10:11:12-08:00", + /* UrlEncR */ "0=1901-03-03T10:11:12-08:00", + /* MsgPack */ "91B9313930312D30332D30335431303A31313A31322D30383A3030", + /* MsgPackT */ "91B9313930312D30332D30335431303A31313A31322D30383A3030", + /* RdfXml */ "<rdf:RDF>\n<rdf:Seq>\n<rdf:li>1901-03-03T10:11:12-08:00</rdf:li>\n</rdf:Seq>\n</rdf:RDF>\n", + /* RdfXmlT */ "<rdf:RDF>\n<rdf:Seq>\n<rdf:li>1901-03-03T10:11:12-08:00</rdf:li>\n</rdf:Seq>\n</rdf:RDF>\n", + /* RdfXmlR */ "<rdf:RDF>\n <rdf:Seq>\n <rdf:li>1901-03-03T10:11:12-08:00</rdf:li>\n </rdf:Seq>\n</rdf:RDF>\n" + ) + { + @Override + public void verify(Calendar[] o) { + assertType(Calendar.class, o[0]); + } + } + }, + { /* 5 */ + new ComboInput2<ObjectMap>( + "CalendarSwap.ISO8601DT/dateMap", + getType(Map.class,String.class,Calendar.class), + dateMap, + CalendarSwap.ISO8601DT.class, + /* Json */ "{foo:'1901-03-03T10:11:12-08:00'}", + /* JsonT */ "{foo:'1901-03-03T10:11:12-08:00'}", + /* JsonR */ "{\n\tfoo: '1901-03-03T10:11:12-08:00'\n}", + /* Xml */ "<object><foo>1901-03-03T10:11:12-08:00</foo></object>", + /* XmlT */ "<object><foo>1901-03-03T10:11:12-08:00</foo></object>", + /* XmlR */ "<object>\n\t<foo>1901-03-03T10:11:12-08:00</foo>\n</object>\n", + /* XmlNs */ "<object><foo>1901-03-03T10:11:12-08:00</foo></object>", + /* Html */ "<table><tr><td>foo</td><td>1901-03-03T10:11:12-08:00</td></tr></table>", + /* HtmlT */ "<table><tr><td>foo</td><td>1901-03-03T10:11:12-08:00</td></tr></table>", + /* HtmlR */ "<table>\n\t<tr>\n\t\t<td>foo</td>\n\t\t<td>1901-03-03T10:11:12-08:00</td>\n\t</tr>\n</table>\n", + /* Uon */ "(foo=1901-03-03T10:11:12-08:00)", + /* UonT */ "(foo=1901-03-03T10:11:12-08:00)", + /* UonR */ "(\n\tfoo=1901-03-03T10:11:12-08:00\n)", + /* UrlEnc */ "foo=1901-03-03T10:11:12-08:00", + /* UrlEncT */ "foo=1901-03-03T10:11:12-08:00", + /* UrlEncR */ "foo=1901-03-03T10:11:12-08:00", + /* MsgPack */ "81A3666F6FB9313930312D30332D30335431303A31313A31322D30383A3030", + /* MsgPackT */ "81A3666F6FB9313930312D30332D30335431303A31313A31322D30383A3030", + /* RdfXml */ "<rdf:RDF>\n<rdf:Description>\n<jp:foo>1901-03-03T10:11:12-08:00</jp:foo>\n</rdf:Description>\n</rdf:RDF>\n", + /* RdfXmlT */ "<rdf:RDF>\n<rdf:Description>\n<jp:foo>1901-03-03T10:11:12-08:00</jp:foo>\n</rdf:Description>\n</rdf:RDF>\n", + /* RdfXmlR */ "<rdf:RDF>\n <rdf:Description>\n <jp:foo>1901-03-03T10:11:12-08:00</jp:foo>\n </rdf:Description>\n</rdf:RDF>\n" + ) + { + @Override + public void verify(ObjectMap o) { + assertType(Calendar.class, o.get("foo")); + } + } + }, + { /* 6 */ + new ComboInput2<Calendar>( + "CalendarSwap.RFC2822DTZ/singleDate", + Calendar.class, + singleDate, + CalendarSwap.RFC2822DTZ.class, + /* Json */ "'Sun, 03 Mar 1901 18:11:12 GMT'", + /* JsonT */ "'Sun, 03 Mar 1901 18:11:12 GMT'", + /* JsonR */ "'Sun, 03 Mar 1901 18:11:12 GMT'", + /* Xml */ "<string>Sun, 03 Mar 1901 18:11:12 GMT</string>", + /* XmlT */ "<string>Sun, 03 Mar 1901 18:11:12 GMT</string>", + /* XmlR */ "<string>Sun, 03 Mar 1901 18:11:12 GMT</string>\n", + /* XmlNs */ "<string>Sun, 03 Mar 1901 18:11:12 GMT</string>", + /* Html */ "<string>Sun, 03 Mar 1901 18:11:12 GMT</string>", + /* HtmlT */ "<string>Sun, 03 Mar 1901 18:11:12 GMT</string>", + /* HtmlR */ "<string>Sun, 03 Mar 1901 18:11:12 GMT</string>", + /* Uon */ "'Sun, 03 Mar 1901 18:11:12 GMT'", + /* UonT */ "'Sun, 03 Mar 1901 18:11:12 GMT'", + /* UonR */ "'Sun, 03 Mar 1901 18:11:12 GMT'", + /* UrlEnc */ "_value='Sun,+03+Mar+1901+18:11:12+GMT'", + /* UrlEncT */ "_value='Sun,+03+Mar+1901+18:11:12+GMT'", + /* UrlEncR */ "_value='Sun,+03+Mar+1901+18:11:12+GMT'", + /* MsgPack */ "BD53756E2C203033204D617220313930312031383A31313A313220474D54", + /* MsgPackT */ "BD53756E2C203033204D617220313930312031383A31313A313220474D54", + /* RdfXml */ "<rdf:RDF>\n<rdf:Description>\n<j:value>Sun, 03 Mar 1901 18:11:12 GMT</j:value>\n</rdf:Description>\n</rdf:RDF>\n", + /* RdfXmlT */ "<rdf:RDF>\n<rdf:Description>\n<j:value>Sun, 03 Mar 1901 18:11:12 GMT</j:value>\n</rdf:Description>\n</rdf:RDF>\n", + /* RdfXmlR */ "<rdf:RDF>\n <rdf:Description>\n <j:value>Sun, 03 Mar 1901 18:11:12 GMT</j:value>\n </rdf:Description>\n</rdf:RDF>\n" + ) + { + @Override + public void verify(Calendar o) { + assertType(Calendar.class, o); + } + } + }, + { /* 7 */ + new ComboInput2<Calendar[]>( + "CalendarSwap.RFC2822DTZ/dateArray", + Calendar[].class, + dateArray, + CalendarSwap.RFC2822DTZ.class, + /* Json */ "['Sun, 03 Mar 1901 18:11:12 GMT']", + /* JsonT */ "['Sun, 03 Mar 1901 18:11:12 GMT']", + /* JsonR */ "[\n\t'Sun, 03 Mar 1901 18:11:12 GMT'\n]", + /* Xml */ "<array><string>Sun, 03 Mar 1901 18:11:12 GMT</string></array>", + /* XmlT */ "<array><string>Sun, 03 Mar 1901 18:11:12 GMT</string></array>", + /* XmlR */ "<array>\n\t<string>Sun, 03 Mar 1901 18:11:12 GMT</string>\n</array>\n", + /* XmlNs */ "<array><string>Sun, 03 Mar 1901 18:11:12 GMT</string></array>", + /* Html */ "<ul><li>Sun, 03 Mar 1901 18:11:12 GMT</li></ul>", + /* HtmlT */ "<ul><li>Sun, 03 Mar 1901 18:11:12 GMT</li></ul>", + /* HtmlR */ "<ul>\n\t<li>Sun, 03 Mar 1901 18:11:12 GMT</li>\n</ul>\n", + /* Uon */ "@('Sun, 03 Mar 1901 18:11:12 GMT')", + /* UonT */ "@('Sun, 03 Mar 1901 18:11:12 GMT')", + /* UonR */ "@(\n\t'Sun, 03 Mar 1901 18:11:12 GMT'\n)", + /* UrlEnc */ "0='Sun,+03+Mar+1901+18:11:12+GMT'", + /* UrlEncT */ "0='Sun,+03+Mar+1901+18:11:12+GMT'", + /* UrlEncR */ "0='Sun,+03+Mar+1901+18:11:12+GMT'", + /* MsgPack */ "91BD53756E2C203033204D617220313930312031383A31313A313220474D54", + /* MsgPackT */ "91BD53756E2C203033204D617220313930312031383A31313A313220474D54", + /* RdfXml */ "<rdf:RDF>\n<rdf:Seq>\n<rdf:li>Sun, 03 Mar 1901 18:11:12 GMT</rdf:li>\n</rdf:Seq>\n</rdf:RDF>\n", + /* RdfXmlT */ "<rdf:RDF>\n<rdf:Seq>\n<rdf:li>Sun, 03 Mar 1901 18:11:12 GMT</rdf:li>\n</rdf:Seq>\n</rdf:RDF>\n", + /* RdfXmlR */ "<rdf:RDF>\n <rdf:Seq>\n <rdf:li>Sun, 03 Mar 1901 18:11:12 GMT</rdf:li>\n </rdf:Seq>\n</rdf:RDF>\n" + ) + { + @Override + public void verify(Calendar[] o) { + assertType(Calendar.class, o[0]); + } + } + }, + { /* 8 */ + new ComboInput2<ObjectMap>( + "CalendarSwap.RFC2822DTZ/dateMap", + getType(Map.class,String.class,Calendar.class), + dateMap, + CalendarSwap.RFC2822DTZ.class, + /* Json */ "{foo:'Sun, 03 Mar 1901 18:11:12 GMT'}", + /* JsonT */ "{foo:'Sun, 03 Mar 1901 18:11:12 GMT'}", + /* JsonR */ "{\n\tfoo: 'Sun, 03 Mar 1901 18:11:12 GMT'\n}", + /* Xml */ "<object><foo>Sun, 03 Mar 1901 18:11:12 GMT</foo></object>", + /* XmlT */ "<object><foo>Sun, 03 Mar 1901 18:11:12 GMT</foo></object>", + /* XmlR */ "<object>\n\t<foo>Sun, 03 Mar 1901 18:11:12 GMT</foo>\n</object>\n", + /* XmlNs */ "<object><foo>Sun, 03 Mar 1901 18:11:12 GMT</foo></object>", + /* Html */ "<table><tr><td>foo</td><td>Sun, 03 Mar 1901 18:11:12 GMT</td></tr></table>", + /* HtmlT */ "<table><tr><td>foo</td><td>Sun, 03 Mar 1901 18:11:12 GMT</td></tr></table>", + /* HtmlR */ "<table>\n\t<tr>\n\t\t<td>foo</td>\n\t\t<td>Sun, 03 Mar 1901 18:11:12 GMT</td>\n\t</tr>\n</table>\n", + /* Uon */ "(foo='Sun, 03 Mar 1901 18:11:12 GMT')", + /* UonT */ "(foo='Sun, 03 Mar 1901 18:11:12 GMT')", + /* UonR */ "(\n\tfoo='Sun, 03 Mar 1901 18:11:12 GMT'\n)", + /* UrlEnc */ "foo='Sun,+03+Mar+1901+18:11:12+GMT'", + /* UrlEncT */ "foo='Sun,+03+Mar+1901+18:11:12+GMT'", + /* UrlEncR */ "foo='Sun,+03+Mar+1901+18:11:12+GMT'", + /* MsgPack */ "81A3666F6FBD53756E2C203033204D617220313930312031383A31313A313220474D54", + /* MsgPackT */ "81A3666F6FBD53756E2C203033204D617220313930312031383A31313A313220474D54", + /* RdfXml */ "<rdf:RDF>\n<rdf:Description>\n<jp:foo>Sun, 03 Mar 1901 18:11:12 GMT</jp:foo>\n</rdf:Description>\n</rdf:RDF>\n", + /* RdfXmlT */ "<rdf:RDF>\n<rdf:Description>\n<jp:foo>Sun, 03 Mar 1901 18:11:12 GMT</jp:foo>\n</rdf:Description>\n</rdf:RDF>\n", + /* RdfXmlR */ "<rdf:RDF>\n <rdf:Description>\n <jp:foo>Sun, 03 Mar 1901 18:11:12 GMT</jp:foo>\n </rdf:Description>\n</rdf:RDF>\n" + ) + { + @Override + public void verify(ObjectMap o) { + assertType(Calendar.class, o.get("foo")); + } + } + }, + { /* 9 */ + new ComboInput2<Calendar>( + "CalendarLongSwap", + Calendar.class, + singleDate, + CalendarLongSwap.class, + /* Json */ "-2172116928000", + /* JsonT */ "-2172116928000", + /* JsonR */ "-2172116928000", + /* Xml */ "<number>-2172116928000</number>", + /* XmlT */ "<number>-2172116928000</number>", + /* XmlR */ "<number>-2172116928000</number>\n", + /* XmlNs */ "<number>-2172116928000</number>", + /* Html */ "<number>-2172116928000</number>", + /* HtmlT */ "<number>-2172116928000</number>", + /* HtmlR */ "<number>-2172116928000</number>", + /* Uon */ "-2172116928000", + /* UonT */ "-2172116928000", + /* UonR */ "-2172116928000", + /* UrlEnc */ "_value=-2172116928000", + /* UrlEncT */ "_value=-2172116928000", + /* UrlEncR */ "_value=-2172116928000", + /* MsgPack */ "D3FFFFFE0643BDFA00", + /* MsgPackT */ "D3FFFFFE0643BDFA00", + /* RdfXml */ "<rdf:RDF>\n<rdf:Description>\n<j:value>-2172116928000</j:value>\n</rdf:Description>\n</rdf:RDF>\n", + /* RdfXmlT */ "<rdf:RDF>\n<rdf:Description>\n<j:value>-2172116928000</j:value>\n</rdf:Description>\n</rdf:RDF>\n", + /* RdfXmlR */ "<rdf:RDF>\n <rdf:Description>\n <j:value>-2172116928000</j:value>\n </rdf:Description>\n</rdf:RDF>\n" + ) + { + @Override + public void verify(Calendar o) { + assertType(Calendar.class, o); + } + } + }, + { /* 10 */ + new ComboInput2<Calendar[]>( + "CalendarLongSwap/dateArray", + Calendar[].class, + dateArray, + CalendarLongSwap.class, + /* Json */ "[-2172116928000]", + /* JsonT */ "[-2172116928000]", + /* JsonR */ "[\n\t-2172116928000\n]", + /* Xml */ "<array><number>-2172116928000</number></array>", + /* XmlT */ "<array><number>-2172116928000</number></array>", + /* XmlR */ "<array>\n\t<number>-2172116928000</number>\n</array>\n", + /* XmlNs */ "<array><number>-2172116928000</number></array>", + /* Html */ "<ul><li><number>-2172116928000</number></li></ul>", + /* HtmlT */ "<ul><li><number>-2172116928000</number></li></ul>", + /* HtmlR */ "<ul>\n\t<li><number>-2172116928000</number></li>\n</ul>\n", + /* Uon */ "@(-2172116928000)", + /* UonT */ "@(-2172116928000)", + /* UonR */ "@(\n\t-2172116928000\n)", + /* UrlEnc */ "0=-2172116928000", + /* UrlEncT */ "0=-2172116928000", + /* UrlEncR */ "0=-2172116928000", + /* MsgPack */ "91D3FFFFFE0643BDFA00", + /* MsgPackT */ "91D3FFFFFE0643BDFA00", + /* RdfXml */ "<rdf:RDF>\n<rdf:Seq>\n<rdf:li>-2172116928000</rdf:li>\n</rdf:Seq>\n</rdf:RDF>\n", + /* RdfXmlT */ "<rdf:RDF>\n<rdf:Seq>\n<rdf:li>-2172116928000</rdf:li>\n</rdf:Seq>\n</rdf:RDF>\n", + /* RdfXmlR */ "<rdf:RDF>\n <rdf:Seq>\n <rdf:li>-2172116928000</rdf:li>\n </rdf:Seq>\n</rdf:RDF>\n" + ) + { + @Override + public void verify(Calendar[] o) { + assertType(Calendar.class, o[0]); + } + } + }, + { /* 11 */ + new ComboInput2<ObjectMap>( + "CalendarLongSwap/dateMap", + getType(Map.class,String.class,Calendar.class), + dateMap, + CalendarLongSwap.class, + /* Json */ "{foo:-2172116928000}", + /* JsonT */ "{foo:-2172116928000}", + /* JsonR */ "{\n\tfoo: -2172116928000\n}", + /* Xml */ "<object><foo _type='number'>-2172116928000</foo></object>", + /* XmlT */ "<object><foo t='number'>-2172116928000</foo></object>", + /* XmlR */ "<object>\n\t<foo _type='number'>-2172116928000</foo>\n</object>\n", + /* XmlNs */ "<object><foo _type='number'>-2172116928000</foo></object>", + /* Html */ "<table><tr><td>foo</td><td><number>-2172116928000</number></td></tr></table>", + /* HtmlT */ "<table><tr><td>foo</td><td><number>-2172116928000</number></td></tr></table>", + /* HtmlR */ "<table>\n\t<tr>\n\t\t<td>foo</td>\n\t\t<td><number>-2172116928000</number></td>\n\t</tr>\n</table>\n", + /* Uon */ "(foo=-2172116928000)", + /* UonT */ "(foo=-2172116928000)", + /* UonR */ "(\n\tfoo=-2172116928000\n)", + /* UrlEnc */ "foo=-2172116928000", + /* UrlEncT */ "foo=-2172116928000", + /* UrlEncR */ "foo=-2172116928000", + /* MsgPack */ "81A3666F6FD3FFFFFE0643BDFA00", + /* MsgPackT */ "81A3666F6FD3FFFFFE0643BDFA00", + /* RdfXml */ "<rdf:RDF>\n<rdf:Description>\n<jp:foo>-2172116928000</jp:foo>\n</rdf:Description>\n</rdf:RDF>\n", + /* RdfXmlT */ "<rdf:RDF>\n<rdf:Description>\n<jp:foo>-2172116928000</jp:foo>\n</rdf:Description>\n</rdf:RDF>\n", + /* RdfXmlR */ "<rdf:RDF>\n <rdf:Description>\n <jp:foo>-2172116928000</jp:foo>\n </rdf:Description>\n</rdf:RDF>\n" + ) + { + @Override + public void verify(ObjectMap o) { + assertType(Calendar.class, o.get("foo")); + } + } + }, + { /* 12 */ + new ComboInput2<Calendar>( + "CalendarMapSwap/singleDate", + Calendar.class, + singleDate, + CalendarMapSwap.class, + /* Json */ "{time:-2172116928000,timeZone:'PST'}", + /* JsonT */ "{time:-2172116928000,timeZone:'PST'}", + /* JsonR */ "{\n\ttime: -2172116928000,\n\ttimeZone: 'PST'\n}", + /* Xml */ "<object><time _type='number'>-2172116928000</time><timeZone>PST</timeZone></object>", + /* XmlT */ "<object><time t='number'>-2172116928000</time><timeZone>PST</timeZone></object>", + /* XmlR */ "<object>\n\t<time _type='number'>-2172116928000</time>\n\t<timeZone>PST</timeZone>\n</object>\n", + /* XmlNs */ "<object><time _type='number'>-2172116928000</time><timeZone>PST</timeZone></object>", + /* Html */ "<table><tr><td>time</td><td><number>-2172116928000</number></td></tr><tr><td>timeZone</td><td>PST</td></tr></table>", + /* HtmlT */ "<table><tr><td>time</td><td><number>-2172116928000</number></td></tr><tr><td>timeZone</td><td>PST</td></tr></table>", + /* HtmlR */ "<table>\n\t<tr>\n\t\t<td>time</td>\n\t\t<td><number>-2172116928000</number></td>\n\t</tr>\n\t<tr>\n\t\t<td>timeZone</td>\n\t\t<td>PST</td>\n\t</tr>\n</table>\n", + /* Uon */ "(time=-2172116928000,timeZone=PST)", + /* UonT */ "(time=-2172116928000,timeZone=PST)", + /* UonR */ "(\n\ttime=-2172116928000,\n\ttimeZone=PST\n)", + /* UrlEnc */ "time=-2172116928000&timeZone=PST", + /* UrlEncT */ "time=-2172116928000&timeZone=PST", + /* UrlEncR */ "time=-2172116928000\n&timeZone=PST", + /* MsgPack */ "82A474696D65D3FFFFFE0643BDFA00A874696D655A6F6E65A3505354", + /* MsgPackT */ "82A474696D65D3FFFFFE0643BDFA00A874696D655A6F6E65A3505354", + /* RdfXml */ "<rdf:RDF>\n<rdf:Description>\n<jp:time>-2172116928000</jp:time>\n<jp:timeZone>PST</jp:timeZone>\n</rdf:Description>\n</rdf:RDF>\n", + /* RdfXmlT */ "<rdf:RDF>\n<rdf:Description>\n<jp:time>-2172116928000</jp:time>\n<jp:timeZone>PST</jp:timeZone>\n</rdf:Description>\n</rdf:RDF>\n", + /* RdfXmlR */ "<rdf:RDF>\n <rdf:Description>\n <jp:time>-2172116928000</jp:time>\n <jp:timeZone>PST</jp:timeZone>\n </rdf:Description>\n</rdf:RDF>\n" + ) + { + @Override + public void verify(Calendar o) { + assertType(Calendar.class, o); + } + } + }, + { /* 13 */ + new ComboInput2<Calendar[]>( + "CalendarMapSwap/dateArray", + Calendar[].class, + dateArray, + CalendarMapSwap.class, + /* Json */ "[{time:-2172116928000,timeZone:'PST'}]", + /* JsonT */ "[{time:-2172116928000,timeZone:'PST'}]", + /* JsonR */ "[\n\t{\n\t\ttime: -2172116928000,\n\t\ttimeZone: 'PST'\n\t}\n]", + /* Xml */ "<array><object><time _type='number'>-2172116928000</time><timeZone>PST</timeZone></object></array>", + /* XmlT */ "<array><object><time t='number'>-2172116928000</time><timeZone>PST</timeZone></object></array>", + /* XmlR */ "<array>\n\t<object>\n\t\t<time _type='number'>-2172116928000</time>\n\t\t<timeZone>PST</timeZone>\n\t</object>\n</array>\n", + /* XmlNs */ "<array><object><time _type='number'>-2172116928000</time><timeZone>PST</timeZone></object></array>", + /* Html */ "<ul><li><table><tr><td>time</td><td><number>-2172116928000</number></td></tr><tr><td>timeZone</td><td>PST</td></tr></table></li></ul>", + /* HtmlT */ "<ul><li><table><tr><td>time</td><td><number>-2172116928000</number></td></tr><tr><td>timeZone</td><td>PST</td></tr></table></li></ul>", + /* HtmlR */ "<ul>\n\t<li>\n\t\t<table>\n\t\t\t<tr>\n\t\t\t\t<td>time</td>\n\t\t\t\t<td><number>-2172116928000</number></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td>timeZone</td>\n\t\t\t\t<td>PST</td>\n\t\t\t</tr>\n\t\t</table>\n\t</li>\n</ul>\n", + /* Uon */ "@((time=-2172116928000,timeZone=PST))", + /* UonT */ "@((time=-2172116928000,timeZone=PST))", + /* UonR */ "@(\n\t(\n\t\ttime=-2172116928000,\n\t\ttimeZone=PST\n\t)\n)", + /* UrlEnc */ "0=(time=-2172116928000,timeZone=PST)", + /* UrlEncT */ "0=(time=-2172116928000,timeZone=PST)", + /* UrlEncR */ "0=(\n\ttime=-2172116928000,\n\ttimeZone=PST\n)", + /* MsgPack */ "9182A474696D65D3FFFFFE0643BDFA00A874696D655A6F6E65A3505354", + /* MsgPackT */ "9182A474696D65D3FFFFFE0643BDFA00A874696D655A6F6E65A3505354", + /* RdfXml */ "<rdf:RDF>\n<rdf:Seq>\n<rdf:li rdf:parseType='Resource'>\n<jp:time>-2172116928000</jp:time>\n<jp:timeZone>PST</jp:timeZone>\n</rdf:li>\n</rdf:Seq>\n</rdf:RDF>\n", + /* RdfXmlT */ "<rdf:RDF>\n<rdf:Seq>\n<rdf:li rdf:parseType='Resource'>\n<jp:time>-2172116928000</jp:time>\n<jp:timeZone>PST</jp:timeZone>\n</rdf:li>\n</rdf:Seq>\n</rdf:RDF>\n", + /* RdfXmlR */ "<rdf:RDF>\n <rdf:Seq>\n <rdf:li rdf:parseType='Resource'>\n <jp:time>-2172116928000</jp:time>\n <jp:timeZone>PST</jp:timeZone>\n </rdf:li>\n </rdf:Seq>\n</rdf:RDF>\n" + ) + { + @Override + public void verify(Calendar[] o) { + assertType(Calendar.class, o[0]); + } + } + }, + { /* 14 */ + new ComboInput2<ObjectMap>( + "CalendarMapSwap/dateMap", + getType(Map.class,String.class,Calendar.class), + dateMap, + CalendarMapSwap.class, + /* Json */ "{foo:{time:-2172116928000,timeZone:'PST'}}", + /* JsonT */ "{foo:{time:-2172116928000,timeZone:'PST'}}", + /* JsonR */ "{\n\tfoo: {\n\t\ttime: -2172116928000,\n\t\ttimeZone: 'PST'\n\t}\n}", + /* Xml */ "<object><foo _type='object'><time _type='number'>-2172116928000</time><timeZone>PST</timeZone></foo></object>", + /* XmlT */ "<object><foo t='object'><time t='number'>-2172116928000</time><timeZone>PST</timeZone></foo></object>", + /* XmlR */ "<object>\n\t<foo _type='object'>\n\t\t<time _type='number'>-2172116928000</time>\n\t\t<timeZone>PST</timeZone>\n\t</foo>\n</object>\n", + /* XmlNs */ "<object><foo _type='object'><time _type='number'>-2172116928000</time><timeZone>PST</timeZone></foo></object>", + /* Html */ "<table><tr><td>foo</td><td><table><tr><td>time</td><td><number>-2172116928000</number></td></tr><tr><td>timeZone</td><td>PST</td></tr></table></td></tr></table>", + /* HtmlT */ "<table><tr><td>foo</td><td><table><tr><td>time</td><td><number>-2172116928000</number></td></tr><tr><td>timeZone</td><td>PST</td></tr></table></td></tr></table>", + /* HtmlR */ "<table>\n\t<tr>\n\t\t<td>foo</td>\n\t\t<td>\n\t\t\t<table>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>time</td>\n\t\t\t\t\t<td><number>-2172116928000</number></td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>timeZone</td>\n\t\t\t\t\t<td>PST</td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t</td>\n\t</tr>\n</table>\n", + /* Uon */ "(foo=(time=-2172116928000,timeZone=PST))", + /* UonT */ "(foo=(time=-2172116928000,timeZone=PST))", + /* UonR */ "(\n\tfoo=(\n\t\ttime=-2172116928000,\n\t\ttimeZone=PST\n\t)\n)", + /* UrlEnc */ "foo=(time=-2172116928000,timeZone=PST)", + /* UrlEncT */ "foo=(time=-2172116928000,timeZone=PST)", + /* UrlEncR */ "foo=(\n\ttime=-2172116928000,\n\ttimeZone=PST\n)", + /* MsgPack */ "81A3666F6F82A474696D65D3FFFFFE0643BDFA00A874696D655A6F6E65A3505354", + /* MsgPackT */ "81A3666F6F82A474696D65D3FFFFFE0643BDFA00A874696D655A6F6E65A3505354", + /* RdfXml */ "<rdf:RDF>\n<rdf:Description>\n<jp:foo rdf:parseType='Resource'>\n<jp:time>-2172116928000</jp:time>\n<jp:timeZone>PST</jp:timeZone>\n</jp:foo>\n</rdf:Description>\n</rdf:RDF>\n", + /* RdfXmlT */ "<rdf:RDF>\n<rdf:Description>\n<jp:foo rdf:parseType='Resource'>\n<jp:time>-2172116928000</jp:time>\n<jp:timeZone>PST</jp:timeZone>\n</jp:foo>\n</rdf:Description>\n</rdf:RDF>\n", + /* RdfXmlR */ "<rdf:RDF>\n <rdf:Description>\n <jp:foo rdf:parseType='Resource'>\n <jp:time>-2172116928000</jp:time>\n <jp:timeZone>PST</jp:timeZone>\n </jp:foo>\n </rdf:Description>\n</rdf:RDF>\n" + ) + { + @Override + public void verify(ObjectMap o) { + assertType(Calendar.class, o.get("foo")); + } + } + }, + { /* 15 */ + new ComboInput2<Calendar>( + "CalendarSwap.DateMedium/singleDate", + Calendar.class, + singleDate, + CalendarSwap.DateMedium.class, + /* Json */ "'Mar 3, 1901'", + /* JsonT */ "'Mar 3, 1901'", + /* JsonR */ "'Mar 3, 1901'", + /* Xml */ "<string>Mar 3, 1901</string>", + /* XmlT */ "<string>Mar 3, 1901</string>", + /* XmlR */ "<string>Mar 3, 1901</string>\n", + /* XmlNs */ "<string>Mar 3, 1901</string>", + /* Html */ "<string>Mar 3, 1901</string>", + /* HtmlT */ "<string>Mar 3, 1901</string>", + /* HtmlR */ "<string>Mar 3, 1901</string>", + /* Uon */ "'Mar 3, 1901'", + /* UonT */ "'Mar 3, 1901'", + /* UonR */ "'Mar 3, 1901'", + /* UrlEnc */ "_value='Mar+3,+1901'", + /* UrlEncT */ "_value='Mar+3,+1901'", + /* UrlEncR */ "_value='Mar+3,+1901'", + /* MsgPack */ "AB4D617220332C2031393031", + /* MsgPackT */ "AB4D617220332C2031393031", + /* RdfXml */ "<rdf:RDF>\n<rdf:Description>\n<j:value>Mar 3, 1901</j:value>\n</rdf:Description>\n</rdf:RDF>\n", + /* RdfXmlT */ "<rdf:RDF>\n<rdf:Description>\n<j:value>Mar 3, 1901</j:value>\n</rdf:Description>\n</rdf:RDF>\n", + /* RdfXmlR */ "<rdf:RDF>\n <rdf:Description>\n <j:value>Mar 3, 1901</j:value>\n </rdf:Description>\n</rdf:RDF>\n" + ) + { + @Override + public void verify(Calendar o) { + assertType(Calendar.class, o); + } + } + }, + { /* 16 */ + new ComboInput2<Calendar[]>( + "CalendarSwap.DateMedium/dateArray", + Calendar[].class, + dateArray, + CalendarSwap.DateMedium.class, + /* Json */ "['Mar 3, 1901']", + /* JsonT */ "['Mar 3, 1901']", + /* JsonR */ "[\n\t'Mar 3, 1901'\n]", + /* Xml */ "<array><string>Mar 3, 1901</string></array>", + /* XmlT */ "<array><string>Mar 3, 1901</string></array>", + /* XmlR */ "<array>\n\t<string>Mar 3, 1901</string>\n</array>\n", + /* XmlNs */ "<array><string>Mar 3, 1901</string></array>", + /* Html */ "<ul><li>Mar 3, 1901</li></ul>", + /* HtmlT */ "<ul><li>Mar 3, 1901</li></ul>", + /* HtmlR */ "<ul>\n\t<li>Mar 3, 1901</li>\n</ul>\n", + /* Uon */ "@('Mar 3, 1901')", + /* UonT */ "@('Mar 3, 1901')", + /* UonR */ "@(\n\t'Mar 3, 1901'\n)", + /* UrlEnc */ "0='Mar+3,+1901'", + /* UrlEncT */ "0='Mar+3,+1901'", + /* UrlEncR */ "0='Mar+3,+1901'", + /* MsgPack */ "91AB4D617220332C2031393031", + /* MsgPackT */ "91AB4D617220332C2031393031", + /* RdfXml */ "<rdf:RDF>\n<rdf:Seq>\n<rdf:li>Mar 3, 1901</rdf:li>\n</rdf:Seq>\n</rdf:RDF>\n", + /* RdfXmlT */ "<rdf:RDF>\n<rdf:Seq>\n<rdf:li>Mar 3, 1901</rdf:li>\n</rdf:Seq>\n</rdf:RDF>\n", + /* RdfXmlR */ "<rdf:RDF>\n <rdf:Seq>\n <rdf:li>Mar 3, 1901</rdf:li>\n </rdf:Seq>\n</rdf:RDF>\n" + ) + { + @Override + public void verify(Calendar[] o) { + assertType(Calendar.class, o[0]); + } + } + }, + { /* 17 */ + new ComboInput2<ObjectMap>( + "CalendarSwap.DateMedium/dateMap", + getType(Map.class,String.class,Calendar.class), + dateMap, + CalendarSwap.DateMedium.class, + /* Json */ "{foo:'Mar 3, 1901'}", + /* JsonT */ "{foo:'Mar 3, 1901'}", + /* JsonR */ "{\n\tfoo: 'Mar 3, 1901'\n}", + /* Xml */ "<object><foo>Mar 3, 1901</foo></object>", + /* XmlT */ "<object><foo>Mar 3, 1901</foo></object>", + /* XmlR */ "<object>\n\t<foo>Mar 3, 1901</foo>\n</object>\n", + /* XmlNs */ "<object><foo>Mar 3, 1901</foo></object>", + /* Html */ "<table><tr><td>foo</td><td>Mar 3, 1901</td></tr></table>", + /* HtmlT */ "<table><tr><td>foo</td><td>Mar 3, 1901</td></tr></table>", + /* HtmlR */ "<table>\n\t<tr>\n\t\t<td>foo</td>\n\t\t<td>Mar 3, 1901</td>\n\t</tr>\n</table>\n", + /* Uon */ "(foo='Mar 3, 1901')", + /* UonT */ "(foo='Mar 3, 1901')", + /* UonR */ "(\n\tfoo='Mar 3, 1901'\n)", + /* UrlEnc */ "foo='Mar+3,+1901'", + /* UrlEncT */ "foo='Mar+3,+1901'", + /* UrlEncR */ "foo='Mar+3,+1901'", + /* MsgPack */ "81A3666F6FAB4D617220332C2031393031", + /* MsgPackT */ "81A3666F6FAB4D617220332C2031393031", + /* RdfXml */ "<rdf:RDF>\n<rdf:Description>\n<jp:foo>Mar 3, 1901</jp:foo>\n</rdf:Description>\n</rdf:RDF>\n", + /* RdfXmlT */ "<rdf:RDF>\n<rdf:Description>\n<jp:foo>Mar 3, 1901</jp:foo>\n</rdf:Description>\n</rdf:RDF>\n", + /* RdfXmlR */ "<rdf:RDF>\n <rdf:Description>\n <jp:foo>Mar 3, 1901</jp:foo>\n </rdf:Description>\n</rdf:RDF>\n" + ) + { + @Override + public void verify(ObjectMap o) { + assertType(Calendar.class, o.get("foo")); + } + } + }, + }); + } + + private final Class<?> swapClass; + + public CalendarSwapComboTest(ComboInput2<?> comboInput) { + super(comboInput); + this.swapClass = comboInput.swapClass; + } + + public static class ComboInput2<T> extends ComboInput<T> { + private final Class<?> swapClass; + + public ComboInput2( + String label, + Type type, + T in, + Class<?> swapClass, + String json, + String jsonT, + String jsonR, + String xml, + String xmlT, + String xmlR, + String xmlNs, + String html, + String htmlT, + String htmlR, + String uon, + String uonT, + String uonR, + String urlEncoding, + String urlEncodingT, + String urlEncodingR, + String msgPack, + String msgPackT, + String rdfXml, + String rdfXmlT, + String rdfXmlR + ) { + super(label, type, in, json, jsonT, jsonR, xml, xmlT, xmlR, xmlNs, html, htmlT, htmlR, uon, uonT, uonR, urlEncoding, urlEncodingT, urlEncodingR, msgPack, msgPackT, rdfXml, rdfXmlT, rdfXmlR); + this.swapClass = swapClass; + } + } + + @BeforeClass + public static void beforeClass() { + TestUtils.setTimeZone("PST"); + TestUtils.setLocale(Locale.US); + } + + @AfterClass + public static void afterClass() { + TestUtils.unsetTimeZone(); + TestUtils.unsetLocale(); + } + + @Override + protected Serializer applySettings(Serializer s) throws Exception { + return s.builder().pojoSwaps(swapClass).build(); + } + + @Override + protected Parser applySettings(Parser p) throws Exception { + return p.builder().pojoSwaps(swapClass).build(); + } +}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/75b0d8ee/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/transforms/CalendarSwapTest.java ---------------------------------------------------------------------- diff --git a/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/transforms/CalendarSwapTest.java b/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/transforms/CalendarSwapTest.java new file mode 100755 index 0000000..7ea6697 --- /dev/null +++ b/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/transforms/CalendarSwapTest.java @@ -0,0 +1,289 @@ +// *************************************************************************************************************************** +// * 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.net.*; +import java.util.*; + +import javax.xml.bind.*; + +import org.apache.juneau.*; +import org.apache.juneau.annotation.*; +import org.apache.juneau.html.*; +import org.apache.juneau.jena.*; +import org.apache.juneau.json.*; +import org.apache.juneau.parser.*; +import org.apache.juneau.serializer.*; +import org.apache.juneau.transform.*; +import org.apache.juneau.uon.*; +import org.apache.juneau.urlencoding.*; +import org.apache.juneau.xml.*; +import org.junit.*; + +@SuppressWarnings("javadoc") +public class CalendarSwapTest { + + static Calendar testDate = new GregorianCalendar(TimeZone.getTimeZone("PST")); + static { + testDate.setTimeInMillis(0); + testDate.set(1901, 2, 3, 10, 11, 12); + } + + @Before + public void beforeTest() { + TestUtils.setLocale(Locale.US); + } + + @After + public void afterTest() { + TestUtils.unsetLocale(); + } + + private RdfSerializer getRdfSerializer() { + return new RdfSerializerBuilder() + .sq() + .useWhitespace(false) + .property(RdfCommonContext.RDF_rdfxml_allowBadUris, true) + .property(RdfCommonContext.RDF_rdfxml_showDoctypeDeclaration, false) + .property(RdfCommonContext.RDF_rdfxml_showXmlDeclaration, false) + .build(); + } + + private String stripRdf(String s) { + return s.replaceFirst("<rdf:RDF[^>]+>\\s*", "").replaceAll("</rdf:RDF>$", "").trim().replaceAll("[\\r\\n]", ""); + } + + //==================================================================================================== + // testTimezone - Make sure timezone on calendar is preserved. + //==================================================================================================== + @Test + public void testTimezone() throws Exception { + PojoSwap<Calendar,String> f; + String s; + Calendar c; + BeanSession session = BeanContext.DEFAULT.createSession(); + + //-------------------- + // ISO8601DT + //-------------------- + f = new CalendarSwap.ISO8601DT(); + + s = "2001-01-31T12:34:56Z"; + c = DatatypeConverter.parseDateTime(s); + assertEquals(s, f.swap(session, c)); + + s = "2001-01-31T09:34:56-03:00"; + c = DatatypeConverter.parseDateTime(s); + assertEquals(s, f.swap(session, c)); + + s = "2001-01-31T06:34:56-06:00"; + c = DatatypeConverter.parseDateTime(s); + assertEquals(s, f.swap(session, c)); + + + //-------------------- + // ISO8601DTZ + //-------------------- + f = new CalendarSwap.ISO8601DTZ(); + + s = "2001-01-31T12:34:56Z"; + c = DatatypeConverter.parseDateTime(s); + assertEquals(s, f.swap(session, c)); + + s = "2001-01-31T09:34:56-03:00"; + c = DatatypeConverter.parseDateTime(s); + assertEquals("2001-01-31T12:34:56Z", f.swap(session, c)); + + s = "2001-01-31T06:34:56-06:00"; + c = DatatypeConverter.parseDateTime(s); + assertEquals("2001-01-31T12:34:56Z", f.swap(session, c)); + + //-------------------- + // RFC2822DTZ + //-------------------- + f = new CalendarSwap.RFC2822DT(); + + s = "2001-01-31T12:34:56Z"; + c = DatatypeConverter.parseDateTime(s); + assertEquals("Wed, 31 Jan 2001 12:34:56 +0000", f.swap(session, c)); + + s = "2001-01-31T09:34:56-03:00"; + c = DatatypeConverter.parseDateTime(s); + assertEquals("Wed, 31 Jan 2001 09:34:56 -0300", f.swap(session, c)); + + s = "2001-01-31T06:34:56-06:00"; + c = DatatypeConverter.parseDateTime(s); + assertEquals("Wed, 31 Jan 2001 06:34:56 -0600", f.swap(session, c)); + + //-------------------- + // RFC2822DTZ + //-------------------- + f = new CalendarSwap.RFC2822DTZ(); + + s = "2001-01-31T12:34:56Z"; + c = DatatypeConverter.parseDateTime(s); + assertEquals("Wed, 31 Jan 2001 12:34:56 GMT", f.swap(session, c)); + + s = "2001-01-31T09:34:56-03:00"; + c = DatatypeConverter.parseDateTime(s); + assertEquals("Wed, 31 Jan 2001 12:34:56 GMT", f.swap(session, c)); + + s = "2001-01-31T06:34:56-06:00"; + c = DatatypeConverter.parseDateTime(s); + assertEquals("Wed, 31 Jan 2001 12:34:56 GMT", f.swap(session, c)); + } + + //==================================================================================================== + // Test 7a - BeanProperty.filter, JSON + //==================================================================================================== + @Test + public void testBeanProperyFilterJson() throws Exception { + WriterSerializer s = JsonSerializer.DEFAULT_LAX; + ReaderParser p = JsonParser.DEFAULT; + + Calendar c = testDate; + A t = new A(c); + String json = s.serialize(t); + assertEquals("{d1:'1901-03-03T18:11:12Z',d2:'Sun, 03 Mar 1901 18:11:12 GMT',d3:-2172116928000}", json); + t = p.parse(json, A.class); + assertEquals(t.d1.getTime().getTime(), c.getTime().getTime()); + assertEquals(t.getD2().getTime().getTime(), c.getTime().getTime()); + assertEquals(t.getD3().getTime().getTime(), c.getTime().getTime()); + } + + //==================================================================================================== + // Test 7b - BeanProperty.filter, XML + //==================================================================================================== + @Test + public void testBeanProperyFilterXml() throws Exception { + WriterSerializer s = XmlSerializer.DEFAULT_SQ; + ReaderParser p = XmlParser.DEFAULT; + + Calendar c = testDate; + A t = new A(c); + String xml = s.serialize(t); + assertEquals("<object><d1>1901-03-03T18:11:12Z</d1><d2>Sun, 03 Mar 1901 18:11:12 GMT</d2><d3>-2172116928000</d3></object>", xml); + t = p.parse(xml, A.class); + assertEquals(t.d1.getTime().getTime(), c.getTime().getTime()); + assertEquals(t.getD2().getTime().getTime(), c.getTime().getTime()); + assertEquals(t.getD3().getTime().getTime(), c.getTime().getTime()); + } + + //==================================================================================================== + // Test 7c - BeanProperty.filter, HTML + //==================================================================================================== + @Test + public void testBeanProperyFilterHtml() throws Exception { + WriterSerializer s = new HtmlSerializerBuilder().sq().addKeyValueTableHeaders(true).build(); + ReaderParser p = HtmlParser.DEFAULT; + + Calendar c = testDate; + A t = new A(c); + String html = s.serialize(t); + assertEquals("<table><tr><th>key</th><th>value</th></tr><tr><td>d1</td><td>1901-03-03T18:11:12Z</td></tr><tr><td>d2</td><td>Sun, 03 Mar 1901 18:11:12 GMT</td></tr><tr><td>d3</td><td>-2172116928000</td></tr></table>", html); + t = p.parse(html, A.class); + assertEquals(t.d1.getTime().getTime(), c.getTime().getTime()); + assertEquals(t.getD2().getTime().getTime(), c.getTime().getTime()); + assertEquals(t.getD3().getTime().getTime(), c.getTime().getTime()); + } + + //==================================================================================================== + // Test 7d - BeanProperty.filter, UON + //==================================================================================================== + @Test + public void testBeanProperyFilterUon() throws Exception { + WriterSerializer s = UonSerializer.DEFAULT_ENCODING; + ReaderParser p = UonParser.DEFAULT; + ReaderParser pe = UonParser.DEFAULT_DECODING; + + Calendar c = testDate; + A t = new A(c); + String url = s.serialize(t); + assertEquals("(d1=1901-03-03T18:11:12Z,d2='Sun,+03+Mar+1901+18:11:12+GMT',d3=-2172116928000)", url); + t = pe.parse(url, A.class); + assertEquals(t.d1.getTime().getTime(), c.getTime().getTime()); + assertEquals(t.getD2().getTime().getTime(), c.getTime().getTime()); + assertEquals(t.getD3().getTime().getTime(), c.getTime().getTime()); + url = URLDecoder.decode(url, "UTF-8"); + t = p.parse(url, A.class); + assertEquals(t.d1.getTime().getTime(), c.getTime().getTime()); + assertEquals(t.getD2().getTime().getTime(), c.getTime().getTime()); + assertEquals(t.getD3().getTime().getTime(), c.getTime().getTime()); + } + + //==================================================================================================== + // Test 7d - BeanProperty.filter, URL-ENCODING + //==================================================================================================== + @Test + public void testBeanProperyFilterUrlEncoding() throws Exception { + WriterSerializer s = UrlEncodingSerializer.DEFAULT; + ReaderParser p = UrlEncodingParser.DEFAULT; + + Calendar c = testDate; + A t = new A(c); + String url = s.serialize(t); + assertEquals("d1=1901-03-03T18:11:12Z&d2='Sun,+03+Mar+1901+18:11:12+GMT'&d3=-2172116928000", url); + t = p.parse(url, A.class); + assertEquals(t.d1.getTime().getTime(), c.getTime().getTime()); + assertEquals(t.getD2().getTime().getTime(), c.getTime().getTime()); + assertEquals(t.getD3().getTime().getTime(), c.getTime().getTime()); + url = URLDecoder.decode(url, "UTF-8"); + t = p.parse(url, A.class); + assertEquals(t.d1.getTime().getTime(), c.getTime().getTime()); + assertEquals(t.getD2().getTime().getTime(), c.getTime().getTime()); + assertEquals(t.getD3().getTime().getTime(), c.getTime().getTime()); + } + + //==================================================================================================== + // Test 7f - BeanProperty.filter, RDF/XML + //==================================================================================================== + @Test + public void testBeanProperyFilterRdfXmlWithNs() throws Exception { + WriterSerializer s = getRdfSerializer(); + + Calendar c = testDate; + A t = new A(c); + String rdf = stripRdf(s.serialize(t)); + assertEquals("<rdf:Description><jp:d1>1901-03-03T18:11:12Z</jp:d1><jp:d2>Sun, 03 Mar 1901 18:11:12 GMT</jp:d2><jp:d3>-2172116928000</jp:d3></rdf:Description>", rdf); + } + + @Bean(sort=true) + public static class A { + @BeanProperty(swap=CalendarSwap.ISO8601DTZ.class) + public Calendar d1; + private Calendar d2, d3; + public A(Calendar date) { + d1 = d2 = d3 = date; + } + + public A() {} + + @BeanProperty(swap=CalendarSwap.RFC2822DTZ.class) + public Calendar getD2() { + return d2; + } + public void setD2(Calendar d2) { + this.d2 = d2; + } + + public Calendar getD3() { + return d3; + } + @BeanProperty(swap=CalendarLongSwap.class) + public void setD3(Calendar d3) { + this.d3 = d3; + } + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/75b0d8ee/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/transforms/DateSwapComboTest.java ---------------------------------------------------------------------- diff --git a/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/transforms/DateSwapComboTest.java b/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/transforms/DateSwapComboTest.java new file mode 100644 index 0000000..c611b0e --- /dev/null +++ b/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/transforms/DateSwapComboTest.java @@ -0,0 +1,740 @@ +// *************************************************************************************************************************** +// * 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.TestUtils.*; + +import java.lang.reflect.*; +import java.util.*; + +import org.apache.juneau.*; +import org.apache.juneau.parser.*; +import org.apache.juneau.serializer.*; +import org.junit.*; +import org.junit.runner.*; +import org.junit.runners.*; + +/** + * Exhaustive serialization tests for the DateSwap class. + */ +@RunWith(Parameterized.class) +@SuppressWarnings({"javadoc"}) +public class DateSwapComboTest extends ComboRoundTripTest { + + private static Date singleDate = CalendarSwapTest.testDate.getTime(); + + private static Date[] dateArray = new Date[]{singleDate}; + + private static ObjectMap dateMap = new ObjectMap().append("foo", singleDate); + + + @Parameterized.Parameters + public static Collection<Object[]> getParameters() { + return Arrays.asList(new Object[][] { + { /* 0 */ + new ComboInput2<Date>( + "DateSwap.ToString/singleDate", + Date.class, + singleDate, + DateSwap.ToString.class, + /* Json */ "'Sun Mar 03 10:11:12 PST 1901'", + /* JsonT */ "'Sun Mar 03 10:11:12 PST 1901'", + /* JsonR */ "'Sun Mar 03 10:11:12 PST 1901'", + /* Xml */ "<string>Sun Mar 03 10:11:12 PST 1901</string>", + /* XmlT */ "<string>Sun Mar 03 10:11:12 PST 1901</string>", + /* XmlR */ "<string>Sun Mar 03 10:11:12 PST 1901</string>\n", + /* XmlNs */ "<string>Sun Mar 03 10:11:12 PST 1901</string>", + /* Html */ "<string>Sun Mar 03 10:11:12 PST 1901</string>", + /* HtmlT */ "<string>Sun Mar 03 10:11:12 PST 1901</string>", + /* HtmlR */ "<string>Sun Mar 03 10:11:12 PST 1901</string>", + /* Uon */ "'Sun Mar 03 10:11:12 PST 1901'", + /* UonT */ "'Sun Mar 03 10:11:12 PST 1901'", + /* UonR */ "'Sun Mar 03 10:11:12 PST 1901'", + /* UrlEnc */ "_value='Sun+Mar+03+10:11:12+PST+1901'", + /* UrlEncT */ "_value='Sun+Mar+03+10:11:12+PST+1901'", + /* UrlEncR */ "_value='Sun+Mar+03+10:11:12+PST+1901'", + /* MsgPack */ "BC53756E204D61722030332031303A31313A3132205053542031393031", + /* MsgPackT */ "BC53756E204D61722030332031303A31313A3132205053542031393031", + /* RdfXml */ "<rdf:RDF>\n<rdf:Description>\n<j:value>Sun Mar 03 10:11:12 PST 1901</j:value>\n</rdf:Description>\n</rdf:RDF>\n", + /* RdfXmlT */ "<rdf:RDF>\n<rdf:Description>\n<j:value>Sun Mar 03 10:11:12 PST 1901</j:value>\n</rdf:Description>\n</rdf:RDF>\n", + /* RdfXmlR */ "<rdf:RDF>\n <rdf:Description>\n <j:value>Sun Mar 03 10:11:12 PST 1901</j:value>\n </rdf:Description>\n</rdf:RDF>\n" + ) + { + @Override + public void verify(Date o) { + assertType(Date.class, o); + } + } + }, + { /* 1 */ + new ComboInput2<Date[]>( + "DateSwap.ToString/dateArray", + Date[].class, + dateArray, + DateSwap.ToString.class, + /* Json */ "['Sun Mar 03 10:11:12 PST 1901']", + /* JsonT */ "['Sun Mar 03 10:11:12 PST 1901']", + /* JsonR */ "[\n\t'Sun Mar 03 10:11:12 PST 1901'\n]", + /* Xml */ "<array><string>Sun Mar 03 10:11:12 PST 1901</string></array>", + /* XmlT */ "<array><string>Sun Mar 03 10:11:12 PST 1901</string></array>", + /* XmlR */ "<array>\n\t<string>Sun Mar 03 10:11:12 PST 1901</string>\n</array>\n", + /* XmlNs */ "<array><string>Sun Mar 03 10:11:12 PST 1901</string></array>", + /* Html */ "<ul><li>Sun Mar 03 10:11:12 PST 1901</li></ul>", + /* HtmlT */ "<ul><li>Sun Mar 03 10:11:12 PST 1901</li></ul>", + /* HtmlR */ "<ul>\n\t<li>Sun Mar 03 10:11:12 PST 1901</li>\n</ul>\n", + /* Uon */ "@('Sun Mar 03 10:11:12 PST 1901')", + /* UonT */ "@('Sun Mar 03 10:11:12 PST 1901')", + /* UonR */ "@(\n\t'Sun Mar 03 10:11:12 PST 1901'\n)", + /* UrlEnc */ "0='Sun+Mar+03+10:11:12+PST+1901'", + /* UrlEncT */ "0='Sun+Mar+03+10:11:12+PST+1901'", + /* UrlEncR */ "0='Sun+Mar+03+10:11:12+PST+1901'", + /* MsgPack */ "91BC53756E204D61722030332031303A31313A3132205053542031393031", + /* MsgPackT */ "91BC53756E204D61722030332031303A31313A3132205053542031393031", + /* RdfXml */ "<rdf:RDF>\n<rdf:Seq>\n<rdf:li>Sun Mar 03 10:11:12 PST 1901</rdf:li>\n</rdf:Seq>\n</rdf:RDF>\n", + /* RdfXmlT */ "<rdf:RDF>\n<rdf:Seq>\n<rdf:li>Sun Mar 03 10:11:12 PST 1901</rdf:li>\n</rdf:Seq>\n</rdf:RDF>\n", + /* RdfXmlR */ "<rdf:RDF>\n <rdf:Seq>\n <rdf:li>Sun Mar 03 10:11:12 PST 1901</rdf:li>\n </rdf:Seq>\n</rdf:RDF>\n" + ) + { + @Override + public void verify(Date[] o) { + assertType(Date.class, o[0]); + } + } + }, + { /* 2 */ + new ComboInput2<ObjectMap>( + "DateSwap.ToString", + getType(Map.class,String.class,Date.class), + dateMap, + DateSwap.ToString.class, + /* Json */ "{foo:'Sun Mar 03 10:11:12 PST 1901'}", + /* JsonT */ "{foo:'Sun Mar 03 10:11:12 PST 1901'}", + /* JsonR */ "{\n\tfoo: 'Sun Mar 03 10:11:12 PST 1901'\n}", + /* Xml */ "<object><foo>Sun Mar 03 10:11:12 PST 1901</foo></object>", + /* XmlT */ "<object><foo>Sun Mar 03 10:11:12 PST 1901</foo></object>", + /* XmlR */ "<object>\n\t<foo>Sun Mar 03 10:11:12 PST 1901</foo>\n</object>\n", + /* XmlNs */ "<object><foo>Sun Mar 03 10:11:12 PST 1901</foo></object>", + /* Html */ "<table><tr><td>foo</td><td>Sun Mar 03 10:11:12 PST 1901</td></tr></table>", + /* HtmlT */ "<table><tr><td>foo</td><td>Sun Mar 03 10:11:12 PST 1901</td></tr></table>", + /* HtmlR */ "<table>\n\t<tr>\n\t\t<td>foo</td>\n\t\t<td>Sun Mar 03 10:11:12 PST 1901</td>\n\t</tr>\n</table>\n", + /* Uon */ "(foo='Sun Mar 03 10:11:12 PST 1901')", + /* UonT */ "(foo='Sun Mar 03 10:11:12 PST 1901')", + /* UonR */ "(\n\tfoo='Sun Mar 03 10:11:12 PST 1901'\n)", + /* UrlEnc */ "foo='Sun+Mar+03+10:11:12+PST+1901'", + /* UrlEncT */ "foo='Sun+Mar+03+10:11:12+PST+1901'", + /* UrlEncR */ "foo='Sun+Mar+03+10:11:12+PST+1901'", + /* MsgPack */ "81A3666F6FBC53756E204D61722030332031303A31313A3132205053542031393031", + /* MsgPackT */ "81A3666F6FBC53756E204D61722030332031303A31313A3132205053542031393031", + /* RdfXml */ "<rdf:RDF>\n<rdf:Description>\n<jp:foo>Sun Mar 03 10:11:12 PST 1901</jp:foo>\n</rdf:Description>\n</rdf:RDF>\n", + /* RdfXmlT */ "<rdf:RDF>\n<rdf:Description>\n<jp:foo>Sun Mar 03 10:11:12 PST 1901</jp:foo>\n</rdf:Description>\n</rdf:RDF>\n", + /* RdfXmlR */ "<rdf:RDF>\n <rdf:Description>\n <jp:foo>Sun Mar 03 10:11:12 PST 1901</jp:foo>\n </rdf:Description>\n</rdf:RDF>\n" + ) + { + @Override + public void verify(ObjectMap o) { + assertType(Date.class, o.get("foo")); + } + } + }, + { /* 3 */ + new ComboInput2<Date>( + "DateSwap.ISO8601DT/singleDate", + Date.class, + singleDate, + DateSwap.ISO8601DT.class, + /* Json */ "'1901-03-03T10:11:12-08:00'", + /* JsonT */ "'1901-03-03T10:11:12-08:00'", + /* JsonR */ "'1901-03-03T10:11:12-08:00'", + /* Xml */ "<string>1901-03-03T10:11:12-08:00</string>", + /* XmlT */ "<string>1901-03-03T10:11:12-08:00</string>", + /* XmlR */ "<string>1901-03-03T10:11:12-08:00</string>\n", + /* XmlNs */ "<string>1901-03-03T10:11:12-08:00</string>", + /* Html */ "<string>1901-03-03T10:11:12-08:00</string>", + /* HtmlT */ "<string>1901-03-03T10:11:12-08:00</string>", + /* HtmlR */ "<string>1901-03-03T10:11:12-08:00</string>", + /* Uon */ "1901-03-03T10:11:12-08:00", + /* UonT */ "1901-03-03T10:11:12-08:00", + /* UonR */ "1901-03-03T10:11:12-08:00", + /* UrlEnc */ "_value=1901-03-03T10:11:12-08:00", + /* UrlEncT */ "_value=1901-03-03T10:11:12-08:00", + /* UrlEncR */ "_value=1901-03-03T10:11:12-08:00", + /* MsgPack */ "B9313930312D30332D30335431303A31313A31322D30383A3030", + /* MsgPackT */ "B9313930312D30332D30335431303A31313A31322D30383A3030", + /* RdfXml */ "<rdf:RDF>\n<rdf:Description>\n<j:value>1901-03-03T10:11:12-08:00</j:value>\n</rdf:Description>\n</rdf:RDF>\n", + /* RdfXmlT */ "<rdf:RDF>\n<rdf:Description>\n<j:value>1901-03-03T10:11:12-08:00</j:value>\n</rdf:Description>\n</rdf:RDF>\n", + /* RdfXmlR */ "<rdf:RDF>\n <rdf:Description>\n <j:value>1901-03-03T10:11:12-08:00</j:value>\n </rdf:Description>\n</rdf:RDF>\n" + ) + { + @Override + public void verify(Date o) { + assertType(Date.class, o); + } + } + }, + { /* 4 */ + new ComboInput2<Date[]>( + "DateSwap.ISO8601DT/dateArray", + Date[].class, + dateArray, + DateSwap.ISO8601DT.class, + /* Json */ "['1901-03-03T10:11:12-08:00']", + /* JsonT */ "['1901-03-03T10:11:12-08:00']", + /* JsonR */ "[\n\t'1901-03-03T10:11:12-08:00'\n]", + /* Xml */ "<array><string>1901-03-03T10:11:12-08:00</string></array>", + /* XmlT */ "<array><string>1901-03-03T10:11:12-08:00</string></array>", + /* XmlR */ "<array>\n\t<string>1901-03-03T10:11:12-08:00</string>\n</array>\n", + /* XmlNs */ "<array><string>1901-03-03T10:11:12-08:00</string></array>", + /* Html */ "<ul><li>1901-03-03T10:11:12-08:00</li></ul>", + /* HtmlT */ "<ul><li>1901-03-03T10:11:12-08:00</li></ul>", + /* HtmlR */ "<ul>\n\t<li>1901-03-03T10:11:12-08:00</li>\n</ul>\n", + /* Uon */ "@(1901-03-03T10:11:12-08:00)", + /* UonT */ "@(1901-03-03T10:11:12-08:00)", + /* UonR */ "@(\n\t1901-03-03T10:11:12-08:00\n)", + /* UrlEnc */ "0=1901-03-03T10:11:12-08:00", + /* UrlEncT */ "0=1901-03-03T10:11:12-08:00", + /* UrlEncR */ "0=1901-03-03T10:11:12-08:00", + /* MsgPack */ "91B9313930312D30332D30335431303A31313A31322D30383A3030", + /* MsgPackT */ "91B9313930312D30332D30335431303A31313A31322D30383A3030", + /* RdfXml */ "<rdf:RDF>\n<rdf:Seq>\n<rdf:li>1901-03-03T10:11:12-08:00</rdf:li>\n</rdf:Seq>\n</rdf:RDF>\n", + /* RdfXmlT */ "<rdf:RDF>\n<rdf:Seq>\n<rdf:li>1901-03-03T10:11:12-08:00</rdf:li>\n</rdf:Seq>\n</rdf:RDF>\n", + /* RdfXmlR */ "<rdf:RDF>\n <rdf:Seq>\n <rdf:li>1901-03-03T10:11:12-08:00</rdf:li>\n </rdf:Seq>\n</rdf:RDF>\n" + ) + { + @Override + public void verify(Date[] o) { + assertType(Date.class, o[0]); + } + } + }, + { /* 5 */ + new ComboInput2<ObjectMap>( + "DateSwap.ISO8601DT/dateMap", + getType(Map.class,String.class,Date.class), + dateMap, + DateSwap.ISO8601DT.class, + /* Json */ "{foo:'1901-03-03T10:11:12-08:00'}", + /* JsonT */ "{foo:'1901-03-03T10:11:12-08:00'}", + /* JsonR */ "{\n\tfoo: '1901-03-03T10:11:12-08:00'\n}", + /* Xml */ "<object><foo>1901-03-03T10:11:12-08:00</foo></object>", + /* XmlT */ "<object><foo>1901-03-03T10:11:12-08:00</foo></object>", + /* XmlR */ "<object>\n\t<foo>1901-03-03T10:11:12-08:00</foo>\n</object>\n", + /* XmlNs */ "<object><foo>1901-03-03T10:11:12-08:00</foo></object>", + /* Html */ "<table><tr><td>foo</td><td>1901-03-03T10:11:12-08:00</td></tr></table>", + /* HtmlT */ "<table><tr><td>foo</td><td>1901-03-03T10:11:12-08:00</td></tr></table>", + /* HtmlR */ "<table>\n\t<tr>\n\t\t<td>foo</td>\n\t\t<td>1901-03-03T10:11:12-08:00</td>\n\t</tr>\n</table>\n", + /* Uon */ "(foo=1901-03-03T10:11:12-08:00)", + /* UonT */ "(foo=1901-03-03T10:11:12-08:00)", + /* UonR */ "(\n\tfoo=1901-03-03T10:11:12-08:00\n)", + /* UrlEnc */ "foo=1901-03-03T10:11:12-08:00", + /* UrlEncT */ "foo=1901-03-03T10:11:12-08:00", + /* UrlEncR */ "foo=1901-03-03T10:11:12-08:00", + /* MsgPack */ "81A3666F6FB9313930312D30332D30335431303A31313A31322D30383A3030", + /* MsgPackT */ "81A3666F6FB9313930312D30332D30335431303A31313A31322D30383A3030", + /* RdfXml */ "<rdf:RDF>\n<rdf:Description>\n<jp:foo>1901-03-03T10:11:12-08:00</jp:foo>\n</rdf:Description>\n</rdf:RDF>\n", + /* RdfXmlT */ "<rdf:RDF>\n<rdf:Description>\n<jp:foo>1901-03-03T10:11:12-08:00</jp:foo>\n</rdf:Description>\n</rdf:RDF>\n", + /* RdfXmlR */ "<rdf:RDF>\n <rdf:Description>\n <jp:foo>1901-03-03T10:11:12-08:00</jp:foo>\n </rdf:Description>\n</rdf:RDF>\n" + ) + { + @Override + public void verify(ObjectMap o) { + assertType(Date.class, o.get("foo")); + } + } + }, + { /* 6 */ + new ComboInput2<Date>( + "DateSwap.RFC2822DTZ/singleDate", + Date.class, + singleDate, + DateSwap.RFC2822DTZ.class, + /* Json */ "'Sun, 03 Mar 1901 18:11:12 GMT'", + /* JsonT */ "'Sun, 03 Mar 1901 18:11:12 GMT'", + /* JsonR */ "'Sun, 03 Mar 1901 18:11:12 GMT'", + /* Xml */ "<string>Sun, 03 Mar 1901 18:11:12 GMT</string>", + /* XmlT */ "<string>Sun, 03 Mar 1901 18:11:12 GMT</string>", + /* XmlR */ "<string>Sun, 03 Mar 1901 18:11:12 GMT</string>\n", + /* XmlNs */ "<string>Sun, 03 Mar 1901 18:11:12 GMT</string>", + /* Html */ "<string>Sun, 03 Mar 1901 18:11:12 GMT</string>", + /* HtmlT */ "<string>Sun, 03 Mar 1901 18:11:12 GMT</string>", + /* HtmlR */ "<string>Sun, 03 Mar 1901 18:11:12 GMT</string>", + /* Uon */ "'Sun, 03 Mar 1901 18:11:12 GMT'", + /* UonT */ "'Sun, 03 Mar 1901 18:11:12 GMT'", + /* UonR */ "'Sun, 03 Mar 1901 18:11:12 GMT'", + /* UrlEnc */ "_value='Sun,+03+Mar+1901+18:11:12+GMT'", + /* UrlEncT */ "_value='Sun,+03+Mar+1901+18:11:12+GMT'", + /* UrlEncR */ "_value='Sun,+03+Mar+1901+18:11:12+GMT'", + /* MsgPack */ "BD53756E2C203033204D617220313930312031383A31313A313220474D54", + /* MsgPackT */ "BD53756E2C203033204D617220313930312031383A31313A313220474D54", + /* RdfXml */ "<rdf:RDF>\n<rdf:Description>\n<j:value>Sun, 03 Mar 1901 18:11:12 GMT</j:value>\n</rdf:Description>\n</rdf:RDF>\n", + /* RdfXmlT */ "<rdf:RDF>\n<rdf:Description>\n<j:value>Sun, 03 Mar 1901 18:11:12 GMT</j:value>\n</rdf:Description>\n</rdf:RDF>\n", + /* RdfXmlR */ "<rdf:RDF>\n <rdf:Description>\n <j:value>Sun, 03 Mar 1901 18:11:12 GMT</j:value>\n </rdf:Description>\n</rdf:RDF>\n" + ) + { + @Override + public void verify(Date o) { + assertType(Date.class, o); + } + } + }, + { /* 7 */ + new ComboInput2<Date[]>( + "DateSwap.RFC2822DTZ/dateArray", + Date[].class, + dateArray, + DateSwap.RFC2822DTZ.class, + /* Json */ "['Sun, 03 Mar 1901 18:11:12 GMT']", + /* JsonT */ "['Sun, 03 Mar 1901 18:11:12 GMT']", + /* JsonR */ "[\n\t'Sun, 03 Mar 1901 18:11:12 GMT'\n]", + /* Xml */ "<array><string>Sun, 03 Mar 1901 18:11:12 GMT</string></array>", + /* XmlT */ "<array><string>Sun, 03 Mar 1901 18:11:12 GMT</string></array>", + /* XmlR */ "<array>\n\t<string>Sun, 03 Mar 1901 18:11:12 GMT</string>\n</array>\n", + /* XmlNs */ "<array><string>Sun, 03 Mar 1901 18:11:12 GMT</string></array>", + /* Html */ "<ul><li>Sun, 03 Mar 1901 18:11:12 GMT</li></ul>", + /* HtmlT */ "<ul><li>Sun, 03 Mar 1901 18:11:12 GMT</li></ul>", + /* HtmlR */ "<ul>\n\t<li>Sun, 03 Mar 1901 18:11:12 GMT</li>\n</ul>\n", + /* Uon */ "@('Sun, 03 Mar 1901 18:11:12 GMT')", + /* UonT */ "@('Sun, 03 Mar 1901 18:11:12 GMT')", + /* UonR */ "@(\n\t'Sun, 03 Mar 1901 18:11:12 GMT'\n)", + /* UrlEnc */ "0='Sun,+03+Mar+1901+18:11:12+GMT'", + /* UrlEncT */ "0='Sun,+03+Mar+1901+18:11:12+GMT'", + /* UrlEncR */ "0='Sun,+03+Mar+1901+18:11:12+GMT'", + /* MsgPack */ "91BD53756E2C203033204D617220313930312031383A31313A313220474D54", + /* MsgPackT */ "91BD53756E2C203033204D617220313930312031383A31313A313220474D54", + /* RdfXml */ "<rdf:RDF>\n<rdf:Seq>\n<rdf:li>Sun, 03 Mar 1901 18:11:12 GMT</rdf:li>\n</rdf:Seq>\n</rdf:RDF>\n", + /* RdfXmlT */ "<rdf:RDF>\n<rdf:Seq>\n<rdf:li>Sun, 03 Mar 1901 18:11:12 GMT</rdf:li>\n</rdf:Seq>\n</rdf:RDF>\n", + /* RdfXmlR */ "<rdf:RDF>\n <rdf:Seq>\n <rdf:li>Sun, 03 Mar 1901 18:11:12 GMT</rdf:li>\n </rdf:Seq>\n</rdf:RDF>\n" + ) + { + @Override + public void verify(Date[] o) { + assertType(Date.class, o[0]); + } + } + }, + { /* 8 */ + new ComboInput2<ObjectMap>( + "DateSwap.RFC2822DTZ/dateMap", + getType(Map.class,String.class,Date.class), + dateMap, + DateSwap.RFC2822DTZ.class, + /* Json */ "{foo:'Sun, 03 Mar 1901 18:11:12 GMT'}", + /* JsonT */ "{foo:'Sun, 03 Mar 1901 18:11:12 GMT'}", + /* JsonR */ "{\n\tfoo: 'Sun, 03 Mar 1901 18:11:12 GMT'\n}", + /* Xml */ "<object><foo>Sun, 03 Mar 1901 18:11:12 GMT</foo></object>", + /* XmlT */ "<object><foo>Sun, 03 Mar 1901 18:11:12 GMT</foo></object>", + /* XmlR */ "<object>\n\t<foo>Sun, 03 Mar 1901 18:11:12 GMT</foo>\n</object>\n", + /* XmlNs */ "<object><foo>Sun, 03 Mar 1901 18:11:12 GMT</foo></object>", + /* Html */ "<table><tr><td>foo</td><td>Sun, 03 Mar 1901 18:11:12 GMT</td></tr></table>", + /* HtmlT */ "<table><tr><td>foo</td><td>Sun, 03 Mar 1901 18:11:12 GMT</td></tr></table>", + /* HtmlR */ "<table>\n\t<tr>\n\t\t<td>foo</td>\n\t\t<td>Sun, 03 Mar 1901 18:11:12 GMT</td>\n\t</tr>\n</table>\n", + /* Uon */ "(foo='Sun, 03 Mar 1901 18:11:12 GMT')", + /* UonT */ "(foo='Sun, 03 Mar 1901 18:11:12 GMT')", + /* UonR */ "(\n\tfoo='Sun, 03 Mar 1901 18:11:12 GMT'\n)", + /* UrlEnc */ "foo='Sun,+03+Mar+1901+18:11:12+GMT'", + /* UrlEncT */ "foo='Sun,+03+Mar+1901+18:11:12+GMT'", + /* UrlEncR */ "foo='Sun,+03+Mar+1901+18:11:12+GMT'", + /* MsgPack */ "81A3666F6FBD53756E2C203033204D617220313930312031383A31313A313220474D54", + /* MsgPackT */ "81A3666F6FBD53756E2C203033204D617220313930312031383A31313A313220474D54", + /* RdfXml */ "<rdf:RDF>\n<rdf:Description>\n<jp:foo>Sun, 03 Mar 1901 18:11:12 GMT</jp:foo>\n</rdf:Description>\n</rdf:RDF>\n", + /* RdfXmlT */ "<rdf:RDF>\n<rdf:Description>\n<jp:foo>Sun, 03 Mar 1901 18:11:12 GMT</jp:foo>\n</rdf:Description>\n</rdf:RDF>\n", + /* RdfXmlR */ "<rdf:RDF>\n <rdf:Description>\n <jp:foo>Sun, 03 Mar 1901 18:11:12 GMT</jp:foo>\n </rdf:Description>\n</rdf:RDF>\n" + ) + { + @Override + public void verify(ObjectMap o) { + assertType(Date.class, o.get("foo")); + } + } + }, + { /* 9 */ + new ComboInput2<Date>( + "DateLongSwap", + Date.class, + singleDate, + DateLongSwap.class, + /* Json */ "-2172116928000", + /* JsonT */ "-2172116928000", + /* JsonR */ "-2172116928000", + /* Xml */ "<number>-2172116928000</number>", + /* XmlT */ "<number>-2172116928000</number>", + /* XmlR */ "<number>-2172116928000</number>\n", + /* XmlNs */ "<number>-2172116928000</number>", + /* Html */ "<number>-2172116928000</number>", + /* HtmlT */ "<number>-2172116928000</number>", + /* HtmlR */ "<number>-2172116928000</number>", + /* Uon */ "-2172116928000", + /* UonT */ "-2172116928000", + /* UonR */ "-2172116928000", + /* UrlEnc */ "_value=-2172116928000", + /* UrlEncT */ "_value=-2172116928000", + /* UrlEncR */ "_value=-2172116928000", + /* MsgPack */ "D3FFFFFE0643BDFA00", + /* MsgPackT */ "D3FFFFFE0643BDFA00", + /* RdfXml */ "<rdf:RDF>\n<rdf:Description>\n<j:value>-2172116928000</j:value>\n</rdf:Description>\n</rdf:RDF>\n", + /* RdfXmlT */ "<rdf:RDF>\n<rdf:Description>\n<j:value>-2172116928000</j:value>\n</rdf:Description>\n</rdf:RDF>\n", + /* RdfXmlR */ "<rdf:RDF>\n <rdf:Description>\n <j:value>-2172116928000</j:value>\n </rdf:Description>\n</rdf:RDF>\n" + ) + { + @Override + public void verify(Date o) { + assertType(Date.class, o); + } + } + }, + { /* 10 */ + new ComboInput2<Date[]>( + "DateLongSwap/dateArray", + Date[].class, + dateArray, + DateLongSwap.class, + /* Json */ "[-2172116928000]", + /* JsonT */ "[-2172116928000]", + /* JsonR */ "[\n\t-2172116928000\n]", + /* Xml */ "<array><number>-2172116928000</number></array>", + /* XmlT */ "<array><number>-2172116928000</number></array>", + /* XmlR */ "<array>\n\t<number>-2172116928000</number>\n</array>\n", + /* XmlNs */ "<array><number>-2172116928000</number></array>", + /* Html */ "<ul><li><number>-2172116928000</number></li></ul>", + /* HtmlT */ "<ul><li><number>-2172116928000</number></li></ul>", + /* HtmlR */ "<ul>\n\t<li><number>-2172116928000</number></li>\n</ul>\n", + /* Uon */ "@(-2172116928000)", + /* UonT */ "@(-2172116928000)", + /* UonR */ "@(\n\t-2172116928000\n)", + /* UrlEnc */ "0=-2172116928000", + /* UrlEncT */ "0=-2172116928000", + /* UrlEncR */ "0=-2172116928000", + /* MsgPack */ "91D3FFFFFE0643BDFA00", + /* MsgPackT */ "91D3FFFFFE0643BDFA00", + /* RdfXml */ "<rdf:RDF>\n<rdf:Seq>\n<rdf:li>-2172116928000</rdf:li>\n</rdf:Seq>\n</rdf:RDF>\n", + /* RdfXmlT */ "<rdf:RDF>\n<rdf:Seq>\n<rdf:li>-2172116928000</rdf:li>\n</rdf:Seq>\n</rdf:RDF>\n", + /* RdfXmlR */ "<rdf:RDF>\n <rdf:Seq>\n <rdf:li>-2172116928000</rdf:li>\n </rdf:Seq>\n</rdf:RDF>\n" + ) + { + @Override + public void verify(Date[] o) { + assertType(Date.class, o[0]); + } + } + }, + { /* 11 */ + new ComboInput2<ObjectMap>( + "DateLongSwap/dateMap", + getType(Map.class,String.class,Date.class), + dateMap, + DateLongSwap.class, + /* Json */ "{foo:-2172116928000}", + /* JsonT */ "{foo:-2172116928000}", + /* JsonR */ "{\n\tfoo: -2172116928000\n}", + /* Xml */ "<object><foo _type='number'>-2172116928000</foo></object>", + /* XmlT */ "<object><foo t='number'>-2172116928000</foo></object>", + /* XmlR */ "<object>\n\t<foo _type='number'>-2172116928000</foo>\n</object>\n", + /* XmlNs */ "<object><foo _type='number'>-2172116928000</foo></object>", + /* Html */ "<table><tr><td>foo</td><td><number>-2172116928000</number></td></tr></table>", + /* HtmlT */ "<table><tr><td>foo</td><td><number>-2172116928000</number></td></tr></table>", + /* HtmlR */ "<table>\n\t<tr>\n\t\t<td>foo</td>\n\t\t<td><number>-2172116928000</number></td>\n\t</tr>\n</table>\n", + /* Uon */ "(foo=-2172116928000)", + /* UonT */ "(foo=-2172116928000)", + /* UonR */ "(\n\tfoo=-2172116928000\n)", + /* UrlEnc */ "foo=-2172116928000", + /* UrlEncT */ "foo=-2172116928000", + /* UrlEncR */ "foo=-2172116928000", + /* MsgPack */ "81A3666F6FD3FFFFFE0643BDFA00", + /* MsgPackT */ "81A3666F6FD3FFFFFE0643BDFA00", + /* RdfXml */ "<rdf:RDF>\n<rdf:Description>\n<jp:foo>-2172116928000</jp:foo>\n</rdf:Description>\n</rdf:RDF>\n", + /* RdfXmlT */ "<rdf:RDF>\n<rdf:Description>\n<jp:foo>-2172116928000</jp:foo>\n</rdf:Description>\n</rdf:RDF>\n", + /* RdfXmlR */ "<rdf:RDF>\n <rdf:Description>\n <jp:foo>-2172116928000</jp:foo>\n </rdf:Description>\n</rdf:RDF>\n" + ) + { + @Override + public void verify(ObjectMap o) { + assertType(Date.class, o.get("foo")); + } + } + }, + { /* 12 */ + new ComboInput2<Date>( + "DateMapSwap/singleDate", + Date.class, + singleDate, + DateMapSwap.class, + /* Json */ "{time:-2172116928000}", + /* JsonT */ "{time:-2172116928000}", + /* JsonR */ "{\n\ttime: -2172116928000\n}", + /* Xml */ "<object><time _type='number'>-2172116928000</time></object>", + /* XmlT */ "<object><time t='number'>-2172116928000</time></object>", + /* XmlR */ "<object>\n\t<time _type='number'>-2172116928000</time>\n</object>\n", + /* XmlNs */ "<object><time _type='number'>-2172116928000</time></object>", + /* Html */ "<table><tr><td>time</td><td><number>-2172116928000</number></td></tr></table>", + /* HtmlT */ "<table><tr><td>time</td><td><number>-2172116928000</number></td></tr></table>", + /* HtmlR */ "<table>\n\t<tr>\n\t\t<td>time</td>\n\t\t<td><number>-2172116928000</number></td>\n\t</tr>\n</table>\n", + /* Uon */ "(time=-2172116928000)", + /* UonT */ "(time=-2172116928000)", + /* UonR */ "(\n\ttime=-2172116928000\n)", + /* UrlEnc */ "time=-2172116928000", + /* UrlEncT */ "time=-2172116928000", + /* UrlEncR */ "time=-2172116928000", + /* MsgPack */ "81A474696D65D3FFFFFE0643BDFA00", + /* MsgPackT */ "81A474696D65D3FFFFFE0643BDFA00", + /* RdfXml */ "<rdf:RDF>\n<rdf:Description>\n<jp:time>-2172116928000</jp:time>\n</rdf:Description>\n</rdf:RDF>\n", + /* RdfXmlT */ "<rdf:RDF>\n<rdf:Description>\n<jp:time>-2172116928000</jp:time>\n</rdf:Description>\n</rdf:RDF>\n", + /* RdfXmlR */ "<rdf:RDF>\n <rdf:Description>\n <jp:time>-2172116928000</jp:time>\n </rdf:Description>\n</rdf:RDF>\n" + ) + { + @Override + public void verify(Date o) { + assertType(Date.class, o); + } + } + }, + { /* 13 */ + new ComboInput2<Date[]>( + "DateMapSwap/dateArray", + Date[].class, + dateArray, + DateMapSwap.class, + /* Json */ "[{time:-2172116928000}]", + /* JsonT */ "[{time:-2172116928000}]", + /* JsonR */ "[\n\t{\n\t\ttime: -2172116928000\n\t}\n]", + /* Xml */ "<array><object><time _type='number'>-2172116928000</time></object></array>", + /* XmlT */ "<array><object><time t='number'>-2172116928000</time></object></array>", + /* XmlR */ "<array>\n\t<object>\n\t\t<time _type='number'>-2172116928000</time>\n\t</object>\n</array>\n", + /* XmlNs */ "<array><object><time _type='number'>-2172116928000</time></object></array>", + /* Html */ "<ul><li><table><tr><td>time</td><td><number>-2172116928000</number></td></tr></table></li></ul>", + /* HtmlT */ "<ul><li><table><tr><td>time</td><td><number>-2172116928000</number></td></tr></table></li></ul>", + /* HtmlR */ "<ul>\n\t<li>\n\t\t<table>\n\t\t\t<tr>\n\t\t\t\t<td>time</td>\n\t\t\t\t<td><number>-2172116928000</number></td>\n\t\t\t</tr>\n\t\t</table>\n\t</li>\n</ul>\n", + /* Uon */ "@((time=-2172116928000))", + /* UonT */ "@((time=-2172116928000))", + /* UonR */ "@(\n\t(\n\t\ttime=-2172116928000\n\t)\n)", + /* UrlEnc */ "0=(time=-2172116928000)", + /* UrlEncT */ "0=(time=-2172116928000)", + /* UrlEncR */ "0=(\n\ttime=-2172116928000\n)", + /* MsgPack */ "9181A474696D65D3FFFFFE0643BDFA00", + /* MsgPackT */ "9181A474696D65D3FFFFFE0643BDFA00", + /* RdfXml */ "<rdf:RDF>\n<rdf:Seq>\n<rdf:li rdf:parseType='Resource'>\n<jp:time>-2172116928000</jp:time>\n</rdf:li>\n</rdf:Seq>\n</rdf:RDF>\n", + /* RdfXmlT */ "<rdf:RDF>\n<rdf:Seq>\n<rdf:li rdf:parseType='Resource'>\n<jp:time>-2172116928000</jp:time>\n</rdf:li>\n</rdf:Seq>\n</rdf:RDF>\n", + /* RdfXmlR */ "<rdf:RDF>\n <rdf:Seq>\n <rdf:li rdf:parseType='Resource'>\n <jp:time>-2172116928000</jp:time>\n </rdf:li>\n </rdf:Seq>\n</rdf:RDF>\n" + ) + { + @Override + public void verify(Date[] o) { + assertType(Date.class, o[0]); + } + } + }, + { /* 14 */ + new ComboInput2<ObjectMap>( + "DateMapSwap/dateMap", + getType(Map.class,String.class,Date.class), + dateMap, + DateMapSwap.class, + /* Json */ "{foo:{time:-2172116928000}}", + /* JsonT */ "{foo:{time:-2172116928000}}", + /* JsonR */ "{\n\tfoo: {\n\t\ttime: -2172116928000\n\t}\n}", + /* Xml */ "<object><foo _type='object'><time _type='number'>-2172116928000</time></foo></object>", + /* XmlT */ "<object><foo t='object'><time t='number'>-2172116928000</time></foo></object>", + /* XmlR */ "<object>\n\t<foo _type='object'>\n\t\t<time _type='number'>-2172116928000</time>\n\t</foo>\n</object>\n", + /* XmlNs */ "<object><foo _type='object'><time _type='number'>-2172116928000</time></foo></object>", + /* Html */ "<table><tr><td>foo</td><td><table><tr><td>time</td><td><number>-2172116928000</number></td></tr></table></td></tr></table>", + /* HtmlT */ "<table><tr><td>foo</td><td><table><tr><td>time</td><td><number>-2172116928000</number></td></tr></table></td></tr></table>", + /* HtmlR */ "<table>\n\t<tr>\n\t\t<td>foo</td>\n\t\t<td>\n\t\t\t<table>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>time</td>\n\t\t\t\t\t<td><number>-2172116928000</number></td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t</td>\n\t</tr>\n</table>\n", + /* Uon */ "(foo=(time=-2172116928000))", + /* UonT */ "(foo=(time=-2172116928000))", + /* UonR */ "(\n\tfoo=(\n\t\ttime=-2172116928000\n\t)\n)", + /* UrlEnc */ "foo=(time=-2172116928000)", + /* UrlEncT */ "foo=(time=-2172116928000)", + /* UrlEncR */ "foo=(\n\ttime=-2172116928000\n)", + /* MsgPack */ "81A3666F6F81A474696D65D3FFFFFE0643BDFA00", + /* MsgPackT */ "81A3666F6F81A474696D65D3FFFFFE0643BDFA00", + /* RdfXml */ "<rdf:RDF>\n<rdf:Description>\n<jp:foo rdf:parseType='Resource'>\n<jp:time>-2172116928000</jp:time>\n</jp:foo>\n</rdf:Description>\n</rdf:RDF>\n", + /* RdfXmlT */ "<rdf:RDF>\n<rdf:Description>\n<jp:foo rdf:parseType='Resource'>\n<jp:time>-2172116928000</jp:time>\n</jp:foo>\n</rdf:Description>\n</rdf:RDF>\n", + /* RdfXmlR */ "<rdf:RDF>\n <rdf:Description>\n <jp:foo rdf:parseType='Resource'>\n <jp:time>-2172116928000</jp:time>\n </jp:foo>\n </rdf:Description>\n</rdf:RDF>\n" + ) + { + @Override + public void verify(ObjectMap o) { + assertType(Date.class, o.get("foo")); + } + } + }, + { /* 15 */ + new ComboInput2<Date>( + "DateSwap.DateMedium/singleDate", + Date.class, + singleDate, + DateSwap.DateMedium.class, + /* Json */ "'Mar 3, 1901'", + /* JsonT */ "'Mar 3, 1901'", + /* JsonR */ "'Mar 3, 1901'", + /* Xml */ "<string>Mar 3, 1901</string>", + /* XmlT */ "<string>Mar 3, 1901</string>", + /* XmlR */ "<string>Mar 3, 1901</string>\n", + /* XmlNs */ "<string>Mar 3, 1901</string>", + /* Html */ "<string>Mar 3, 1901</string>", + /* HtmlT */ "<string>Mar 3, 1901</string>", + /* HtmlR */ "<string>Mar 3, 1901</string>", + /* Uon */ "'Mar 3, 1901'", + /* UonT */ "'Mar 3, 1901'", + /* UonR */ "'Mar 3, 1901'", + /* UrlEnc */ "_value='Mar+3,+1901'", + /* UrlEncT */ "_value='Mar+3,+1901'", + /* UrlEncR */ "_value='Mar+3,+1901'", + /* MsgPack */ "AB4D617220332C2031393031", + /* MsgPackT */ "AB4D617220332C2031393031", + /* RdfXml */ "<rdf:RDF>\n<rdf:Description>\n<j:value>Mar 3, 1901</j:value>\n</rdf:Description>\n</rdf:RDF>\n", + /* RdfXmlT */ "<rdf:RDF>\n<rdf:Description>\n<j:value>Mar 3, 1901</j:value>\n</rdf:Description>\n</rdf:RDF>\n", + /* RdfXmlR */ "<rdf:RDF>\n <rdf:Description>\n <j:value>Mar 3, 1901</j:value>\n </rdf:Description>\n</rdf:RDF>\n" + ) + { + @Override + public void verify(Date o) { + assertType(Date.class, o); + } + } + }, + { /* 16 */ + new ComboInput2<Date[]>( + "DateSwap.DateMedium/dateArray", + Date[].class, + dateArray, + DateSwap.DateMedium.class, + /* Json */ "['Mar 3, 1901']", + /* JsonT */ "['Mar 3, 1901']", + /* JsonR */ "[\n\t'Mar 3, 1901'\n]", + /* Xml */ "<array><string>Mar 3, 1901</string></array>", + /* XmlT */ "<array><string>Mar 3, 1901</string></array>", + /* XmlR */ "<array>\n\t<string>Mar 3, 1901</string>\n</array>\n", + /* XmlNs */ "<array><string>Mar 3, 1901</string></array>", + /* Html */ "<ul><li>Mar 3, 1901</li></ul>", + /* HtmlT */ "<ul><li>Mar 3, 1901</li></ul>", + /* HtmlR */ "<ul>\n\t<li>Mar 3, 1901</li>\n</ul>\n", + /* Uon */ "@('Mar 3, 1901')", + /* UonT */ "@('Mar 3, 1901')", + /* UonR */ "@(\n\t'Mar 3, 1901'\n)", + /* UrlEnc */ "0='Mar+3,+1901'", + /* UrlEncT */ "0='Mar+3,+1901'", + /* UrlEncR */ "0='Mar+3,+1901'", + /* MsgPack */ "91AB4D617220332C2031393031", + /* MsgPackT */ "91AB4D617220332C2031393031", + /* RdfXml */ "<rdf:RDF>\n<rdf:Seq>\n<rdf:li>Mar 3, 1901</rdf:li>\n</rdf:Seq>\n</rdf:RDF>\n", + /* RdfXmlT */ "<rdf:RDF>\n<rdf:Seq>\n<rdf:li>Mar 3, 1901</rdf:li>\n</rdf:Seq>\n</rdf:RDF>\n", + /* RdfXmlR */ "<rdf:RDF>\n <rdf:Seq>\n <rdf:li>Mar 3, 1901</rdf:li>\n </rdf:Seq>\n</rdf:RDF>\n" + ) + { + @Override + public void verify(Date[] o) { + assertType(Date.class, o[0]); + } + } + }, + { /* 17 */ + new ComboInput2<ObjectMap>( + "DateSwap.DateMedium/dateMap", + getType(Map.class,String.class,Date.class), + dateMap, + DateSwap.DateMedium.class, + /* Json */ "{foo:'Mar 3, 1901'}", + /* JsonT */ "{foo:'Mar 3, 1901'}", + /* JsonR */ "{\n\tfoo: 'Mar 3, 1901'\n}", + /* Xml */ "<object><foo>Mar 3, 1901</foo></object>", + /* XmlT */ "<object><foo>Mar 3, 1901</foo></object>", + /* XmlR */ "<object>\n\t<foo>Mar 3, 1901</foo>\n</object>\n", + /* XmlNs */ "<object><foo>Mar 3, 1901</foo></object>", + /* Html */ "<table><tr><td>foo</td><td>Mar 3, 1901</td></tr></table>", + /* HtmlT */ "<table><tr><td>foo</td><td>Mar 3, 1901</td></tr></table>", + /* HtmlR */ "<table>\n\t<tr>\n\t\t<td>foo</td>\n\t\t<td>Mar 3, 1901</td>\n\t</tr>\n</table>\n", + /* Uon */ "(foo='Mar 3, 1901')", + /* UonT */ "(foo='Mar 3, 1901')", + /* UonR */ "(\n\tfoo='Mar 3, 1901'\n)", + /* UrlEnc */ "foo='Mar+3,+1901'", + /* UrlEncT */ "foo='Mar+3,+1901'", + /* UrlEncR */ "foo='Mar+3,+1901'", + /* MsgPack */ "81A3666F6FAB4D617220332C2031393031", + /* MsgPackT */ "81A3666F6FAB4D617220332C2031393031", + /* RdfXml */ "<rdf:RDF>\n<rdf:Description>\n<jp:foo>Mar 3, 1901</jp:foo>\n</rdf:Description>\n</rdf:RDF>\n", + /* RdfXmlT */ "<rdf:RDF>\n<rdf:Description>\n<jp:foo>Mar 3, 1901</jp:foo>\n</rdf:Description>\n</rdf:RDF>\n", + /* RdfXmlR */ "<rdf:RDF>\n <rdf:Description>\n <jp:foo>Mar 3, 1901</jp:foo>\n </rdf:Description>\n</rdf:RDF>\n" + ) + { + @Override + public void verify(ObjectMap o) { + assertType(Date.class, o.get("foo")); + } + } + }, + }); + } + + private final Class<?> swapClass; + + public DateSwapComboTest(ComboInput2<?> comboInput) { + super(comboInput); + this.swapClass = comboInput.swapClass; + } + + public static class ComboInput2<T> extends ComboInput<T> { + private final Class<?> swapClass; + + public ComboInput2( + String label, + Type type, + T in, + Class<?> swapClass, + String json, + String jsonT, + String jsonR, + String xml, + String xmlT, + String xmlR, + String xmlNs, + String html, + String htmlT, + String htmlR, + String uon, + String uonT, + String uonR, + String urlEncoding, + String urlEncodingT, + String urlEncodingR, + String msgPack, + String msgPackT, + String rdfXml, + String rdfXmlT, + String rdfXmlR + ) { + super(label, type, in, json, jsonT, jsonR, xml, xmlT, xmlR, xmlNs, html, htmlT, htmlR, uon, uonT, uonR, urlEncoding, urlEncodingT, urlEncodingR, msgPack, msgPackT, rdfXml, rdfXmlT, rdfXmlR); + this.swapClass = swapClass; + } + } + + @BeforeClass + public static void beforeClass() { + TestUtils.setTimeZone("PST"); + TestUtils.setLocale(Locale.US); + } + + @AfterClass + public static void afterClass() { + TestUtils.unsetTimeZone(); + TestUtils.unsetLocale(); + } + + @Override + protected Serializer applySettings(Serializer s) throws Exception { + return s.builder().pojoSwaps(swapClass).build(); + } + + @Override + protected Parser applySettings(Parser p) throws Exception { + return p.builder().pojoSwaps(swapClass).build(); + } +}
