Index: lutinutil/src/test/org/codelutin/i18n/I18nLoaderTest.java diff -u /dev/null lutinutil/src/test/org/codelutin/i18n/I18nLoaderTest.java:1.1 --- /dev/null Sun Mar 23 06:02:29 2008 +++ lutinutil/src/test/org/codelutin/i18n/I18nLoaderTest.java Sun Mar 23 06:02:24 2008 @@ -0,0 +1,109 @@ +package org.codelutin.i18n; + +import junit.framework.TestCase; + +import java.util.Locale; + +/** + * LanguageManager Tester. + * + * @author chemit + * @version 1.0 + * @since
02/10/2008+ */ +public class I18nLoaderTest extends TestCase { + + String encoding; + Locale locale; + Language language; + I18nLoader loader; + + public I18nLoaderTest(String name) { + super(name); + } + + @Override + protected void setUp() throws Exception { + super.setUp(); + } + + @Override + protected void tearDown() throws Exception { + super.tearDown(); + I18n.close(); + } + + public void testGetLoader() throws Exception { + + assertNull(I18n.loader); + + loader = I18n.getLoader(I18n.DEFAULT_ENCODING); + + assertNotNull(loader); + assertEquals(I18n.DEFAULT_ENCODING, loader.getEncoding()); + assertEquals(I18n.DEFAULT_LOCALE, loader.getDefaultLocale()); + assertNull(loader.getLanguage()); + } + + public void testChangeLocale() throws Exception { + + locale = I18nLoader.newLocale("fr_FR"); + encoding = I18n.ISO_8859_1_ENCONDING; + updateLanguage(); + assertNbLanguages(1); + updateLanguage(); + assertNbLanguages(1); + + locale = I18nLoader.newLocale("en_GB"); + updateLanguage(); + assertLanguageChanged(); + assertNbLanguages(2); + + locale = I18nLoader.newLocale("en_US"); + updateLanguage(); + assertLanguageChanged(); + assertNbLanguages(3); + + locale = I18nLoader.newLocale("en"); + updateLanguage(); + assertLanguageChanged(); + assertNbLanguages(4); + } + + private void assertLanguageChanged() { + assertNotSame(language, loader.getLanguage()); + } + + public void testChangeEncoding() throws Exception { + locale = I18nLoader.newLocale("fr_FR"); + encoding = I18n.ISO_8859_1_ENCONDING; + updateLanguage(); + + locale = I18nLoader.newLocale("en_GB"); + updateLanguage(); + + // language change (from his encoding) + assertLanguageChanged(); + // 2 language in cache + assertNbLanguages(2); + + encoding = I18n.UTF_8_ENCONDING; + updateLanguage(); + // language change (from his encoding) + assertLanguageChanged(); + // one language in cache + assertNbLanguages(1); + + } + + protected void assertNbLanguages(int i) { + assertEquals(i, loader.getLanguages().size()); + } + + protected void updateLanguage() { + language = loader == null ? null : loader.getLanguage(); + loader = I18n.getLoader(encoding); + loader.setLanguage(locale); + } + +} \ No newline at end of file