001: package org.ontoware.rdfreactor.runtime.converter;
002:
003: import java.text.DateFormat;
004: import java.text.SimpleDateFormat;
005: import java.util.Calendar;
006: import java.util.Locale;
007: import java.util.TimeZone;
008:
009: import junit.framework.TestCase;
010:
011: import org.junit.Assert;
012: import org.junit.Test;
013: import org.ontoware.rdf2go.RDF2Go;
014: import org.ontoware.rdf2go.model.Model;
015: import org.ontoware.rdfreactor.runtime.converter.CalendarConverter;
016: import org.slf4j.Logger;
017: import org.slf4j.LoggerFactory;
018:
019: public class CalendarConverterTest extends TestCase {
020:
021: Logger log = LoggerFactory.getLogger(CalendarConverterTest.class);
022:
023: /*
024: * Test method for
025: * 'org.ontoware.rdfreactor.runtime.DatatypeUtils.parseXSDDateTime(String)'
026: */
027: public void testParseXSDDateTime() {
028:
029: assertDate("2006-12-07T00:00:00", 2006, 12, 07, 0, 0, 0);
030: // with timezone
031: assertDate("1999-05-31T13:20:00-05:00", 1999, 05, 31, 18, 20, 0);
032: assertDate("1999-05-31T13:20:00Z", 1999, 05, 31, 13, 20, 0);
033: assertDate("1999-05-31T13:20:00+01:00", 1999, 05, 31, 12, 20, 0);
034:
035: }
036:
037: @Test
038: public void testXsdDateTime() {
039:
040: Model m = RDF2Go.getModelFactory().createModel();
041: m.open();
042: int year = 2005;
043: int month = 9;
044: int date = 5;
045: int hrs = 20;
046: int min = 59;
047: int sec = 12;
048:
049: Calendar cal = Calendar
050: .getInstance(TimeZone.getTimeZone("UCT"));
051: cal.set(year, month - 1, date, hrs, min, sec);
052:
053: String encoded = CalendarConverter
054: .encodeCalendar_toXSDDateTime(cal);
055: log.info("Cal = " + formatDate(cal) + " encoded as " + encoded);
056:
057: assertDate(encoded, year, month, date, hrs, min, sec);
058:
059: log.debug("as xsd:date: " + encoded);
060:
061: Calendar returnCal = CalendarConverter
062: .parseXSDDateTime_toCalendar(encoded);
063: log.debug("returnCal = "
064: + SimpleDateFormat.getInstance().format(
065: returnCal.getTime()));
066:
067: Assert.assertEquals("year", cal.get(Calendar.YEAR), returnCal
068: .get(Calendar.YEAR));
069: Assert.assertEquals("month", cal.get(Calendar.MONTH), returnCal
070: .get(Calendar.MONTH));
071: Assert.assertEquals("day of month", cal
072: .get(Calendar.DAY_OF_MONTH), returnCal
073: .get(Calendar.DAY_OF_MONTH));
074: Assert.assertEquals("hours", cal.get(Calendar.HOUR_OF_DAY),
075: returnCal.get(Calendar.HOUR_OF_DAY));
076: Assert.assertEquals("minutes", cal.get(Calendar.MINUTE),
077: returnCal.get(Calendar.MINUTE));
078: Assert.assertEquals("seconds", cal.get(Calendar.SECOND),
079: returnCal.get(Calendar.SECOND));
080:
081: }
082:
083: public String formatDate(Calendar cal) {
084: DateFormat df = DateFormat.getDateTimeInstance(DateFormat.LONG,
085: DateFormat.LONG, Locale.GERMANY);
086: df.setTimeZone(TimeZone.getTimeZone("UTC"));
087: String result = df.format(cal.getTime()) + " in timezone "
088: + cal.getTimeZone().getID();
089: return result;
090: }
091:
092: public void assertDate(String datestring, int year, int month,
093: int day, int h, int m, int s) {
094: Calendar c = CalendarConverter
095: .parseXSDDateTime_toCalendar(datestring);
096: log.info("Parsed '" + datestring + "' to " + formatDate(c));
097:
098: assertEquals("year", year, c.get(Calendar.YEAR));
099: assertEquals("month", month - 1, c.get(Calendar.MONTH));
100: assertEquals("day of month", day, c.get(Calendar.DAY_OF_MONTH));
101: assertEquals("hours", h, c.get(Calendar.HOUR_OF_DAY));
102: assertEquals("minutes", m, c.get(Calendar.MINUTE));
103: assertEquals("seconds", s, c.get(Calendar.SECOND));
104: }
105:
106: }
|