From: Javen O'Neal Date: Wed, 6 Jul 2016 08:52:40 +0000 (+0000) Subject: bug 59805: add unit test for LocaleUtil#getLocaleCalendar X-Git-Tag: REL_3_15_BETA3~177 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=0bcacb5d475be5945dd34c5fbd3a23e1abca71c0;p=poi.git 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 --- diff --git a/src/testcases/org/apache/poi/util/TestLocaleUtil.java b/src/testcases/org/apache/poi/util/TestLocaleUtil.java index 6a1a762827..ddd3cab7a8 100644 --- a/src/testcases/org/apache/poi/util/TestLocaleUtil.java +++ b/src/testcases/org/apache/poi/util/TestLocaleUtil.java @@ -20,20 +20,35 @@ package org.apache.poi.util; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotEquals; +import java.util.Calendar; import java.util.Locale; import java.util.TimeZone; +import org.junit.Before; import org.junit.Test; public class TestLocaleUtil { private static final Locale ja_JP = Locale.JAPAN; 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 @SuppressForbidden("implementation around default locales in POI") public void userLocale() { Locale DEFAULT_LOCALE = LocaleUtil.getUserLocale(); + assertEquals(DEFAULT_LOCALE, LocaleUtil.getUserLocale()); assertNotEquals(ja_JP, LocaleUtil.getUserLocale()); @@ -52,4 +67,33 @@ public class TestLocaleUtil { LocaleUtil.setUserTimeZone(TOKYO); 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()); + } }