Add combo tests for CalendarSwap class. Project: http://git-wip-us.apache.org/repos/asf/incubator-juneau/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-juneau/commit/0d70804d Tree: http://git-wip-us.apache.org/repos/asf/incubator-juneau/tree/0d70804d Diff: http://git-wip-us.apache.org/repos/asf/incubator-juneau/diff/0d70804d
Branch: refs/heads/master Commit: 0d70804d8d1fe5921cc0df1ada433f014fa373cf Parents: c6b0a7b Author: JamesBognar <[email protected]> Authored: Mon Feb 20 12:46:45 2017 -0500 Committer: JamesBognar <[email protected]> Committed: Mon Feb 20 12:46:45 2017 -0500 ---------------------------------------------------------------------- .../test/java/org/apache/juneau/ComboTest.java | 626 +++++++++++++++++++ .../test/java/org/apache/juneau/TestUtils.java | 9 +- .../java/org/apache/juneau/dto/ComboTest.java | 557 ----------------- .../apache/juneau/dto/html5/Html5ComboTest.java | 2 +- .../dto/html5/Html5TemplateComboTest.java | 2 +- .../transforms/CalendarSwapComboTest.java | 577 +++++++++++++++++ .../juneau/transforms/CalendarSwapTest.java | 420 ------------- 7 files changed, 1211 insertions(+), 982 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/0d70804d/juneau-core-test/src/test/java/org/apache/juneau/ComboTest.java ---------------------------------------------------------------------- diff --git a/juneau-core-test/src/test/java/org/apache/juneau/ComboTest.java b/juneau-core-test/src/test/java/org/apache/juneau/ComboTest.java new file mode 100644 index 0000000..cb4b935 --- /dev/null +++ b/juneau-core-test/src/test/java/org/apache/juneau/ComboTest.java @@ -0,0 +1,626 @@ +// *************************************************************************************************************************** +// * 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; + +import static org.junit.Assert.assertEquals; + +import java.util.Arrays; +import java.util.HashSet; +import java.util.IdentityHashMap; +import java.util.Map; +import java.util.Set; + +import org.apache.juneau.html.HtmlParser; +import org.apache.juneau.html.HtmlSerializer; +import org.apache.juneau.jena.RdfParser; +import org.apache.juneau.jena.RdfSerializer; +import org.apache.juneau.json.JsonParser; +import org.apache.juneau.json.JsonSerializer; +import org.apache.juneau.msgpack.MsgPackParser; +import org.apache.juneau.msgpack.MsgPackSerializer; +import org.apache.juneau.parser.InputStreamParser; +import org.apache.juneau.parser.Parser; +import org.apache.juneau.parser.ReaderParser; +import org.apache.juneau.serializer.OutputStreamSerializer; +import org.apache.juneau.serializer.Serializer; +import org.apache.juneau.serializer.WriterSerializer; +import org.apache.juneau.urlencoding.UonParser; +import org.apache.juneau.urlencoding.UonSerializer; +import org.apache.juneau.urlencoding.UrlEncodingParser; +import org.apache.juneau.urlencoding.UrlEncodingSerializer; +import org.apache.juneau.xml.XmlParser; +import org.apache.juneau.xml.XmlSerializer; +import org.junit.FixMethodOrder; +import org.junit.Test; +import org.junit.runners.MethodSorters; + +/** + * Superclass for tests that verify results against all supported content types. + */ +@FixMethodOrder(MethodSorters.NAME_ASCENDING) +public abstract class ComboTest { + + /* Parameter template */ +// { +// "MyLabel", +// myInput, +// /* Json */ "xxx", +// /* JsonT */ "xxx", +// /* JsonR */ "xxx", +// /* Xml */ "xxx", +// /* XmlT */ "xxx", +// /* XmlR */ "xxx", +// /* XmlNs */ "xxx", +// /* Html */ "xxx", +// /* HtmlT */ "xxx", +// /* HtmlR */ "xxx", +// /* Uon */ "xxx", +// /* UonT */ "xxx", +// /* UonR */ "xxx", +// /* UrlEnc */ "xxx", +// /* UrlEncT */ "xxx", +// /* UrlEncR */ "xxx", +// /* MsgPack */ "xxx", +// /* MsgPackT */ "xxx", +// /* RdfXml */ "xxx", +// /* RdfXmlT */ "xxx", +// /* RdfXmlR */ "xxx", +// }, + + private final String + label, + oJson, oJsonT, oJsonR, + oXml, oXmlT, oXmlR, oXmlNs, + oHtml, oHtmlT, oHtmlR, + oUon, oUonT, oUonR, + oUrlEncoding, oUrlEncodingT, oUrlEncodingR, + oMsgPack, oMsgPackT, + oRdfXml, oRdfXmlT, oRdfXmlR; + private final Object in; + + // These are the names of all the tests. + // You can comment out the names here to skip them. + private static final String[] runTests = { + "serializeJson", + "parseJson", + "serializeJsonT", + "parseJsonT", + "serializeJsonR", + "parseJsonR", + "serializeXml", + "parseXml", + "serializeXmlT", + "parseXmlT", + "serializeXmlR", + "parseXmlR", + "serializeXmlNs", + "parseXmlNs", + "serializeHtml", + "parseHtml", + "serializeHtmlT", + "parseHtmlT", + "serializeHtmlR", + "parseHtmlR", + "serializeUon", + "parseUon", + "serializeUonT", + "parseUonT", + "serializeUonR", + "parseUonR", + "serializeUrlEncoding", + "parseUrlEncoding", + "serializeUrlEncodingT", + "parseUrlEncodingT", + "serializeUrlEncodingR", + "parseUrlEncodingR", + "serializeMsgPack", + "parseMsgPack", + "parseMsgPackJsonEquivalency", + "serializeMsgPackT", + "parseMsgPackT", + "parseMsgPackTJsonEquivalency", + "serializeRdfXml", + "parseRdfXml", + "serializeRdfXmlT", + "parseRdfXmlT", + "serializeRdfXmlR", + "parseRdfXmlR", + }; + + private static final Set<String> runTestsSet = new HashSet<String>(Arrays.asList(runTests)); + + private final boolean SKIP_RDF_TESTS = Boolean.getBoolean("skipRdfTests"); + + private Map<Serializer,Serializer> serializerMap = new IdentityHashMap<Serializer,Serializer>(); + private Map<Parser,Parser> parserMap = new IdentityHashMap<Parser,Parser>(); + + public ComboTest( + String label, + Object in, + String oJson, String oJsonT, String oJsonR, + String oXml, String oXmlT, String oXmlR, String oXmlNs, + String oHtml, String oHtmlT, String oHtmlR, + String oUon, String oUonT, String oUonR, + String oUrlEncoding, String oUrlEncodingT, String oUrlEncodingR, + String oMsgPack, String oMsgPackT, + String oRdfXml, String oRdfXmlT, String oRdfXmlR + ) { + this.label = label; + this.in = in; + this.oJson = oJson; this.oJsonT = oJsonT; this.oJsonR = oJsonR; + this.oXml = oXml; this.oXmlT = oXmlT; this.oXmlR = oXmlR; this.oXmlNs = oXmlNs; + this.oHtml = oHtml; this.oHtmlT = oHtmlT; this.oHtmlR = oHtmlR; + this.oUon = oUon; this.oUonT = oUonT; this.oUonR = oUonR; + this.oUrlEncoding = oUrlEncoding; this.oUrlEncodingT = oUrlEncodingT; this.oUrlEncodingR = oUrlEncodingR; + this.oMsgPack = oMsgPack; this.oMsgPackT = oMsgPackT; + this.oRdfXml = oRdfXml; this.oRdfXmlT = oRdfXmlT; this.oRdfXmlR = oRdfXmlR; + } + + private Serializer getSerializer(Serializer s) throws Exception { + Serializer s2 = serializerMap.get(s); + if (s2 == null) { + s2 = applySettings(s); + serializerMap.put(s, s2); + } + return s2; + } + + private Parser getParser(Parser p) throws Exception { + Parser p2 = parserMap.get(p); + if (p2 == null) { + p2 = applySettings(p); + parserMap.put(p, p2); + } + return p2; + } + + private void testSerialize(String testName, Serializer s, String expected) throws Exception { + try { + s = getSerializer(s); + + boolean isRdf = s instanceof RdfSerializer; + + if ((isRdf && SKIP_RDF_TESTS) || expected.isEmpty() || ! runTestsSet.contains(testName) ) { + System.err.println(label + "/" + testName + " for "+s.getClass().getSimpleName()+" skipped."); + return; + } + + String r = s.isWriterSerializer() ? ((WriterSerializer)s).serialize(in) : ((OutputStreamSerializer)s).serializeToHex(in); + + // Can't control RdfSerializer output well, so manually remove namespace declarations + // double-quotes with single-quotes, and spaces with tabs. + // Also because RDF sucks really bad and can't be expected to produce consistent testable results, + // we must also do an expensive sort-then-compare operation to verify the results. + if (isRdf) + r = r.replaceAll("<rdf:RDF[^>]*>", "<rdf:RDF>").replace('"', '\''); + + // Specifying "xxx" in the expected results will spit out what we should populate the field with. + if (expected.equals("xxx")) { + System.out.println(label + "/" + testName + "=\n" + r.replaceAll("\n", "\\\\n").replaceAll("\t", "\\\\t")); // NOT DEBUG + System.out.println(r); + } + + if (isRdf) + TestUtils.assertEqualsAfterSort(expected, r, "{0}/{1} parse-normal failed", label, testName); + else + TestUtils.assertEquals(expected, r, "{0}/{1} parse-normal failed", label, testName); + + } catch (AssertionError e) { + throw e; + } catch (Exception e) { + throw new AssertionError(label + "/" + testName + " failed. exception=" + e.getLocalizedMessage()); + } + } + + private void testParse(String testName, Serializer s, Parser p, String expected) throws Exception { + try { + s = getSerializer(s); + p = getParser(p); + + boolean isRdf = s instanceof RdfSerializer; + + if ((isRdf && SKIP_RDF_TESTS) || expected.isEmpty() || ! runTestsSet.contains(testName) ) { + System.err.println(label + "/" + testName + " for "+s.getClass().getSimpleName()+" skipped."); + return; + } + + String r = s.isWriterSerializer() ? ((WriterSerializer)s).serialize(in) : ((OutputStreamSerializer)s).serializeToHex(in); + Object o = p.parse(r, in == null ? Object.class : in.getClass()); + r = s.isWriterSerializer() ? ((WriterSerializer)s).serialize(o) : ((OutputStreamSerializer)s).serializeToHex(o); + + if (isRdf) + r = r.replaceAll("<rdf:RDF[^>]*>", "<rdf:RDF>").replace('"', '\''); + + if (isRdf) + TestUtils.assertEqualsAfterSort(expected, r, "{0}/{1} parse-normal failed", label, testName); + else + TestUtils.assertEquals(expected, r, "{0}/{1} parse-normal failed", label, testName); + + } catch (AssertionError e) { + throw e; + } catch (Exception e) { + throw new Exception(label + "/" + testName + " failed.", e); + } + } + + private void testParseJsonEquivalency(String testName, OutputStreamSerializer s, InputStreamParser p, String expected) throws Exception { + try { + s = (OutputStreamSerializer)getSerializer(s); + p = (InputStreamParser)getParser(p); + WriterSerializer sJson = (WriterSerializer)getSerializer(this.sJson); + + String r = s.serializeToHex(in); + Object o = p.parse(r, in == null ? Object.class : in.getClass()); + r = sJson.serialize(o); + assertEquals(label + "/" + testName + " parse-normal failed on JSON equivalency", expected, r); + } catch (AssertionError e) { + throw e; + } catch (Exception e) { + throw new Exception(label + "/" + testName + " failed.", e); + } + } + + protected Serializer applySettings(Serializer s) throws Exception { + return s; + } + + protected Parser applySettings(Parser p) throws Exception { + return p; + } + + //-------------------------------------------------------------------------------- + // JSON + //-------------------------------------------------------------------------------- + WriterSerializer sJson = JsonSerializer.DEFAULT_LAX; + ReaderParser pJson = JsonParser.DEFAULT; + + @Test + public void serializeJson() throws Exception { + testSerialize("serializeJson", sJson, oJson); + } + + @Test + public void parseJson() throws Exception { + testParse("parseJson", sJson, pJson, oJson); + } + + //-------------------------------------------------------------------------------- + // JSON - 't' property + //-------------------------------------------------------------------------------- + WriterSerializer sJsonT = JsonSerializer.DEFAULT_LAX.clone().setBeanTypePropertyName("t"); + ReaderParser pJsonT = JsonParser.DEFAULT.clone().setBeanTypePropertyName("t"); + + @Test + public void serializeJsonT() throws Exception { + testSerialize("serializeJsonT", sJsonT, oJsonT); + } + + @Test + public void parseJsonT() throws Exception { + testParse("parseJsonT", sJsonT, pJsonT, oJsonT); + } + + //-------------------------------------------------------------------------------- + // JSON - Readable + //-------------------------------------------------------------------------------- + WriterSerializer sJsonR = JsonSerializer.DEFAULT_LAX_READABLE; + ReaderParser pJsonR = JsonParser.DEFAULT; + + @Test + public void serializeJsonR() throws Exception { + testSerialize("serializeJsonR", sJsonR, oJsonR); + } + + @Test + public void parseJsonR() throws Exception { + testParse("parseJsonR", sJsonR, pJsonR, oJsonR); + } + + //-------------------------------------------------------------------------------- + // XML + //-------------------------------------------------------------------------------- + WriterSerializer sXml = XmlSerializer.DEFAULT_SQ; + ReaderParser pXml = XmlParser.DEFAULT; + + @Test + public void serializeXml() throws Exception { + testSerialize("serializeXml", sXml, oXml); + } + + @Test + public void parseXml() throws Exception { + testParse("parseXml", sXml, pXml, oXml); + } + + //-------------------------------------------------------------------------------- + // XML - 't' property + //-------------------------------------------------------------------------------- + WriterSerializer sXmlT = XmlSerializer.DEFAULT_SQ.clone().setBeanTypePropertyName("t"); + ReaderParser pXmlT = XmlParser.DEFAULT.clone().setBeanTypePropertyName("t"); + + @Test + public void serializeXmlT() throws Exception { + testSerialize("serializeXmlT", sXmlT, oXmlT); + } + + @Test + public void parseXmlT() throws Exception { + testParse("parseXmlT", sXmlT, pXmlT, oXmlT); + } + + //-------------------------------------------------------------------------------- + // XML - Readable + //-------------------------------------------------------------------------------- + WriterSerializer sXmlR = XmlSerializer.DEFAULT_SQ_READABLE; + ReaderParser pXmlR = XmlParser.DEFAULT; + + @Test + public void serializeXmlR() throws Exception { + testSerialize("serializeXmlR", sXmlR, oXmlR); + } + + @Test + public void parseXmlR() throws Exception { + testParse("parseXmlR", sXmlR, pXmlR, oXmlR); + } + + //-------------------------------------------------------------------------------- + // XML - Namespaces + //-------------------------------------------------------------------------------- + WriterSerializer sXmlNs = XmlSerializer.DEFAULT_NS_SQ; + ReaderParser pXmlNs = XmlParser.DEFAULT; + + @Test + public void serializeXmlNs() throws Exception { + testSerialize("serializeXmlNs", sXmlNs, oXmlNs); + } + + @Test + public void parseXmlNs() throws Exception { + testParse("parseXmlNs", sXmlNs, pXmlNs, oXmlNs); + } + + //-------------------------------------------------------------------------------- + // HTML + //-------------------------------------------------------------------------------- + WriterSerializer sHtml = HtmlSerializer.DEFAULT_SQ; + ReaderParser pHtml = HtmlParser.DEFAULT; + + @Test + public void serializeHtml() throws Exception { + testSerialize("serializeHtml", sHtml, oHtml); + } + + @Test + public void parseHtml() throws Exception { + testParse("parseHtml", sHtml, pHtml, oHtml); + } + + //-------------------------------------------------------------------------------- + // HTML - 't' property + //-------------------------------------------------------------------------------- + WriterSerializer sHtmlT = HtmlSerializer.DEFAULT_SQ.clone().setBeanTypePropertyName("t"); + ReaderParser pHtmlT = HtmlParser.DEFAULT.clone().setBeanTypePropertyName("t"); + + @Test + public void serializeHtmlT() throws Exception { + testSerialize("serializeHtmlT", sHtmlT, oHtmlT); + } + + @Test + public void parseHtmlT() throws Exception { + testParse("parseHtmlT", sHtmlT, pHtmlT, oHtmlT); + } + + //-------------------------------------------------------------------------------- + // HTML - Readable + //-------------------------------------------------------------------------------- + WriterSerializer sHtmlR = HtmlSerializer.DEFAULT_SQ_READABLE; + ReaderParser pHtmlR = HtmlParser.DEFAULT; + + @Test + public void serializeHtmlR() throws Exception { + testSerialize("serializeHtmlR", sHtmlR, oHtmlR); + } + + @Test + public void parseHtmlR() throws Exception { + testParse("parseHtmlR", sHtmlR, pHtmlR, oHtmlR); + } + + //-------------------------------------------------------------------------------- + // UON + //-------------------------------------------------------------------------------- + WriterSerializer sUon = UonSerializer.DEFAULT; + ReaderParser pUon = UonParser.DEFAULT; + + @Test + public void serializeUon() throws Exception { + testSerialize("serializeUon", sUon, oUon); + } + + @Test + public void parseUon() throws Exception { + testParse("parseUon", sUon, pUon, oUon); + } + + //-------------------------------------------------------------------------------- + // UON - 't' property + //-------------------------------------------------------------------------------- + WriterSerializer sUonT = UonSerializer.DEFAULT.clone().setBeanTypePropertyName("t"); + ReaderParser pUonT = UonParser.DEFAULT.clone().setBeanTypePropertyName("t"); + + @Test + public void serializeUonT() throws Exception { + testSerialize("serializeUonT", sUonT, oUonT); + } + + @Test + public void parseUonT() throws Exception { + testParse("parseUonT", sUonT, pUonT, oUonT); + } + + //-------------------------------------------------------------------------------- + // UON - Readable + //-------------------------------------------------------------------------------- + WriterSerializer sUonR = UonSerializer.DEFAULT_READABLE; + ReaderParser pUonR = UonParser.DEFAULT; + + @Test + public void serializeUonR() throws Exception { + testSerialize("serializeUonR", sUonR, oUonR); + } + + @Test + public void parseUonR() throws Exception { + testParse("parseUonR", sUonR, pUonR, oUonR); + } + + //-------------------------------------------------------------------------------- + // UrlEncoding + //-------------------------------------------------------------------------------- + WriterSerializer sUrlEncoding = UrlEncodingSerializer.DEFAULT; + ReaderParser pUrlEncoding = UrlEncodingParser.DEFAULT; + + @Test + public void serializeUrlEncoding() throws Exception { + testSerialize("serializeUrlEncoding", sUrlEncoding, oUrlEncoding); + } + + @Test + public void parseUrlEncoding() throws Exception { + testParse("parseUrlEncoding", sUrlEncoding, pUrlEncoding, oUrlEncoding); + } + + //-------------------------------------------------------------------------------- + // UrlEncoding - 't' property + //-------------------------------------------------------------------------------- + WriterSerializer sUrlEncodingT = UrlEncodingSerializer.DEFAULT.clone().setBeanTypePropertyName("t"); + ReaderParser pUrlEncodingT = UrlEncodingParser.DEFAULT.clone().setBeanTypePropertyName("t"); + + @Test + public void serializeUrlEncodingT() throws Exception { + testSerialize("serializeUrlEncodingT", sUrlEncodingT, oUrlEncodingT); + } + + @Test + public void parseUrlEncodingT() throws Exception { + testParse("parseUrlEncodingT", sUrlEncodingT, pUrlEncodingT, oUrlEncodingT); + } + + //-------------------------------------------------------------------------------- + // UrlEncoding - Readable + //-------------------------------------------------------------------------------- + WriterSerializer sUrlEncodingR = UrlEncodingSerializer.DEFAULT_READABLE; + ReaderParser pUrlEncodingR = UrlEncodingParser.DEFAULT; + + @Test + public void serializeUrlEncodingR() throws Exception { + testSerialize("serializeUrlEncodingR", sUrlEncodingR, oUrlEncodingR); + } + + @Test + public void parseUrlEncodingR() throws Exception { + testParse("parseUrlEncodingR", sUrlEncodingR, pUrlEncodingR, oUrlEncodingR); + } + + //-------------------------------------------------------------------------------- + // MsgPack + //-------------------------------------------------------------------------------- + OutputStreamSerializer sMsgPack = MsgPackSerializer.DEFAULT; + InputStreamParser pMsgPack = MsgPackParser.DEFAULT; + + @Test + public void serializeMsgPack() throws Exception { + testSerialize("serializeMsgPack", sMsgPack, oMsgPack); + } + + @Test + public void parseMsgPack() throws Exception { + testParse("parseMsgPack", sMsgPack, pMsgPack, oMsgPack); + } + + @Test + public void parseMsgPackJsonEquivalency() throws Exception { + testParseJsonEquivalency("parseMsgPackJsonEquivalency", sMsgPack, pMsgPack, oJson); + } + + //-------------------------------------------------------------------------------- + // MsgPack - 't' property + //-------------------------------------------------------------------------------- + OutputStreamSerializer sMsgPackT = MsgPackSerializer.DEFAULT.clone().setBeanTypePropertyName("t"); + InputStreamParser pMsgPackT = MsgPackParser.DEFAULT.clone().setBeanTypePropertyName("t"); + + @Test + public void serializeMsgPackT() throws Exception { + testSerialize("serializeMsgPackT", sMsgPackT, oMsgPackT); + } + + @Test + public void parseMsgPackT() throws Exception { + testParse("parseMsgPackT", sMsgPackT, pMsgPackT, oMsgPackT); + } + + @Test + public void parseMsgPackTJsonEquivalency() throws Exception { + testParseJsonEquivalency("parseMsgPackTJsonEquivalency", sMsgPackT, pMsgPackT, oJson); + } + + //-------------------------------------------------------------------------------- + // RdfXml + //-------------------------------------------------------------------------------- + WriterSerializer sRdfXml = RdfSerializer.DEFAULT_XMLABBREV; + ReaderParser pRdfXml = RdfParser.DEFAULT_XML; + + @Test + public void serializeRdfXml() throws Exception { + testSerialize("serializeRdfXml", sRdfXml, oRdfXml); + } + + @Test + public void parseRdfXml() throws Exception { + testParse("parseRdfXml", sRdfXml, pRdfXml, oRdfXml); + } + + //-------------------------------------------------------------------------------- + // RdfXml - 't' property + //-------------------------------------------------------------------------------- + WriterSerializer sRdfXmlT = RdfSerializer.DEFAULT_XMLABBREV.clone().setBeanTypePropertyName("t"); + ReaderParser pRdfXmlT = RdfParser.DEFAULT_XML.clone().setBeanTypePropertyName("t"); + + @Test + public void serializeRdfXmlT() throws Exception { + testSerialize("serializeRdfXmlT", sRdfXmlT, oRdfXmlT); + } + + @Test + public void parseRdfXmlT() throws Exception { + testParse("parseRdfXmlT", sRdfXmlT, pRdfXmlT, oRdfXmlT); + } + + //-------------------------------------------------------------------------------- + // RdfXml - Readable + //-------------------------------------------------------------------------------- + WriterSerializer sRdfXmlR = RdfSerializer.DEFAULT_XMLABBREV.clone().setUseWhitespace(true); + ReaderParser pRdfXmlR = RdfParser.DEFAULT_XML; + + @Test + public void serializeRdfXmlR() throws Exception { + testSerialize("serializeRdfXmlR", sRdfXmlR, oRdfXmlR); + } + + @Test + public void parseRdfXmlR() throws Exception { + testParse("parseRdfXmlR", sRdfXmlR, pRdfXmlR, oRdfXmlR); + } +} http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/0d70804d/juneau-core-test/src/test/java/org/apache/juneau/TestUtils.java ---------------------------------------------------------------------- diff --git a/juneau-core-test/src/test/java/org/apache/juneau/TestUtils.java b/juneau-core-test/src/test/java/org/apache/juneau/TestUtils.java index 6ee3a41..a94fcca 100755 --- a/juneau-core-test/src/test/java/org/apache/juneau/TestUtils.java +++ b/juneau-core-test/src/test/java/org/apache/juneau/TestUtils.java @@ -472,18 +472,21 @@ public class TestUtils { String[] e = expected.trim().split("\n"), a = actual.trim().split("\n"); if (e.length != a.length) - throw new AssertionError(MessageFormat.format(msg + "---expected---\n"+expected+"\n---actual---\n"+actual+"\n", args)); + throw new ComparisonFailure(MessageFormat.format(msg, args), expected, actual); Arrays.sort(e); Arrays.sort(a); for (int i = 0; i < e.length; i++) if (! e[i].equals(a[i])) - throw new AssertionError(MessageFormat.format(msg + "---expected---\n"+expected+"\n---actual---\n"+actual+"\n", args)); + throw new ComparisonFailure(MessageFormat.format(msg, args), expected, actual); } + /** + * Same as {@link Assert#assertEquals(String,String,String) except takes in a MessageFormat-style message. + */ public static void assertEquals(String expected, String actual, String msg, Object...args) { if (! StringUtils.isEquals(expected, actual)) - throw new AssertionError(MessageFormat.format(msg + "---expected---\n"+expected+"\n---actual---\n"+actual+"\n", args)); + throw new ComparisonFailure(MessageFormat.format(msg, args), expected, actual); } } http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/0d70804d/juneau-core-test/src/test/java/org/apache/juneau/dto/ComboTest.java ---------------------------------------------------------------------- diff --git a/juneau-core-test/src/test/java/org/apache/juneau/dto/ComboTest.java b/juneau-core-test/src/test/java/org/apache/juneau/dto/ComboTest.java deleted file mode 100644 index 57061d5..0000000 --- a/juneau-core-test/src/test/java/org/apache/juneau/dto/ComboTest.java +++ /dev/null @@ -1,557 +0,0 @@ -// *************************************************************************************************************************** -// * 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.dto; - -import static org.junit.Assert.assertEquals; - -import java.util.Arrays; -import java.util.HashSet; -import java.util.Set; - -import org.apache.juneau.TestUtils; -import org.apache.juneau.html.HtmlParser; -import org.apache.juneau.html.HtmlSerializer; -import org.apache.juneau.jena.RdfParser; -import org.apache.juneau.jena.RdfSerializer; -import org.apache.juneau.json.JsonParser; -import org.apache.juneau.json.JsonSerializer; -import org.apache.juneau.msgpack.MsgPackParser; -import org.apache.juneau.msgpack.MsgPackSerializer; -import org.apache.juneau.parser.InputStreamParser; -import org.apache.juneau.parser.Parser; -import org.apache.juneau.parser.ReaderParser; -import org.apache.juneau.serializer.OutputStreamSerializer; -import org.apache.juneau.serializer.Serializer; -import org.apache.juneau.serializer.WriterSerializer; -import org.apache.juneau.urlencoding.UonParser; -import org.apache.juneau.urlencoding.UonSerializer; -import org.apache.juneau.urlencoding.UrlEncodingParser; -import org.apache.juneau.urlencoding.UrlEncodingSerializer; -import org.apache.juneau.xml.XmlParser; -import org.apache.juneau.xml.XmlSerializer; -import org.junit.Test; - -/** - * Superclass for tests that verify results against all supported content types. - */ -public abstract class ComboTest { - - private final String - label, - oJson, oJsonT, oJsonR, - oXml, oXmlT, oXmlR, oXmlNs, - oHtml, oHtmlT, oHtmlR, - oUon, oUonT, oUonR, - oUrlEncoding, oUrlEncodingT, oUrlEncodingR, - oMsgPack, oMsgPackT, - oRdfXml, oRdfXmlT, oRdfXmlR; - private final Object in; - - // These are the names of all the tests. - // You can comment out the names here to skip them. - private static final String[] runTests = { - "serializeJson", - "parseJson", - "serializeJsonT", - "parseJsonT", - "serializeJsonR", - "parseJsonR", - "serializeXml", - "parseXml", - "serializeXmlT", - "parseXmlT", - "serializeXmlR", - "parseXmlR", - "serializeXmlNs", - "parseXmlNs", - "serializeHtml", - "parseHtml", - "serializeHtmlT", - "parseHtmlT", - "serializeHtmlR", - "parseHtmlR", - "serializeUon", - "parseUon", - "serializeUonT", - "parseUonT", - "serializeUonR", - "parseUonR", - "serializeUrlEncoding", - "parseUrlEncoding", - "serializeUrlEncodingT", - "parseUrlEncodingT", - "serializeUrlEncodingR", - "parseUrlEncodingR", - "serializeMsgPack", - "parseMsgPack", - "parseMsgPackJsonEquivalency", - "serializeMsgPackT", - "parseMsgPackT", - "parseMsgPackTJsonEquivalency", - "serializeRdfXml", - "parseRdfXml", - "serializeRdfXmlT", - "parseRdfXmlT", - "serializeRdfXmlR", - "parseRdfXmlR", - }; - - private static final Set<String> runTestsSet = new HashSet<String>(Arrays.asList(runTests)); - - private final boolean SKIP_RDF_TESTS = Boolean.getBoolean("skipRdfTests"); - - public ComboTest( - String label, - Object in, - String oJson, String oJsonT, String oJsonR, - String oXml, String oXmlT, String oXmlR, String oXmlNs, - String oHtml, String oHtmlT, String oHtmlR, - String oUon, String oUonT, String oUonR, - String oUrlEncoding, String oUrlEncodingT, String oUrlEncodingR, - String oMsgPack, String oMsgPackT, - String oRdfXml, String oRdfXmlT, String oRdfXmlR - ) { - this.label = label; - this.in = in; - this.oJson = oJson; this.oJsonT = oJsonT; this.oJsonR = oJsonR; - this.oXml = oXml; this.oXmlT = oXmlT; this.oXmlR = oXmlR; this.oXmlNs = oXmlNs; - this.oHtml = oHtml; this.oHtmlT = oHtmlT; this.oHtmlR = oHtmlR; - this.oUon = oUon; this.oUonT = oUonT; this.oUonR = oUonR; - this.oUrlEncoding = oUrlEncoding; this.oUrlEncodingT = oUrlEncodingT; this.oUrlEncodingR = oUrlEncodingR; - this.oMsgPack = oMsgPack; this.oMsgPackT = oMsgPackT; - this.oRdfXml = oRdfXml; this.oRdfXmlT = oRdfXmlT; this.oRdfXmlR = oRdfXmlR; - } - - private void testSerialize(String testName, Serializer s, String expected) throws Exception { - try { - boolean isRdf = s instanceof RdfSerializer; - - if ((isRdf && SKIP_RDF_TESTS) || expected.isEmpty() || ! runTestsSet.contains(testName) ) { - System.err.println(label + "/" + testName + " for "+s.getClass().getSimpleName()+" skipped."); - return; - } - - String r = s.isWriterSerializer() ? ((WriterSerializer)s).serialize(in) : ((OutputStreamSerializer)s).serializeToHex(in); - - // Can't control RdfSerializer output well, so manually remove namespace declarations - // double-quotes with single-quotes, and spaces with tabs. - // Also because RDF sucks really bad and can't be expected to produce consistent testable results, - // we must also do an expensive sort-then-compare operation to verify the results. - if (isRdf) - r = r.replaceAll("<rdf:RDF[^>]*>", "<rdf:RDF>").replace('"', '\''); - - // Specifying "xxx" in the expected results will spit out what we should populate the field with. - if (expected.equals("xxx")) { - System.out.println(label + "/" + testName + "=\n" + r.replaceAll("\n", "\\\\n").replaceAll("\t", "\\\\t")); // NOT DEBUG - System.out.println(r); - } - - if (isRdf) - TestUtils.assertEqualsAfterSort(expected, r, "{0}/{1} parse-normal failed", label, testName); - else - TestUtils.assertEquals(expected, r, "{0}/{1} parse-normal failed", label, testName); - - } catch (AssertionError e) { - throw e; - } catch (Exception e) { - throw new AssertionError(label + "/" + testName + " failed. exception=" + e.getLocalizedMessage()); - } - } - - private void testParse(String testName, Serializer s, Parser p, String expected) throws Exception { - try { - boolean isRdf = s instanceof RdfSerializer; - - if ((isRdf && SKIP_RDF_TESTS) || expected.isEmpty() || ! runTestsSet.contains(testName) ) { - System.err.println(label + "/" + testName + " for "+s.getClass().getSimpleName()+" skipped."); - return; - } - - String r = s.isWriterSerializer() ? ((WriterSerializer)s).serialize(in) : ((OutputStreamSerializer)s).serializeToHex(in); - Object o = p.parse(r, in == null ? Object.class : in.getClass()); - r = s.isWriterSerializer() ? ((WriterSerializer)s).serialize(o) : ((OutputStreamSerializer)s).serializeToHex(o); - - if (isRdf) - r = r.replaceAll("<rdf:RDF[^>]*>", "<rdf:RDF>").replace('"', '\''); - - if (isRdf) - TestUtils.assertEqualsAfterSort(expected, r, "{0}/{1} parse-normal failed", label, testName); - else - TestUtils.assertEquals(expected, r, "{0}/{1} parse-normal failed", label, testName); - - } catch (AssertionError e) { - throw e; - } catch (Exception e) { - throw new Exception(label + "/" + testName + " failed.", e); - } - } - - private void testParseJsonEquivalency(String testName, OutputStreamSerializer s, InputStreamParser p, String expected) throws Exception { - try { - String r = s.serializeToHex(in); - Object o = p.parse(r, in == null ? Object.class : in.getClass()); - r = sJson.serialize(o); - assertEquals(label + "/" + testName + " parse-normal failed on JSON equivalency", expected, r); - } catch (AssertionError e) { - throw e; - } catch (Exception e) { - throw new Exception(label + "/" + testName + " failed.", e); - } - } - - //-------------------------------------------------------------------------------- - // JSON - //-------------------------------------------------------------------------------- - WriterSerializer sJson = JsonSerializer.DEFAULT_LAX; - ReaderParser pJson = JsonParser.DEFAULT; - - @Test - public void serializeJson() throws Exception { - testSerialize("serializeJson", sJson, oJson); - } - - @Test - public void parseJson() throws Exception { - testParse("parseJson", sJson, pJson, oJson); - } - - //-------------------------------------------------------------------------------- - // JSON - 't' property - //-------------------------------------------------------------------------------- - WriterSerializer sJsonT = JsonSerializer.DEFAULT_LAX.clone().setBeanTypePropertyName("t"); - ReaderParser pJsonT = JsonParser.DEFAULT.clone().setBeanTypePropertyName("t"); - - @Test - public void serializeJsonT() throws Exception { - testSerialize("serializeJsonT", sJsonT, oJsonT); - } - - @Test - public void parseJsonT() throws Exception { - testParse("parseJsonT", sJsonT, pJsonT, oJsonT); - } - - //-------------------------------------------------------------------------------- - // JSON - Readable - //-------------------------------------------------------------------------------- - WriterSerializer sJsonR = JsonSerializer.DEFAULT_LAX_READABLE; - ReaderParser pJsonR = JsonParser.DEFAULT; - - @Test - public void serializeJsonR() throws Exception { - testSerialize("serializeJsonR", sJsonR, oJsonR); - } - - @Test - public void parseJsonR() throws Exception { - testParse("parseJsonR", sJsonR, pJsonR, oJsonR); - } - - //-------------------------------------------------------------------------------- - // XML - //-------------------------------------------------------------------------------- - WriterSerializer sXml = XmlSerializer.DEFAULT_SQ; - ReaderParser pXml = XmlParser.DEFAULT; - - @Test - public void serializeXml() throws Exception { - testSerialize("serializeXml", sXml, oXml); - } - - @Test - public void parseXml() throws Exception { - testParse("parseXml", sXml, pXml, oXml); - } - - //-------------------------------------------------------------------------------- - // XML - 't' property - //-------------------------------------------------------------------------------- - WriterSerializer sXmlT = XmlSerializer.DEFAULT_SQ.clone().setBeanTypePropertyName("t"); - ReaderParser pXmlT = XmlParser.DEFAULT.clone().setBeanTypePropertyName("t"); - - @Test - public void serializeXmlT() throws Exception { - testSerialize("serializeXmlT", sXmlT, oXmlT); - } - - @Test - public void parseXmlT() throws Exception { - testParse("parseXmlT", sXmlT, pXmlT, oXmlT); - } - - //-------------------------------------------------------------------------------- - // XML - Readable - //-------------------------------------------------------------------------------- - WriterSerializer sXmlR = XmlSerializer.DEFAULT_SQ_READABLE; - ReaderParser pXmlR = XmlParser.DEFAULT; - - @Test - public void serializeXmlR() throws Exception { - testSerialize("serializeXmlR", sXmlR, oXmlR); - } - - @Test - public void parseXmlR() throws Exception { - testParse("parseXmlR", sXmlR, pXmlR, oXmlR); - } - - //-------------------------------------------------------------------------------- - // XML - Namespaces - //-------------------------------------------------------------------------------- - WriterSerializer sXmlNs = XmlSerializer.DEFAULT_NS_SQ; - ReaderParser pXmlNs = XmlParser.DEFAULT; - - @Test - public void serializeXmlNs() throws Exception { - testSerialize("serializeXmlNs", sXmlNs, oXmlNs); - } - - @Test - public void parseXmlNs() throws Exception { - testParse("parseXmlNs", sXmlNs, pXmlNs, oXmlNs); - } - - //-------------------------------------------------------------------------------- - // HTML - //-------------------------------------------------------------------------------- - WriterSerializer sHtml = HtmlSerializer.DEFAULT_SQ; - ReaderParser pHtml = HtmlParser.DEFAULT; - - @Test - public void serializeHtml() throws Exception { - testSerialize("serializeHtml", sHtml, oHtml); - } - - @Test - public void parseHtml() throws Exception { - testParse("parseHtml", sHtml, pHtml, oHtml); - } - - //-------------------------------------------------------------------------------- - // HTML - 't' property - //-------------------------------------------------------------------------------- - WriterSerializer sHtmlT = HtmlSerializer.DEFAULT_SQ.clone().setBeanTypePropertyName("t"); - ReaderParser pHtmlT = HtmlParser.DEFAULT.clone().setBeanTypePropertyName("t"); - - @Test - public void serializeHtmlT() throws Exception { - testSerialize("serializeHtmlT", sHtmlT, oHtmlT); - } - - @Test - public void parseHtmlT() throws Exception { - testParse("parseHtmlT", sHtmlT, pHtmlT, oHtmlT); - } - - //-------------------------------------------------------------------------------- - // HTML - Readable - //-------------------------------------------------------------------------------- - WriterSerializer sHtmlR = HtmlSerializer.DEFAULT_SQ_READABLE; - ReaderParser pHtmlR = HtmlParser.DEFAULT; - - @Test - public void serializeHtmlR() throws Exception { - testSerialize("serializeHtmlR", sHtmlR, oHtmlR); - } - - @Test - public void parseHtmlR() throws Exception { - testParse("parseHtmlR", sHtmlR, pHtmlR, oHtmlR); - } - - //-------------------------------------------------------------------------------- - // UON - //-------------------------------------------------------------------------------- - WriterSerializer sUon = UonSerializer.DEFAULT; - ReaderParser pUon = UonParser.DEFAULT; - - @Test - public void serializeUon() throws Exception { - testSerialize("serializeUon", sUon, oUon); - } - - @Test - public void parseUon() throws Exception { - testParse("parseUon", sUon, pUon, oUon); - } - - //-------------------------------------------------------------------------------- - // UON - 't' property - //-------------------------------------------------------------------------------- - WriterSerializer sUonT = UonSerializer.DEFAULT.clone().setBeanTypePropertyName("t"); - ReaderParser pUonT = UonParser.DEFAULT.clone().setBeanTypePropertyName("t"); - - @Test - public void serializeUonT() throws Exception { - testSerialize("serializeUonT", sUonT, oUonT); - } - - @Test - public void parseUonT() throws Exception { - testParse("parseUonT", sUonT, pUonT, oUonT); - } - - //-------------------------------------------------------------------------------- - // UON - Readable - //-------------------------------------------------------------------------------- - WriterSerializer sUonR = UonSerializer.DEFAULT_READABLE; - ReaderParser pUonR = UonParser.DEFAULT; - - @Test - public void serializeUonR() throws Exception { - testSerialize("serializeUonR", sUonR, oUonR); - } - - @Test - public void parseUonR() throws Exception { - testParse("parseUonR", sUonR, pUonR, oUonR); - } - - //-------------------------------------------------------------------------------- - // UrlEncoding - //-------------------------------------------------------------------------------- - WriterSerializer sUrlEncoding = UrlEncodingSerializer.DEFAULT; - ReaderParser pUrlEncoding = UrlEncodingParser.DEFAULT; - - @Test - public void serializeUrlEncoding() throws Exception { - testSerialize("serializeUrlEncoding", sUrlEncoding, oUrlEncoding); - } - - @Test - public void parseUrlEncoding() throws Exception { - testParse("parseUrlEncoding", sUrlEncoding, pUrlEncoding, oUrlEncoding); - } - - //-------------------------------------------------------------------------------- - // UrlEncoding - 't' property - //-------------------------------------------------------------------------------- - WriterSerializer sUrlEncodingT = UrlEncodingSerializer.DEFAULT.clone().setBeanTypePropertyName("t"); - ReaderParser pUrlEncodingT = UrlEncodingParser.DEFAULT.clone().setBeanTypePropertyName("t"); - - @Test - public void serializeUrlEncodingT() throws Exception { - testSerialize("serializeUrlEncodingT", sUrlEncodingT, oUrlEncodingT); - } - - @Test - public void parseUrlEncodingT() throws Exception { - testParse("parseUrlEncodingT", sUrlEncodingT, pUrlEncodingT, oUrlEncodingT); - } - - //-------------------------------------------------------------------------------- - // UrlEncoding - Readable - //-------------------------------------------------------------------------------- - WriterSerializer sUrlEncodingR = UrlEncodingSerializer.DEFAULT_READABLE; - ReaderParser pUrlEncodingR = UrlEncodingParser.DEFAULT; - - @Test - public void serializeUrlEncodingR() throws Exception { - testSerialize("serializeUrlEncodingR", sUrlEncodingR, oUrlEncodingR); - } - - @Test - public void parseUrlEncodingR() throws Exception { - testParse("parseUrlEncodingR", sUrlEncodingR, pUrlEncodingR, oUrlEncodingR); - } - - //-------------------------------------------------------------------------------- - // MsgPack - //-------------------------------------------------------------------------------- - OutputStreamSerializer sMsgPack = MsgPackSerializer.DEFAULT; - InputStreamParser pMsgPack = MsgPackParser.DEFAULT; - - @Test - public void serializeMsgPack() throws Exception { - testSerialize("serializeMsgPack", sMsgPack, oMsgPack); - } - - @Test - public void parseMsgPack() throws Exception { - testParse("parseMsgPack", sMsgPack, pMsgPack, oMsgPack); - } - - @Test - public void parseMsgPackJsonEquivalency() throws Exception { - testParseJsonEquivalency("parseMsgPackJsonEquivalency", sMsgPack, pMsgPack, oJson); - } - - //-------------------------------------------------------------------------------- - // MsgPack - 't' property - //-------------------------------------------------------------------------------- - OutputStreamSerializer sMsgPackT = MsgPackSerializer.DEFAULT.clone().setBeanTypePropertyName("t"); - InputStreamParser pMsgPackT = MsgPackParser.DEFAULT.clone().setBeanTypePropertyName("t"); - - @Test - public void serializeMsgPackT() throws Exception { - testSerialize("serializeMsgPackT", sMsgPackT, oMsgPackT); - } - - @Test - public void parseMsgPackT() throws Exception { - testParse("parseMsgPackT", sMsgPackT, pMsgPackT, oMsgPackT); - } - - @Test - public void parseMsgPackTJsonEquivalency() throws Exception { - testParseJsonEquivalency("parseMsgPackTJsonEquivalency", sMsgPackT, pMsgPackT, oJson); - } - - //-------------------------------------------------------------------------------- - // RdfXml - //-------------------------------------------------------------------------------- - WriterSerializer sRdfXml = RdfSerializer.DEFAULT_XMLABBREV; - ReaderParser pRdfXml = RdfParser.DEFAULT_XML; - - @Test - public void serializeRdfXml() throws Exception { - testSerialize("serializeRdfXml", sRdfXml, oRdfXml); - } - - @Test - public void parseRdfXml() throws Exception { - testParse("parseRdfXml", sRdfXml, pRdfXml, oRdfXml); - } - - //-------------------------------------------------------------------------------- - // RdfXml - 't' property - //-------------------------------------------------------------------------------- - WriterSerializer sRdfXmlT = RdfSerializer.DEFAULT_XMLABBREV.clone().setBeanTypePropertyName("t"); - ReaderParser pRdfXmlT = RdfParser.DEFAULT_XML.clone().setBeanTypePropertyName("t"); - - @Test - public void serializeRdfXmlT() throws Exception { - testSerialize("serializeRdfXmlT", sRdfXmlT, oRdfXmlT); - } - - @Test - public void parseRdfXmlT() throws Exception { - testParse("parseRdfXmlT", sRdfXmlT, pRdfXmlT, oRdfXmlT); - } - - //-------------------------------------------------------------------------------- - // RdfXml - Readable - //-------------------------------------------------------------------------------- - WriterSerializer sRdfXmlR = RdfSerializer.DEFAULT_XMLABBREV.clone().setUseWhitespace(true); - ReaderParser pRdfXmlR = RdfParser.DEFAULT_XML; - - @Test - public void serializeRdfXmlR() throws Exception { - testSerialize("serializeRdfXmlR", sRdfXmlR, oRdfXmlR); - } - - @Test - public void parseRdfXmlR() throws Exception { - testParse("parseRdfXmlR", sRdfXmlR, pRdfXmlR, oRdfXmlR); - } -} http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/0d70804d/juneau-core-test/src/test/java/org/apache/juneau/dto/html5/Html5ComboTest.java ---------------------------------------------------------------------- diff --git a/juneau-core-test/src/test/java/org/apache/juneau/dto/html5/Html5ComboTest.java b/juneau-core-test/src/test/java/org/apache/juneau/dto/html5/Html5ComboTest.java index cc5e6dc..3614fad 100755 --- a/juneau-core-test/src/test/java/org/apache/juneau/dto/html5/Html5ComboTest.java +++ b/juneau-core-test/src/test/java/org/apache/juneau/dto/html5/Html5ComboTest.java @@ -16,7 +16,7 @@ import static org.apache.juneau.dto.html5.HtmlBuilder.*; import java.util.*; -import org.apache.juneau.dto.ComboTest; +import org.apache.juneau.ComboTest; import org.junit.runner.*; import org.junit.runners.*; http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/0d70804d/juneau-core-test/src/test/java/org/apache/juneau/dto/html5/Html5TemplateComboTest.java ---------------------------------------------------------------------- diff --git a/juneau-core-test/src/test/java/org/apache/juneau/dto/html5/Html5TemplateComboTest.java b/juneau-core-test/src/test/java/org/apache/juneau/dto/html5/Html5TemplateComboTest.java index ad04afb..cf9ad84 100644 --- a/juneau-core-test/src/test/java/org/apache/juneau/dto/html5/Html5TemplateComboTest.java +++ b/juneau-core-test/src/test/java/org/apache/juneau/dto/html5/Html5TemplateComboTest.java @@ -17,8 +17,8 @@ import static org.apache.juneau.dto.html5.HtmlBuilder.*; import java.util.*; import org.apache.juneau.BeanSession; +import org.apache.juneau.ComboTest; import org.apache.juneau.annotation.Bean; -import org.apache.juneau.dto.ComboTest; import org.junit.runner.*; import org.junit.runners.*; http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/0d70804d/juneau-core-test/src/test/java/org/apache/juneau/transforms/CalendarSwapComboTest.java ---------------------------------------------------------------------- diff --git a/juneau-core-test/src/test/java/org/apache/juneau/transforms/CalendarSwapComboTest.java b/juneau-core-test/src/test/java/org/apache/juneau/transforms/CalendarSwapComboTest.java new file mode 100644 index 0000000..0da8c2a --- /dev/null +++ b/juneau-core-test/src/test/java/org/apache/juneau/transforms/CalendarSwapComboTest.java @@ -0,0 +1,577 @@ +// *************************************************************************************************************************** +// * 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 java.util.Arrays; +import java.util.Calendar; +import java.util.Collection; +import java.util.GregorianCalendar; +import java.util.Locale; +import java.util.TimeZone; + +import org.apache.juneau.ComboTest; +import org.apache.juneau.ObjectMap; +import org.apache.juneau.TestUtils; +import org.apache.juneau.parser.Parser; +import org.apache.juneau.serializer.Serializer; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; + +/** + * Exhaustive serialization tests for the CalendarSwap class. + */ +@RunWith(Parameterized.class) +@SuppressWarnings({"javadoc"}) +public class CalendarSwapComboTest extends ComboTest { + + 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[][] { + { + "CalendarSwap.ToString/singleDate", + 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", + }, + { + "CalendarSwap.ToString/dateArray", + 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 */ "_value=@('Sun+Mar+03+10:11:12+PST+1901')", + /* UrlEncT */ "_value=@('Sun+Mar+03+10:11:12+PST+1901')", + /* UrlEncR */ "_value=@(\n\t'Sun+Mar+03+10:11:12+PST+1901'\n)", + /* 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", + }, + { + "CalendarSwap.ToString", + 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", + }, + { + "CalendarSwap.ISO8601DT/singleDate", + 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", + }, + { + "CalendarSwap.ISO8601DT/dateArray", + 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 */ "_value=@(1901-03-03T10:11:12-08:00)", + /* UrlEncT */ "_value=@(1901-03-03T10:11:12-08:00)", + /* UrlEncR */ "_value=@(\n\t1901-03-03T10:11:12-08:00\n)", + /* 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", + }, + { + "CalendarSwap.ISO8601DT/dateMap", + 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", + }, + { + "CalendarSwap.RFC2822DTZ/singleDate", + 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", + }, + { + "CalendarSwap.RFC2822DTZ/dateArray", + 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 */ "_value=@('Sun,+03+Mar+1901+18:11:12+GMT')", + /* UrlEncT */ "_value=@('Sun,+03+Mar+1901+18:11:12+GMT')", + /* UrlEncR */ "_value=@(\n\t'Sun,+03+Mar+1901+18:11:12+GMT'\n)", + /* 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", + }, + { + "CalendarSwap.RFC2822DTZ/dateMap", + 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", + }, + { + "CalendarLongSwap", + 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", + }, + { + "CalendarLongSwap/dateArray", + 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 */ "_value=@(-2172116928000)", + /* UrlEncT */ "_value=@(-2172116928000)", + /* UrlEncR */ "_value=@(\n\t-2172116928000\n)", + /* 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", + }, + { + "CalendarLongSwap/dateMap", + 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", + }, + { + "CalendarMapSwap/singleDate", + 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", + }, + { + "CalendarMapSwap/dateArray", + 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 */ "_value=@((time=-2172116928000,timeZone=PST))", + /* UrlEncT */ "_value=@((time=-2172116928000,timeZone=PST))", + /* UrlEncR */ "_value=@(\n\t(\n\t\ttime=-2172116928000,\n\t\ttimeZone=PST\n\t)\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", + }, + { + "CalendarMapSwap/dateMap", + 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", + }, + { + "CalendarSwap.DateMedium/singleDate", + 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", + }, + { + "CalendarSwap.DateMedium/dateArray", + 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 */ "_value=@('Mar+3,+1901')", + /* UrlEncT */ "_value=@('Mar+3,+1901')", + /* UrlEncR */ "_value=@(\n\t'Mar+3,+1901'\n)", + /* 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", + }, + { + "CalendarSwap.DateMedium/dateMap", + 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", + }, + }); + } + + private Class<?> swapClass; + + public CalendarSwapComboTest( + String label, + Object in, + Class<?> swapClass, + String oJson, String oJsonT, String oJsonR, + String oXml, String oXmlT, String oXmlR, String oXmlNs, + String oHtml, String oHtmlT, String oHtmlR, + String oUon, String oUonT, String oUonR, + String oUrlEncoding, String oUrlEncodingT, String oUrlEncodingR, + String oMsgPack, String oMsgPackT, + String oRdfXml, String oRdfXmlT, String oRdfXmlR + ) { + super( + label, + in, + oJson, oJsonT, oJsonR, + oXml, oXmlT, oXmlR, oXmlNs, + oHtml, oHtmlT, oHtmlR, + oUon, oUonT, oUonR, + oUrlEncoding, oUrlEncodingT, oUrlEncodingR, + oMsgPack, oMsgPackT, + oRdfXml, oRdfXmlT, oRdfXmlR + ); + 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 { + if (s.isLocked()) + s = s.clone(); + return s.addPojoSwaps(swapClass); + } + + @Override + protected Parser applySettings(Parser p) throws Exception { + if (p.isLocked()) + p = p.clone(); + return p.addPojoSwaps(swapClass); + } +}
