001: //
002: // Informa -- RSS Library for Java
003: // Copyright (c) 2002-2003 by Niko Schmuck
004: //
005: // Niko Schmuck
006: // http://sourceforge.net/projects/informa
007: // mailto:niko_schmuck@users.sourceforge.net
008: //
009: // This library is free software.
010: //
011: // You may redistribute it and/or modify it under the terms of the GNU
012: // Lesser General Public License as published by the Free Software Foundation.
013: //
014: // Version 2.1 of the license should be included with this distribution in
015: // the file LICENSE. If the license is not included with this distribution,
016: // you may find a copy at the FSF web site at 'www.gnu.org' or 'www.fsf.org',
017: // or you may write to the Free Software Foundation, 675 Mass Ave, Cambridge,
018: // MA 02139 USA.
019: //
020: // This library is distributed in the hope that it will be useful,
021: // but WITHOUT ANY WARRANTY; without even the implied waranty of
022: // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
023: // Lesser General Public License for more details.
024: //
025:
026: // $Id: TestParserUtils.java,v 1.7 2005/03/10 11:40:24 spyromus Exp $
027:
028: package de.nava.informa.utils;
029:
030: import org.jdom.input.SAXBuilder;
031: import org.jdom.Document;
032: import org.jdom.Element;
033:
034: import java.util.Calendar;
035: import java.util.Date;
036: import java.util.GregorianCalendar;
037: import java.util.TimeZone;
038: import java.util.List;
039: import java.io.StringReader;
040:
041: public class TestParserUtils extends InformaTestCase {
042:
043: public TestParserUtils(String name) {
044: super ("TestParserUtils", name);
045: }
046:
047: public void testParseDateFmt() {
048: String strdate;
049: Date resDate;
050: Calendar expDate;
051:
052: strdate = "Wed, 07 Aug 2002 00:32:05 GMT";
053: resDate = ParserUtils.getDate(strdate);
054: expDate = new GregorianCalendar(TimeZone.getTimeZone("GMT"));
055: expDate.set(2002, Calendar.AUGUST, 7, 0, 32, 5);
056: expDate.set(Calendar.MILLISECOND, 0);
057: assertEquals(expDate.getTime(), resDate);
058:
059: strdate = "Tue, 21 Dec 2004 23:02 +0100";
060: resDate = ParserUtils.getDate(strdate);
061: expDate = new GregorianCalendar(TimeZone.getTimeZone("GMT"));
062: expDate.set(2004, Calendar.DECEMBER, 21, 22, 02, 00);
063: expDate.set(Calendar.MILLISECOND, 0);
064: assertEquals(expDate.getTime(), resDate);
065:
066: strdate = "2002-08-07T15:32:05-0500 ";
067: resDate = ParserUtils.getDate(strdate);
068: expDate = new GregorianCalendar(TimeZone.getTimeZone("GMT"));
069: expDate.set(2002, Calendar.AUGUST, 7, 20, 32, 5);
070: expDate.set(Calendar.MILLISECOND, 0);
071: assertEquals(expDate.getTime(), resDate);
072:
073: strdate = "2002-08-07T15:32:05-05:00 ";
074: resDate = ParserUtils.getDate(strdate);
075: expDate = new GregorianCalendar(TimeZone.getTimeZone("GMT"));
076: expDate.set(2002, Calendar.AUGUST, 7, 20, 32, 5);
077: expDate.set(Calendar.MILLISECOND, 0);
078: assertEquals(expDate.getTime(), resDate);
079:
080: strdate = "2002-08-07T12:32:05+03:00 ";
081: resDate = ParserUtils.getDate(strdate);
082: expDate = new GregorianCalendar(TimeZone.getTimeZone("GMT"));
083: expDate.set(2002, Calendar.AUGUST, 7, 9, 32, 5);
084: expDate.set(Calendar.MILLISECOND, 0);
085: assertEquals(expDate.getTime(), resDate);
086:
087: strdate = "2002-08-07T12:32:05 GMT";
088: resDate = ParserUtils.getDate(strdate);
089: expDate = new GregorianCalendar(TimeZone.getTimeZone("GMT"));
090: expDate.set(2002, Calendar.AUGUST, 7, 12, 32, 5);
091: expDate.set(Calendar.MILLISECOND, 0);
092: assertEquals(expDate.getTime(), resDate);
093:
094: strdate = "2002-08-07T12:32:05 RET";
095: resDate = ParserUtils.getDate(strdate);
096: expDate = new GregorianCalendar(TimeZone.getTimeZone("GMT"));
097: expDate.set(2002, Calendar.AUGUST, 7, 8, 32, 5); // Reunion Time = GMT+4
098: expDate.set(Calendar.MILLISECOND, 0);
099: assertEquals(expDate.getTime(), resDate);
100:
101: strdate = "2002-08-07T12:32:05Z";
102: resDate = ParserUtils.getDate(strdate);
103: expDate = new GregorianCalendar(TimeZone.getTimeZone("GMT"));
104: expDate.set(2002, Calendar.AUGUST, 7, 12, 32, 5);
105: expDate.set(Calendar.MILLISECOND, 0);
106: assertEquals(expDate.getTime(), resDate);
107:
108: strdate = "2002-08-07T12:32:05+3:00 ";
109: resDate = ParserUtils.getDate(strdate);
110: expDate = new GregorianCalendar(TimeZone.getTimeZone("GMT"));
111: expDate.set(2002, Calendar.AUGUST, 7, 9, 32, 5);
112: expDate.set(Calendar.MILLISECOND, 0);
113: assertEquals(expDate.getTime(), resDate);
114:
115: strdate = "2002-08-07T06:32:05-3:00 ";
116: resDate = ParserUtils.getDate(strdate);
117: expDate = new GregorianCalendar(TimeZone.getTimeZone("GMT"));
118: expDate.set(2002, Calendar.AUGUST, 7, 9, 32, 5);
119: expDate.set(Calendar.MILLISECOND, 0);
120: assertEquals(expDate.getTime(), resDate);
121:
122: strdate = "2002-08-07T12:32:05GMT-02:00";
123: resDate = ParserUtils.getDate(strdate);
124: expDate = new GregorianCalendar(TimeZone.getTimeZone("GMT"));
125: expDate.set(2002, Calendar.AUGUST, 7, 14, 32, 5);
126: expDate.set(Calendar.MILLISECOND, 0);
127: assertEquals(expDate.getTime(), resDate);
128: }
129:
130: public void testUnescape() {
131: String testString = "&gt; > " < '";
132: //System.err.println(" decoded version = "+ParserUtils.unEscape(testString));
133: assertEquals("> > \" < '", ParserUtils.unEscape(testString));
134: }
135:
136: /**
137: * Tests how the case of child-tags is converted.
138: *
139: * @throws Exception in case of any error.
140: */
141: public void testMatchCaseOfChildren() throws Exception {
142: String test1 = "<a>" + "<Bb><C></C></Bb>" + "<D></D>"
143: + "<E></E>" + "<BB></BB>" + "<bb></bb>" + "</a>";
144:
145: SAXBuilder builder = new SAXBuilder();
146: Document doc = builder.build(new StringReader(test1));
147: Element root = doc.getRootElement();
148: List elements;
149:
150: elements = root.getChildren();
151: assertEquals(5, elements.size());
152: assertEquals("Bb", ((Element) elements.get(0)).getName());
153: assertEquals("D", ((Element) elements.get(1)).getName());
154: assertEquals("E", ((Element) elements.get(2)).getName());
155: assertEquals("BB", ((Element) elements.get(3)).getName());
156: assertEquals("bb", ((Element) elements.get(4)).getName());
157:
158: ParserUtils.matchCaseOfChildren(root,
159: new String[] { "bB", "e" });
160:
161: elements = root.getChildren();
162: assertEquals(5, elements.size());
163: assertEquals("bB", ((Element) elements.get(0)).getName());
164: assertEquals("D", ((Element) elements.get(1)).getName());
165: assertEquals("e", ((Element) elements.get(2)).getName());
166: assertEquals("bB", ((Element) elements.get(3)).getName());
167: assertEquals("bB", ((Element) elements.get(4)).getName());
168: }
169: }
|