blob: 348ac7b5f58ed7d2dd5fe78f3f0e4e24e707014d [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2014, 2015 Dirk Fauth and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Dirk Fauth <dirk.fauth@googlemail.com> - initial API and implementation
* Lars Vogel <Lars.Vogel@vogella.com> - Bug 474274
******************************************************************************/
package org.eclipse.e4.core.internal.tests.nls;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import java.util.Locale;
import javax.inject.Inject;
import org.eclipse.e4.core.contexts.ContextInjectionFactory;
import org.eclipse.e4.core.contexts.EclipseContextFactory;
import org.eclipse.e4.core.contexts.IEclipseContext;
import org.eclipse.e4.core.internal.tests.CoreTestsActivator;
import org.eclipse.e4.core.services.nls.Translation;
import org.eclipse.e4.core.services.translation.TranslationService;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
public class NLSTest {
static class TestSimpleObject {
@Inject
@Translation
SimpleMessages simpleMessages;
}
static class TestMessagesObject {
@Inject
@Translation
Messages Messages;
}
static class TestBundleObject {
@Inject
@Translation
BundleMessages bundleMessages;
}
static class TestResourceBundleClassObject {
@Inject
@Translation
ResourceBundleClassMessages bundleClassMessages;
}
static class TestResourcesBundleObject {
@Inject
@Translation
ResourcesMessages resourcesMessages;
}
private IEclipseContext context;
private Locale beforeLocale;
@Before
public void setUp() {
this.context = EclipseContextFactory.getServiceContext(CoreTestsActivator.getDefault().getBundleContext());
ContextInjectionFactory.setDefault(context);
beforeLocale = Locale.getDefault();
//always set the locale to en prior a test case
Locale.setDefault(new Locale("en"));
}
@After
public void tearDown() {
Locale.setDefault(beforeLocale);
}
@Test
public void testSimpleMessages() {
//ensure the en Locale is set for this test
this.context.set(TranslationService.LOCALE, Locale.ENGLISH);
TestSimpleObject o = ContextInjectionFactory.make(TestSimpleObject.class, this.context);
SimpleMessages messages = o.simpleMessages;
//test all values are set
assertNotNull(messages);
assertNotNull(messages.message);
assertNotNull(messages.message_one);
assertNotNull(messages.messageOne);
assertNotNull(messages.message_two);
assertNotNull(messages.messageThree);
assertNotNull(messages.messageFour);
assertNotNull(messages.messageFive_Sub);
assertNotNull(messages.messageSix_Sub);
assertNotNull(messages.messageSeven_Sub);
assertNotNull(messages.messageEight_Sub);
assertNotNull(messages.messageNine_Sub);
//test the set values
assertEquals("SimpleMessage", messages.message);
assertEquals("SimpleMessageUnderscore", messages.message_one);
assertEquals("SimpleMessageCamelCase", messages.messageOne);
assertEquals("SimpleMessageUnderscoreDot", messages.message_two);
assertEquals("SimpleMessageCamelCaseDot", messages.messageThree);
assertEquals("The idea is from Tom", messages.messageFour);
assertEquals("SimpleMessageCamelCaseAndUnderscoreOriginal", messages.messageFive_Sub);
assertEquals("SimpleMessageCamelCaseAndUnderscoreDeCamelCasified", messages.messageSix_Sub);
assertEquals("SimpleMessageCamelCaseAndUnderscoreDeCamelCasifiedAndDeUnderscorified", messages.messageSeven_Sub);
assertEquals("SimpleMessageCamelCaseAndUnderscoreDeUnderscorified", messages.messageEight_Sub);
assertEquals("SimpleMessageCamelCaseAndUnderscoreDeUnderscorifiedAndDeCamelCasified", messages.messageNine_Sub);
}
@Test
public void testSimpleMessagesDifferentLocale() {
//set Locale to de
this.context.set(TranslationService.LOCALE, Locale.GERMAN);
TestSimpleObject o = ContextInjectionFactory.make(TestSimpleObject.class, this.context);
SimpleMessages messages = o.simpleMessages;
//test all values are set
assertNotNull(messages);
assertNotNull(messages.message);
assertNotNull(messages.message_one);
assertNotNull(messages.messageOne);
assertNotNull(messages.message_two);
assertNotNull(messages.messageThree);
assertNotNull(messages.messageFour);
assertNotNull(messages.messageFive_Sub);
assertNotNull(messages.messageSix_Sub);
assertNotNull(messages.messageSeven_Sub);
assertNotNull(messages.messageEight_Sub);
assertNotNull(messages.messageNine_Sub);
//test the set values
assertEquals("SimpleNachricht", messages.message);
assertEquals("SimpleNachrichtUnderscore", messages.message_one);
assertEquals("SimpleNachrichtCamelCase", messages.messageOne);
assertEquals("SimpleNachrichtUnderscoreDot", messages.message_two);
//for messageThree there is no key specified in de properties file, so there should be the fallback
assertEquals("SimpleMessageCamelCaseDot", messages.messageThree);
assertEquals("Die Idee ist von Tom", messages.messageFour);
assertEquals("SimpleNachrichtCamelCaseAndUnderscoreOriginal", messages.messageFive_Sub);
assertEquals("SimpleNachrichtCamelCaseAndUnderscoreDeCamelCasified", messages.messageSix_Sub);
assertEquals("SimpleNachrichtCamelCaseAndUnderscoreDeCamelCasifiedAndDeUnderscorified",
messages.messageSeven_Sub);
assertEquals("SimpleNachrichtCamelCaseAndUnderscoreDeUnderscorified", messages.messageEight_Sub);
assertEquals("SimpleNachrichtCamelCaseAndUnderscoreDeUnderscorifiedAndDeCamelCasified",
messages.messageNine_Sub);
}
@Test
public void testSimpleMessagesSkipDefaultLocaleForEquinoxRoot() {
//change the default Locale for this testcase
Locale.setDefault(new Locale("de"));
//set the locale to en
//as there is no _en properties file, by default the _de properties file would be loaded and we would
//get german translations as the default locale is set to "de_DE"
//with checking the equinox.root.locale in the system properties the fallback is skipped as it tells
//that the root properties file is for locale en.
this.context.set(TranslationService.LOCALE, Locale.ENGLISH);
TestSimpleObject o = ContextInjectionFactory.make(TestSimpleObject.class, this.context);
SimpleMessages messages = o.simpleMessages;
//test all values are set
assertNotNull(messages);
assertNotNull(messages.message);
assertNotNull(messages.message_one);
assertNotNull(messages.messageOne);
assertNotNull(messages.message_two);
assertNotNull(messages.messageThree);
assertNotNull(messages.messageFour);
assertNotNull(messages.messageFive_Sub);
assertNotNull(messages.messageSix_Sub);
assertNotNull(messages.messageSeven_Sub);
assertNotNull(messages.messageEight_Sub);
assertNotNull(messages.messageNine_Sub);
//not the default resource bundle should be used (e.g. de when running on a machine with german OS)
//but the default resource bundle
assertEquals("SimpleMessage", messages.message);
assertEquals("SimpleMessageUnderscore", messages.message_one);
assertEquals("SimpleMessageCamelCase", messages.messageOne);
assertEquals("SimpleMessageUnderscoreDot", messages.message_two);
assertEquals("SimpleMessageCamelCaseDot", messages.messageThree);
assertEquals("The idea is from Tom", messages.messageFour);
assertEquals("SimpleMessageCamelCaseAndUnderscoreOriginal", messages.messageFive_Sub);
assertEquals("SimpleMessageCamelCaseAndUnderscoreDeCamelCasified", messages.messageSix_Sub);
assertEquals("SimpleMessageCamelCaseAndUnderscoreDeCamelCasifiedAndDeUnderscorified", messages.messageSeven_Sub);
assertEquals("SimpleMessageCamelCaseAndUnderscoreDeUnderscorified", messages.messageEight_Sub);
assertEquals("SimpleMessageCamelCaseAndUnderscoreDeUnderscorifiedAndDeCamelCasified", messages.messageNine_Sub);
}
@Test
public void testSimpleMessagesUseDefaultLocaleForInvalidLocale() {
//change the default Locale for this testcase
Locale.setDefault(new Locale("de"));
//set a locale for which no resource bundle is set
this.context.set(TranslationService.LOCALE, Locale.FRENCH);
TestSimpleObject o = ContextInjectionFactory.make(TestSimpleObject.class, this.context);
SimpleMessages messages = o.simpleMessages;
//test all values are set
assertNotNull(messages);
assertNotNull(messages.message);
assertNotNull(messages.message_one);
assertNotNull(messages.messageOne);
assertNotNull(messages.message_two);
assertNotNull(messages.messageThree);
assertNotNull(messages.messageFour);
assertNotNull(messages.messageFive_Sub);
assertNotNull(messages.messageSix_Sub);
assertNotNull(messages.messageSeven_Sub);
assertNotNull(messages.messageEight_Sub);
assertNotNull(messages.messageNine_Sub);
//the default resource bundle should be used
assertEquals("SimpleNachricht", messages.message);
assertEquals("SimpleNachrichtUnderscore", messages.message_one);
assertEquals("SimpleNachrichtCamelCase", messages.messageOne);
assertEquals("SimpleNachrichtUnderscoreDot", messages.message_two);
//for messageThree there is no key specified in de properties file, so there should be the fallback
assertEquals("SimpleMessageCamelCaseDot", messages.messageThree);
assertEquals("Die Idee ist von Tom", messages.messageFour);
assertEquals("SimpleNachrichtCamelCaseAndUnderscoreOriginal", messages.messageFive_Sub);
assertEquals("SimpleNachrichtCamelCaseAndUnderscoreDeCamelCasified", messages.messageSix_Sub);
assertEquals("SimpleNachrichtCamelCaseAndUnderscoreDeCamelCasifiedAndDeUnderscorified",
messages.messageSeven_Sub);
assertEquals("SimpleNachrichtCamelCaseAndUnderscoreDeUnderscorified", messages.messageEight_Sub);
assertEquals("SimpleNachrichtCamelCaseAndUnderscoreDeUnderscorifiedAndDeCamelCasified",
messages.messageNine_Sub);
}
@Test
public void testMessages() {
//ensure the en Locale is set for this test
this.context.set(TranslationService.LOCALE, Locale.ENGLISH);
TestMessagesObject o = ContextInjectionFactory.make(TestMessagesObject.class, this.context);
Messages messages = o.Messages;
//test all values are set
assertNotNull(messages);
assertNotNull(messages.message);
assertNotNull(messages.message_one);
assertNotNull(messages.messageOne);
assertNotNull(messages.message_two);
assertNotNull(messages.messageThree);
assertNotNull(messages.messageFour);
assertNotNull(messages.messageFive_Sub);
assertNotNull(messages.messageSix_Sub);
assertNotNull(messages.messageSeven_Sub);
assertNotNull(messages.messageEight_Sub);
assertNotNull(messages.messageNine_Sub);
//test the set values
assertEquals("Message", messages.message);
assertEquals("MessageUnderscore", messages.message_one);
assertEquals("MessageCamelCase", messages.messageOne);
assertEquals("MessageUnderscoreDot", messages.message_two);
assertEquals("MessageCamelCaseDot", messages.messageThree);
assertEquals("The idea is from Tom", messages.messageFour);
assertEquals("MessageCamelCaseAndUnderscoreOriginal", messages.messageFive_Sub);
assertEquals("MessageCamelCaseAndUnderscoreDeCamelCasified", messages.messageSix_Sub);
assertEquals("MessageCamelCaseAndUnderscoreDeCamelCasifiedAndDeUnderscorified", messages.messageSeven_Sub);
assertEquals("MessageCamelCaseAndUnderscoreDeUnderscorified", messages.messageEight_Sub);
assertEquals("MessageCamelCaseAndUnderscoreDeUnderscorifiedAndDeCamelCasified", messages.messageNine_Sub);
}
@Test
public void testMessagesDifferentLocale() {
//set Locale to de
this.context.set(TranslationService.LOCALE, Locale.GERMAN);
TestMessagesObject o = ContextInjectionFactory.make(TestMessagesObject.class, this.context);
Messages messages = o.Messages;
//test all values are set
assertNotNull(messages);
assertNotNull(messages.message);
assertNotNull(messages.message_one);
assertNotNull(messages.messageOne);
assertNotNull(messages.message_two);
assertNotNull(messages.messageThree);
assertNotNull(messages.messageFour);
assertNotNull(messages.messageFive_Sub);
assertNotNull(messages.messageSix_Sub);
assertNotNull(messages.messageSeven_Sub);
assertNotNull(messages.messageEight_Sub);
assertNotNull(messages.messageNine_Sub);
//test the set values
assertEquals("Nachricht", messages.message);
assertEquals("NachrichtUnderscore", messages.message_one);
assertEquals("NachrichtCamelCase", messages.messageOne);
assertEquals("NachrichtUnderscoreDot", messages.message_two);
//for messageThree there is no key specified in de properties file, so there should be the fallback
assertEquals("MessageCamelCaseDot", messages.messageThree);
assertEquals("Die Idee ist von Tom", messages.messageFour);
assertEquals("NachrichtCamelCaseAndUnderscoreOriginal", messages.messageFive_Sub);
assertEquals("NachrichtCamelCaseAndUnderscoreDeCamelCasified", messages.messageSix_Sub);
assertEquals("NachrichtCamelCaseAndUnderscoreDeCamelCasifiedAndDeUnderscorified",
messages.messageSeven_Sub);
assertEquals("NachrichtCamelCaseAndUnderscoreDeUnderscorified", messages.messageEight_Sub);
assertEquals("NachrichtCamelCaseAndUnderscoreDeUnderscorifiedAndDeCamelCasified",
messages.messageNine_Sub);
}
@Test
public void testMessagesSkipDefaultLocaleForEquinoxRoot() {
//change the default Locale for this testcase
Locale.setDefault(new Locale("de"));
//set the locale to en
//as there is no _en properties file, by default the _de properties file would be loaded and we would
//get german translations as the default locale is set to "de_DE"
//with checking the equinox.root.locale in the system properties the fallback is skipped as it tells
//that the root properties file is for locale en.
this.context.set(TranslationService.LOCALE, Locale.ENGLISH);
TestMessagesObject o = ContextInjectionFactory.make(TestMessagesObject.class, this.context);
Messages messages = o.Messages;
//test all values are set
assertNotNull(messages);
assertNotNull(messages.message);
assertNotNull(messages.message_one);
assertNotNull(messages.messageOne);
assertNotNull(messages.message_two);
assertNotNull(messages.messageThree);
assertNotNull(messages.messageFour);
assertNotNull(messages.messageFive_Sub);
assertNotNull(messages.messageSix_Sub);
assertNotNull(messages.messageSeven_Sub);
assertNotNull(messages.messageEight_Sub);
assertNotNull(messages.messageNine_Sub);
//not the default resource bundle should be used (e.g. de when running on a machine with german OS)
//but the default resource bundle
assertEquals("Message", messages.message);
assertEquals("MessageUnderscore", messages.message_one);
assertEquals("MessageCamelCase", messages.messageOne);
assertEquals("MessageUnderscoreDot", messages.message_two);
assertEquals("MessageCamelCaseDot", messages.messageThree);
assertEquals("The idea is from Tom", messages.messageFour);
assertEquals("MessageCamelCaseAndUnderscoreOriginal", messages.messageFive_Sub);
assertEquals("MessageCamelCaseAndUnderscoreDeCamelCasified", messages.messageSix_Sub);
assertEquals("MessageCamelCaseAndUnderscoreDeCamelCasifiedAndDeUnderscorified", messages.messageSeven_Sub);
assertEquals("MessageCamelCaseAndUnderscoreDeUnderscorified", messages.messageEight_Sub);
assertEquals("MessageCamelCaseAndUnderscoreDeUnderscorifiedAndDeCamelCasified", messages.messageNine_Sub);
}
@Test
public void testMessagesUseDefaultLocaleForInvalidLocale() {
//change the default Locale for this testcase
Locale.setDefault(new Locale("de"));
//set a locale for which no resource bundle is set
this.context.set(TranslationService.LOCALE, Locale.FRENCH);
TestMessagesObject o = ContextInjectionFactory.make(TestMessagesObject.class, this.context);
Messages messages = o.Messages;
//test all values are set
assertNotNull(messages);
assertNotNull(messages.message);
assertNotNull(messages.message_one);
assertNotNull(messages.messageOne);
assertNotNull(messages.message_two);
assertNotNull(messages.messageThree);
assertNotNull(messages.messageFour);
assertNotNull(messages.messageFive_Sub);
assertNotNull(messages.messageSix_Sub);
assertNotNull(messages.messageSeven_Sub);
assertNotNull(messages.messageEight_Sub);
assertNotNull(messages.messageNine_Sub);
//the default resource bundle should be used
assertEquals("Nachricht", messages.message);
assertEquals("NachrichtUnderscore", messages.message_one);
assertEquals("NachrichtCamelCase", messages.messageOne);
assertEquals("NachrichtUnderscoreDot", messages.message_two);
//for messageThree there is no key specified in de properties file, so there should be the fallback
assertEquals("MessageCamelCaseDot", messages.messageThree);
assertEquals("Die Idee ist von Tom", messages.messageFour);
assertEquals("NachrichtCamelCaseAndUnderscoreOriginal", messages.messageFive_Sub);
assertEquals("NachrichtCamelCaseAndUnderscoreDeCamelCasified", messages.messageSix_Sub);
assertEquals("NachrichtCamelCaseAndUnderscoreDeCamelCasifiedAndDeUnderscorified",
messages.messageSeven_Sub);
assertEquals("NachrichtCamelCaseAndUnderscoreDeUnderscorified", messages.messageEight_Sub);
assertEquals("NachrichtCamelCaseAndUnderscoreDeUnderscorifiedAndDeCamelCasified",
messages.messageNine_Sub);
}
@Test
public void testBundleMessages() {
//ensure the en Locale is set for this test
this.context.set(TranslationService.LOCALE, Locale.ENGLISH);
TestBundleObject o = ContextInjectionFactory.make(TestBundleObject.class, this.context);
BundleMessages messages = o.bundleMessages;
//test all values are set
assertNotNull(messages);
assertNotNull(messages.message);
assertNotNull(messages.message_one);
assertNotNull(messages.messageOne);
assertNotNull(messages.message_two);
assertNotNull(messages.messageThree);
assertNotNull(messages.messageFour);
assertNotNull(messages.messageFive_Sub);
assertNotNull(messages.messageSix_Sub);
assertNotNull(messages.messageSeven_Sub);
assertNotNull(messages.messageEight_Sub);
assertNotNull(messages.messageNine_Sub);
//test the set values
assertEquals("BundleMessage", messages.message);
assertEquals("BundleMessageUnderscore", messages.message_one);
assertEquals("BundleMessageCamelCase", messages.messageOne);
assertEquals("BundleMessageUnderscoreDot", messages.message_two);
assertEquals("BundleMessageCamelCaseDot", messages.messageThree);
assertEquals("The idea is from Tom", messages.messageFour);
assertEquals("BundleMessageCamelCaseAndUnderscoreOriginal", messages.messageFive_Sub);
assertEquals("BundleMessageCamelCaseAndUnderscoreDeCamelCasified", messages.messageSix_Sub);
assertEquals("BundleMessageCamelCaseAndUnderscoreDeCamelCasifiedAndDeUnderscorified", messages.messageSeven_Sub);
assertEquals("BundleMessageCamelCaseAndUnderscoreDeUnderscorified", messages.messageEight_Sub);
assertEquals("BundleMessageCamelCaseAndUnderscoreDeUnderscorifiedAndDeCamelCasified", messages.messageNine_Sub);
}
@Test
public void testBundleMessagesDifferentLocale() {
//set Locale to de
this.context.set(TranslationService.LOCALE, Locale.GERMAN);
TestBundleObject o = ContextInjectionFactory.make(TestBundleObject.class, this.context);
BundleMessages messages = o.bundleMessages;
//test all values are set
assertNotNull(messages);
assertNotNull(messages.message);
assertNotNull(messages.message_one);
assertNotNull(messages.messageOne);
assertNotNull(messages.message_two);
assertNotNull(messages.messageThree);
assertNotNull(messages.messageFour);
assertNotNull(messages.messageFive_Sub);
assertNotNull(messages.messageSix_Sub);
assertNotNull(messages.messageSeven_Sub);
assertNotNull(messages.messageEight_Sub);
assertNotNull(messages.messageNine_Sub);
//test the set values
assertEquals("BundleNachricht", messages.message);
assertEquals("BundleNachrichtUnderscore", messages.message_one);
assertEquals("BundleNachrichtCamelCase", messages.messageOne);
assertEquals("BundleNachrichtUnderscoreDot", messages.message_two);
//for messageThree there is no key specified in de properties file, so there should be the fallback
assertEquals("BundleMessageCamelCaseDot", messages.messageThree);
assertEquals("Die Idee ist von Tom", messages.messageFour);
assertEquals("BundleNachrichtCamelCaseAndUnderscoreOriginal", messages.messageFive_Sub);
assertEquals("BundleNachrichtCamelCaseAndUnderscoreDeCamelCasified", messages.messageSix_Sub);
assertEquals("BundleNachrichtCamelCaseAndUnderscoreDeCamelCasifiedAndDeUnderscorified",
messages.messageSeven_Sub);
assertEquals("BundleNachrichtCamelCaseAndUnderscoreDeUnderscorified", messages.messageEight_Sub);
assertEquals("BundleNachrichtCamelCaseAndUnderscoreDeUnderscorifiedAndDeCamelCasified",
messages.messageNine_Sub);
}
@Test
public void testBundleMessagesSkipDefaultLocaleForEquinoxRoot() {
//change the default Locale for this testcase
Locale.setDefault(new Locale("de"));
//set the locale to en
//as there is no _en properties file, by default the _de properties file would be loaded and we would
//get german translations as the default locale is set to "de_DE"
//with checking the equinox.root.locale in the system properties the fallback is skipped as it tells
//that the root properties file is for locale en.
this.context.set(TranslationService.LOCALE, Locale.ENGLISH);
TestBundleObject o = ContextInjectionFactory.make(TestBundleObject.class, this.context);
BundleMessages messages = o.bundleMessages;
//test all values are set
assertNotNull(messages);
assertNotNull(messages.message);
assertNotNull(messages.message_one);
assertNotNull(messages.messageOne);
assertNotNull(messages.message_two);
assertNotNull(messages.messageThree);
assertNotNull(messages.messageFour);
assertNotNull(messages.messageFive_Sub);
assertNotNull(messages.messageSix_Sub);
assertNotNull(messages.messageSeven_Sub);
assertNotNull(messages.messageEight_Sub);
assertNotNull(messages.messageNine_Sub);
//not the default resource bundle should be used (e.g. de when running on a machine with german OS)
//but the default resource bundle
assertEquals("BundleMessage", messages.message);
assertEquals("BundleMessageUnderscore", messages.message_one);
assertEquals("BundleMessageCamelCase", messages.messageOne);
assertEquals("BundleMessageUnderscoreDot", messages.message_two);
assertEquals("BundleMessageCamelCaseDot", messages.messageThree);
assertEquals("The idea is from Tom", messages.messageFour);
assertEquals("BundleMessageCamelCaseAndUnderscoreOriginal", messages.messageFive_Sub);
assertEquals("BundleMessageCamelCaseAndUnderscoreDeCamelCasified", messages.messageSix_Sub);
assertEquals("BundleMessageCamelCaseAndUnderscoreDeCamelCasifiedAndDeUnderscorified", messages.messageSeven_Sub);
assertEquals("BundleMessageCamelCaseAndUnderscoreDeUnderscorified", messages.messageEight_Sub);
assertEquals("BundleMessageCamelCaseAndUnderscoreDeUnderscorifiedAndDeCamelCasified", messages.messageNine_Sub);
}
@Test
public void testBundleMessagesUseDefaultLocaleForInvalidLocale() {
//change the default Locale for this testcase
Locale.setDefault(new Locale("de"));
//set a locale for which no resource bundle is set
this.context.set(TranslationService.LOCALE, Locale.FRENCH);
TestBundleObject o = ContextInjectionFactory.make(TestBundleObject.class, this.context);
BundleMessages messages = o.bundleMessages;
//test all values are set
assertNotNull(messages);
assertNotNull(messages.message);
assertNotNull(messages.message_one);
assertNotNull(messages.messageOne);
assertNotNull(messages.message_two);
assertNotNull(messages.messageThree);
assertNotNull(messages.messageFour);
assertNotNull(messages.messageFive_Sub);
assertNotNull(messages.messageSix_Sub);
assertNotNull(messages.messageSeven_Sub);
assertNotNull(messages.messageEight_Sub);
assertNotNull(messages.messageNine_Sub);
//the default resource bundle should be used
assertEquals("BundleNachricht", messages.message);
assertEquals("BundleNachrichtUnderscore", messages.message_one);
assertEquals("BundleNachrichtCamelCase", messages.messageOne);
assertEquals("BundleNachrichtUnderscoreDot", messages.message_two);
//for messageThree there is no key specified in de properties file, so there should be the fallback
assertEquals("BundleMessageCamelCaseDot", messages.messageThree);
assertEquals("Die Idee ist von Tom", messages.messageFour);
assertEquals("BundleNachrichtCamelCaseAndUnderscoreOriginal", messages.messageFive_Sub);
assertEquals("BundleNachrichtCamelCaseAndUnderscoreDeCamelCasified", messages.messageSix_Sub);
assertEquals("BundleNachrichtCamelCaseAndUnderscoreDeCamelCasifiedAndDeUnderscorified",
messages.messageSeven_Sub);
assertEquals("BundleNachrichtCamelCaseAndUnderscoreDeUnderscorified", messages.messageEight_Sub);
assertEquals("BundleNachrichtCamelCaseAndUnderscoreDeUnderscorifiedAndDeCamelCasified",
messages.messageNine_Sub);
}
@Test
public void testClassBasedResourceBundle() {
//ensure the en Locale is set for this test
this.context.set(TranslationService.LOCALE, Locale.ENGLISH);
TestResourceBundleClassObject o = ContextInjectionFactory.make(TestResourceBundleClassObject.class, this.context);
ResourceBundleClassMessages messages = o.bundleClassMessages;
//test all values are set
assertNotNull(messages);
assertNotNull(messages.message);
assertNotNull(messages.message_one);
assertNotNull(messages.messageOne);
assertNotNull(messages.message_two);
assertNotNull(messages.messageThree);
assertNotNull(messages.messageFour);
assertNotNull(messages.messageFive_Sub);
assertNotNull(messages.messageSix_Sub);
assertNotNull(messages.messageSeven_Sub);
assertNotNull(messages.messageEight_Sub);
assertNotNull(messages.messageNine_Sub);
//test the set values
assertEquals("ResourceBundleClassMessage", messages.message);
assertEquals("ResourceBundleClassMessageUnderscore", messages.message_one);
assertEquals("ResourceBundleClassMessageCamelCase", messages.messageOne);
assertEquals("ResourceBundleClassMessageUnderscoreDot", messages.message_two);
assertEquals("ResourceBundleClassCamelCaseDot", messages.messageThree);
assertEquals("The idea is from Tom", messages.messageFour);
assertEquals("ResourceBundleClassMessageCamelCaseAndUnderscoreOriginal", messages.messageFive_Sub);
assertEquals("ResourceBundleClassMessageCamelCaseAndUnderscoreDeCamelCasified", messages.messageSix_Sub);
assertEquals("ResourceBundleClassMessageCamelCaseAndUnderscoreDeCamelCasifiedAndDeUnderscorified",
messages.messageSeven_Sub);
assertEquals("ResourceBundleClassMessageCamelCaseAndUnderscoreDeUnderscorified", messages.messageEight_Sub);
assertEquals("ResourceBundleClassMessageCamelCaseAndUnderscoreDeUnderscorifiedAndDeCamelCasified",
messages.messageNine_Sub);
}
@Test
public void testClassBasedResourceBundleDifferentLocale() {
//set Locale to de
this.context.set(TranslationService.LOCALE, Locale.GERMAN);
TestResourceBundleClassObject o = ContextInjectionFactory.make(TestResourceBundleClassObject.class, this.context);
ResourceBundleClassMessages messages = o.bundleClassMessages;
//test all values are set
assertNotNull(messages);
assertNotNull(messages.message);
assertNotNull(messages.message_one);
assertNotNull(messages.messageOne);
assertNotNull(messages.message_two);
assertNotNull(messages.messageThree);
assertNotNull(messages.messageFour);
assertNotNull(messages.messageFive_Sub);
assertNotNull(messages.messageSix_Sub);
assertNotNull(messages.messageSeven_Sub);
assertNotNull(messages.messageEight_Sub);
assertNotNull(messages.messageNine_Sub);
//test the set values
assertEquals("ResourceBundleClassNachricht", messages.message);
assertEquals("ResourceBundleClassNachrichtUnderscore", messages.message_one);
assertEquals("ResourceBundleClassNachrichtCamelCase", messages.messageOne);
assertEquals("ResourceBundleNachrichtMessageUnderscoreDot", messages.message_two);
//for messageThree there is no key specified in de properties file, so there should be the fallback
assertEquals("ResourceBundleClassCamelCaseDot", messages.messageThree);
assertEquals("Die Idee ist von Tom", messages.messageFour);
assertEquals("ResourceBundleClassNachrichtCamelCaseAndUnderscoreOriginal", messages.messageFive_Sub);
assertEquals("ResourceBundleClassNachrichtCamelCaseAndUnderscoreDeCamelCasified", messages.messageSix_Sub);
assertEquals("ResourceBundleClassNachrichtCamelCaseAndUnderscoreDeCamelCasifiedAndDeUnderscorified",
messages.messageSeven_Sub);
assertEquals("ResourceBundleClassNachrichtCamelCaseAndUnderscoreDeUnderscorified", messages.messageEight_Sub);
assertEquals("ResourceBundleClassNachrichtCamelCaseAndUnderscoreDeUnderscorifiedAndDeCamelCasified",
messages.messageNine_Sub);
}
@Test
public void testClassBasedResourceBundleSkipDefaultLocaleForEquinoxRoot() {
//change the default Locale for this testcase
Locale.setDefault(new Locale("de"));
//set the locale to en
//as there is no _en properties file, by default the _de properties file would be loaded and we would
//get german translations as the default locale is set to "de_DE"
//with checking the equinox.root.locale in the system properties the fallback is skipped as it tells
//that the root properties file is for locale en.
this.context.set(TranslationService.LOCALE, Locale.ENGLISH);
TestResourceBundleClassObject o = ContextInjectionFactory.make(TestResourceBundleClassObject.class, this.context);
ResourceBundleClassMessages messages = o.bundleClassMessages;
//test all values are set
assertNotNull(messages);
assertNotNull(messages.message);
assertNotNull(messages.message_one);
assertNotNull(messages.messageOne);
assertNotNull(messages.message_two);
assertNotNull(messages.messageThree);
assertNotNull(messages.messageFour);
assertNotNull(messages.messageFive_Sub);
assertNotNull(messages.messageSix_Sub);
assertNotNull(messages.messageSeven_Sub);
assertNotNull(messages.messageEight_Sub);
assertNotNull(messages.messageNine_Sub);
//not the default resource bundle should be used (e.g. de when running on a machine with german OS)
//but the default resource bundle
assertEquals("ResourceBundleClassMessage", messages.message);
assertEquals("ResourceBundleClassMessageUnderscore", messages.message_one);
assertEquals("ResourceBundleClassMessageCamelCase", messages.messageOne);
assertEquals("ResourceBundleClassMessageUnderscoreDot", messages.message_two);
assertEquals("ResourceBundleClassCamelCaseDot", messages.messageThree);
assertEquals("The idea is from Tom", messages.messageFour);
assertEquals("ResourceBundleClassMessageCamelCaseAndUnderscoreOriginal", messages.messageFive_Sub);
assertEquals("ResourceBundleClassMessageCamelCaseAndUnderscoreDeCamelCasified", messages.messageSix_Sub);
assertEquals("ResourceBundleClassMessageCamelCaseAndUnderscoreDeCamelCasifiedAndDeUnderscorified",
messages.messageSeven_Sub);
assertEquals("ResourceBundleClassMessageCamelCaseAndUnderscoreDeUnderscorified", messages.messageEight_Sub);
assertEquals("ResourceBundleClassMessageCamelCaseAndUnderscoreDeUnderscorifiedAndDeCamelCasified",
messages.messageNine_Sub);
}
@Test
public void testClassBasedResourceBundleUseDefaultLocaleForInvalidLocale() {
//change the default Locale for this testcase
Locale.setDefault(new Locale("de"));
//set a locale for which no resource bundle is set
this.context.set(TranslationService.LOCALE, Locale.FRENCH);
TestResourceBundleClassObject o = ContextInjectionFactory.make(TestResourceBundleClassObject.class, this.context);
ResourceBundleClassMessages messages = o.bundleClassMessages;
//test all values are set
assertNotNull(messages);
assertNotNull(messages.message);
assertNotNull(messages.message_one);
assertNotNull(messages.messageOne);
assertNotNull(messages.message_two);
assertNotNull(messages.messageThree);
assertNotNull(messages.messageFour);
assertNotNull(messages.messageFive_Sub);
assertNotNull(messages.messageSix_Sub);
assertNotNull(messages.messageSeven_Sub);
assertNotNull(messages.messageEight_Sub);
assertNotNull(messages.messageNine_Sub);
//the default resource bundle should be used
assertEquals("ResourceBundleClassNachricht", messages.message);
assertEquals("ResourceBundleClassNachrichtUnderscore", messages.message_one);
assertEquals("ResourceBundleClassNachrichtCamelCase", messages.messageOne);
assertEquals("ResourceBundleNachrichtMessageUnderscoreDot", messages.message_two);
//for messageThree there is no key specified in de properties file, so there should be the fallback
assertEquals("ResourceBundleClassCamelCaseDot", messages.messageThree);
assertEquals("Die Idee ist von Tom", messages.messageFour);
assertEquals("ResourceBundleClassNachrichtCamelCaseAndUnderscoreOriginal", messages.messageFive_Sub);
assertEquals("ResourceBundleClassNachrichtCamelCaseAndUnderscoreDeCamelCasified", messages.messageSix_Sub);
assertEquals("ResourceBundleClassNachrichtCamelCaseAndUnderscoreDeCamelCasifiedAndDeUnderscorified",
messages.messageSeven_Sub);
assertEquals("ResourceBundleClassNachrichtCamelCaseAndUnderscoreDeUnderscorified", messages.messageEight_Sub);
assertEquals("ResourceBundleClassNachrichtCamelCaseAndUnderscoreDeUnderscorifiedAndDeCamelCasified",
messages.messageNine_Sub);
}
@Test
public void testResourcesBundle() {
//ensure the en Locale is set for this test
this.context.set(TranslationService.LOCALE, Locale.ENGLISH);
TestResourcesBundleObject o = ContextInjectionFactory.make(TestResourcesBundleObject.class, this.context);
ResourcesMessages messages = o.resourcesMessages;
//test all values are set
assertNotNull(messages);
assertNotNull(messages.message);
assertNotNull(messages.message_one);
assertNotNull(messages.messageOne);
assertNotNull(messages.message_two);
assertNotNull(messages.messageThree);
assertNotNull(messages.messageFour);
assertNotNull(messages.messageFive_Sub);
assertNotNull(messages.messageSix_Sub);
assertNotNull(messages.messageSeven_Sub);
assertNotNull(messages.messageEight_Sub);
assertNotNull(messages.messageNine_Sub);
//test the set values
assertEquals("ResourcesMessage", messages.message);
assertEquals("ResourcesMessageUnderscore", messages.message_one);
assertEquals("ResourcesMessageCamelCase", messages.messageOne);
assertEquals("ResourcesMessageUnderscoreDot", messages.message_two);
assertEquals("ResourcesMessageCamelCaseDot", messages.messageThree);
assertEquals("The idea is from Tom", messages.messageFour);
assertEquals("ResourcesMessageCamelCaseAndUnderscoreOriginal", messages.messageFive_Sub);
assertEquals("ResourcesMessageCamelCaseAndUnderscoreDeCamelCasified", messages.messageSix_Sub);
assertEquals("ResourcesMessageCamelCaseAndUnderscoreDeCamelCasifiedAndDeUnderscorified",
messages.messageSeven_Sub);
assertEquals("ResourcesMessageCamelCaseAndUnderscoreDeUnderscorified", messages.messageEight_Sub);
assertEquals("ResourcesMessageCamelCaseAndUnderscoreDeUnderscorifiedAndDeCamelCasified",
messages.messageNine_Sub);
}
@Test
public void testResourcesBundleDifferentLocale() {
//set Locale to de
this.context.set(TranslationService.LOCALE, Locale.GERMAN);
TestResourcesBundleObject o = ContextInjectionFactory.make(TestResourcesBundleObject.class, this.context);
ResourcesMessages messages = o.resourcesMessages;
//test all values are set
assertNotNull(messages);
assertNotNull(messages.message);
assertNotNull(messages.message_one);
assertNotNull(messages.messageOne);
assertNotNull(messages.message_two);
assertNotNull(messages.messageThree);
assertNotNull(messages.messageFour);
assertNotNull(messages.messageFive_Sub);
assertNotNull(messages.messageSix_Sub);
assertNotNull(messages.messageSeven_Sub);
assertNotNull(messages.messageEight_Sub);
assertNotNull(messages.messageNine_Sub);
//test the set values
assertEquals("ResourcesNachricht", messages.message);
assertEquals("ResourcesNachrichtUnderscore", messages.message_one);
assertEquals("ResourcesNachrichtCamelCase", messages.messageOne);
assertEquals("ResourcesNachrichtUnderscoreDot", messages.message_two);
//for messageThree there is no key specified in de properties file, so there should be the fallback
assertEquals("ResourcesMessageCamelCaseDot", messages.messageThree);
assertEquals("Die Idee ist von Tom", messages.messageFour);
assertEquals("ResourcesNachrichtCamelCaseAndUnderscoreOriginal", messages.messageFive_Sub);
assertEquals("ResourcesNachrichtCamelCaseAndUnderscoreDeCamelCasified", messages.messageSix_Sub);
assertEquals("ResourcesNachrichtCamelCaseAndUnderscoreDeCamelCasifiedAndDeUnderscorified",
messages.messageSeven_Sub);
assertEquals("ResourcesNachrichtCamelCaseAndUnderscoreDeUnderscorified", messages.messageEight_Sub);
assertEquals("ResourcesNachrichtCamelCaseAndUnderscoreDeUnderscorifiedAndDeCamelCasified",
messages.messageNine_Sub);
}
@Test
public void testResourcesBundleSkipDefaultLocaleForEquinoxRoot() {
//change the default Locale for this testcase
Locale.setDefault(new Locale("de"));
//set the locale to en
//as there is no _en properties file, by default the _de properties file would be loaded and we would
//get german translations as the default locale is set to "de_DE"
//with checking the equinox.root.locale in the system properties the fallback is skipped as it tells
//that the root properties file is for locale en.
this.context.set(TranslationService.LOCALE, Locale.ENGLISH);
TestResourcesBundleObject o = ContextInjectionFactory.make(TestResourcesBundleObject.class, this.context);
ResourcesMessages messages = o.resourcesMessages;
//test all values are set
assertNotNull(messages);
assertNotNull(messages.message);
assertNotNull(messages.message_one);
assertNotNull(messages.messageOne);
assertNotNull(messages.message_two);
assertNotNull(messages.messageThree);
assertNotNull(messages.messageFour);
assertNotNull(messages.messageFive_Sub);
assertNotNull(messages.messageSix_Sub);
assertNotNull(messages.messageSeven_Sub);
assertNotNull(messages.messageEight_Sub);
assertNotNull(messages.messageNine_Sub);
//not the default resource bundle should be used (e.g. de when running on a machine with german OS)
//but the default resource bundle
assertEquals("ResourcesMessage", messages.message);
assertEquals("ResourcesMessageUnderscore", messages.message_one);
assertEquals("ResourcesMessageCamelCase", messages.messageOne);
assertEquals("ResourcesMessageUnderscoreDot", messages.message_two);
assertEquals("ResourcesMessageCamelCaseDot", messages.messageThree);
assertEquals("The idea is from Tom", messages.messageFour);
assertEquals("ResourcesMessageCamelCaseAndUnderscoreOriginal", messages.messageFive_Sub);
assertEquals("ResourcesMessageCamelCaseAndUnderscoreDeCamelCasified", messages.messageSix_Sub);
assertEquals("ResourcesMessageCamelCaseAndUnderscoreDeCamelCasifiedAndDeUnderscorified",
messages.messageSeven_Sub);
assertEquals("ResourcesMessageCamelCaseAndUnderscoreDeUnderscorified", messages.messageEight_Sub);
assertEquals("ResourcesMessageCamelCaseAndUnderscoreDeUnderscorifiedAndDeCamelCasified",
messages.messageNine_Sub);
}
@Test
public void testResourcesBundleUseDefaultLocaleForInvalidLocale() {
//change the default Locale for this testcase
Locale.setDefault(new Locale("de"));
//set a locale for which no resource bundle is set
this.context.set(TranslationService.LOCALE, Locale.FRENCH);
TestResourcesBundleObject o = ContextInjectionFactory.make(TestResourcesBundleObject.class, this.context);
ResourcesMessages messages = o.resourcesMessages;
//test all values are set
assertNotNull(messages);
assertNotNull(messages.message);
assertNotNull(messages.message_one);
assertNotNull(messages.messageOne);
assertNotNull(messages.message_two);
assertNotNull(messages.messageThree);
assertNotNull(messages.messageFour);
assertNotNull(messages.messageFive_Sub);
assertNotNull(messages.messageSix_Sub);
assertNotNull(messages.messageSeven_Sub);
assertNotNull(messages.messageEight_Sub);
assertNotNull(messages.messageNine_Sub);
//the default resource bundle should be used
assertEquals("ResourcesNachricht", messages.message);
assertEquals("ResourcesNachrichtUnderscore", messages.message_one);
assertEquals("ResourcesNachrichtCamelCase", messages.messageOne);
assertEquals("ResourcesNachrichtUnderscoreDot", messages.message_two);
//for messageThree there is no key specified in de properties file, so there should be the fallback
assertEquals("ResourcesMessageCamelCaseDot", messages.messageThree);
assertEquals("Die Idee ist von Tom", messages.messageFour);
assertEquals("ResourcesNachrichtCamelCaseAndUnderscoreOriginal", messages.messageFive_Sub);
assertEquals("ResourcesNachrichtCamelCaseAndUnderscoreDeCamelCasified", messages.messageSix_Sub);
assertEquals("ResourcesNachrichtCamelCaseAndUnderscoreDeCamelCasifiedAndDeUnderscorified",
messages.messageSeven_Sub);
assertEquals("ResourcesNachrichtCamelCaseAndUnderscoreDeUnderscorified", messages.messageEight_Sub);
assertEquals("ResourcesNachrichtCamelCaseAndUnderscoreDeUnderscorifiedAndDeCamelCasified",
messages.messageNine_Sub);
}
}