/////////////////////////////////////////////////////////////////////////////
//
// Project ProjectForge Community Edition
// www.projectforge.org
//
// Copyright (C) 2001-2014 Kai Reinhard (k.reinhard@micromata.de)
//
// ProjectForge is dual-licensed.
//
// This community edition is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License as published
// by the Free Software Foundation; version 3 of the License.
//
// This community edition is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
// Public License for more details.
//
// You should have received a copy of the GNU General Public License along
// with this program; if not, see http://www.gnu.org/licenses/.
//
/////////////////////////////////////////////////////////////////////////////
package org.projectforge.xml.stream;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import java.util.Calendar;
import java.util.Locale;
import java.util.TimeZone;
import org.junit.BeforeClass;
import org.junit.Test;
import org.projectforge.common.DateHelper;
import org.projectforge.common.DateHolder;
import org.projectforge.test.TestConfiguration;
import org.projectforge.user.PFUserContext;
import org.projectforge.user.PFUserDO;
import org.projectforge.xml.stream.converter.DateConverter;
import org.projectforge.xml.stream.converter.ISODateConverter;
import org.projectforge.xml.stream.converter.LocaleConverter;
import org.projectforge.xml.stream.converter.TimeZoneConverter;
public class ConverterTest
{
@BeforeClass
public static void setUp() throws Exception
{
TestConfiguration.initAsTestConfiguration();
}
@Test
public void testIsoDateConverter()
{
final DateConverter dateConverter = new DateConverter();
final ISODateConverter isoDateConverter = new ISODateConverter();
final PFUserDO cetUser = new PFUserDO();
cetUser.setTimeZone(DateHelper.EUROPE_BERLIN);
PFUserContext.setUser(cetUser); // login CET user.
DateHolder dh = new DateHolder();
dh.setDate(2010, Calendar.AUGUST, 29, 23, 8, 17, 123);
assertEquals("1283116097123", dateConverter.toString(dh.getDate()));
assertEquals("2010-08-29 23:08:17.123", isoDateConverter.toString(dh.getDate()));
assertEquals("2010-08-29 23:08:17", isoDateConverter.toString(dh.setMilliSecond(0).getDate()));
assertEquals("2010-08-29 23:08", isoDateConverter.toString(dh.setSecond(0).getDate()));
assertEquals("2010-08-29 23:00", isoDateConverter.toString(dh.setMinute(0).getDate()));
assertEquals("2010-08-29", isoDateConverter.toString(dh.setHourOfDay(0).getDate()));
final PFUserDO utcUser = new PFUserDO();
utcUser.setTimeZone(DateHelper.UTC);
PFUserContext.setUser(utcUser); // login UTC user.
dh = new DateHolder(DateHelper.UTC);
dh.setDate(2010, Calendar.AUGUST, 29, 23, 8, 17, 123);
assertEquals("2010-08-29 23:08:17.123", isoDateConverter.toString(dh.getDate()));
}
@Test
public void testTimeZone()
{
writeReadAndAssert((TimeZone) null, null);
writeReadAndAssert(DateHelper.UTC, "UTC");
writeReadAndAssert(DateHelper.EUROPE_BERLIN, "Europe/Berlin");
}
private void writeReadAndAssert(final TimeZone timeZone, final String id)
{
final TimeZoneConverter converter = new TimeZoneConverter();
final String str = converter.toString(timeZone);
assertEquals(id, str);
final TimeZone tz = converter.fromString(str);
if (id == null) {
assertNull(tz);
} else {
assertEquals(id, tz.getID());
}
}
@Test
public void testLocale()
{
writeReadAndAssert((Locale) null, null);
writeReadAndAssert(new Locale("DE"), "de");
writeReadAndAssert(new Locale("DE_de"), "de_de");
}
private void writeReadAndAssert(final Locale locale, final String id)
{
final LocaleConverter converter = new LocaleConverter();
final String str = converter.toString(locale);
assertEquals(id, str);
final Locale l = converter.fromString(str);
if (id == null) {
assertNull(l);
} else {
assertEquals(id, l.toString());
}
}
}