bug 59805: add unit test for LocaleUtil#getLocaleCalendar

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1751629 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Javen O'Neal 2016-07-06 08:52:40 +00:00
parent 076b9b600d
commit 83e27bd10c

View File

@ -20,20 +20,35 @@ package org.apache.poi.util;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertNotEquals;
import java.util.Calendar;
import java.util.Locale; import java.util.Locale;
import java.util.TimeZone; import java.util.TimeZone;
import org.junit.Before;
import org.junit.Test; import org.junit.Test;
public class TestLocaleUtil { public class TestLocaleUtil {
private static final Locale ja_JP = Locale.JAPAN; private static final Locale ja_JP = Locale.JAPAN;
private static final TimeZone TOKYO = TimeZone.getTimeZone("Asia/Tokyo"); private static final TimeZone TOKYO = TimeZone.getTimeZone("Asia/Tokyo");
private static final Calendar JAPAN_CALENDAR = Calendar.getInstance(TOKYO, ja_JP);
@Before
public void setUp() {
// clear the user locale and time zone so that tests do not interfere with each other
// the other way and better way would be to run each test in its own thread since
// LocaleUtil uses per-thread settings.
// Helpful, but not ASL 2.0 licensed:
// http://www.codeaffine.com/2014/07/21/a-junit-rule-to-run-a-test-in-its-own-thread/
LocaleUtil.setUserLocale(Locale.GERMANY);
LocaleUtil.setUserTimeZone(TimeZone.getTimeZone("Europe/Berlin"));
}
@Test @Test
@SuppressForbidden("implementation around default locales in POI") @SuppressForbidden("implementation around default locales in POI")
public void userLocale() { public void userLocale() {
Locale DEFAULT_LOCALE = LocaleUtil.getUserLocale(); Locale DEFAULT_LOCALE = LocaleUtil.getUserLocale();
assertEquals(DEFAULT_LOCALE, LocaleUtil.getUserLocale()); assertEquals(DEFAULT_LOCALE, LocaleUtil.getUserLocale());
assertNotEquals(ja_JP, LocaleUtil.getUserLocale()); assertNotEquals(ja_JP, LocaleUtil.getUserLocale());
@ -52,4 +67,33 @@ public class TestLocaleUtil {
LocaleUtil.setUserTimeZone(TOKYO); LocaleUtil.setUserTimeZone(TOKYO);
assertEquals(TOKYO, LocaleUtil.getUserTimeZone()); assertEquals(TOKYO, LocaleUtil.getUserTimeZone());
} }
@Test
@SuppressForbidden("implementation around default locales in POI")
public void localeCalendar() {
Locale DEFAULT_LOCALE = LocaleUtil.getUserLocale();
TimeZone DEFAULT_TIME_ZONE = LocaleUtil.getUserTimeZone();
Calendar DEFAULT_CALENDAR = LocaleUtil.getLocaleCalendar();
assertEquals(DEFAULT_LOCALE, LocaleUtil.getUserLocale());
assertEquals(DEFAULT_TIME_ZONE, LocaleUtil.getUserTimeZone());
assertCalendarEquals(DEFAULT_CALENDAR, LocaleUtil.getLocaleCalendar());
assertNotEquals(ja_JP, LocaleUtil.getUserLocale());
assertNotEquals(TOKYO, LocaleUtil.getUserTimeZone());
assertCalendarNotEquals(JAPAN_CALENDAR, LocaleUtil.getLocaleCalendar());
LocaleUtil.setUserLocale(ja_JP);
LocaleUtil.setUserTimeZone(TOKYO);
assertCalendarEquals(JAPAN_CALENDAR, LocaleUtil.getLocaleCalendar());
// FIXME: These might affect the time zone due to daylight savings:
//assertCalendarEquals(JAPAN_CALENDAR, LocaleUtil.getLocaleCalendar(2016, 01, 01));
//assertCalendarEquals(JAPAN_CALENDAR, LocaleUtil.getLocaleCalendar(2016, 01, 01, 00, 00, 00));
}
private static void assertCalendarNotEquals(Calendar expected, Calendar actual) {
assertNotEquals("time zone", expected.getTimeZone(), actual.getTimeZone());
}
private static void assertCalendarEquals(Calendar expected, Calendar actual) {
assertEquals("time zone", expected.getTimeZone(), actual.getTimeZone());
}
} }