package rabbitescape.engine.i18n; import static org.hamcrest.CoreMatchers.*; import static org.hamcrest.MatcherAssert.*; import java.util.Locale; import org.junit.Test; import rabbitescape.engine.i18n.Translation; public class TestTranslation { @Test public void Unknown_bundle_means_key_is_returned() { Translation.Instance trans = new Translation.Instance( "nonexistent_bundle", Locale.ENGLISH ); assertThat( trans.t( "Some key" ), equalTo( "Some key" ) ); } @Test public void Unknown_key_means_key_is_returned() { Translation.Instance trans = new Translation.Instance( "rabbitescape.engine.i18n.testtranslations", Locale.ENGLISH ); assertThat( trans.t( "Some key" ), equalTo( "Some key" ) ); } @Test public void Unknown_locale_means_key_is_returned() { String bundleName; Locale defaultLocale = Locale.getDefault(); if ( !defaultLocale.equals( Locale.FRANCE ) ) { bundleName = "rabbitescape.engine.i18n.testtranslationsfranceonly"; } else { bundleName = "rabbitescape.engine.i18n.testtranslationsspainonly"; } // Ask for chinese translations in a bundle that doesn't supply a // Chinese value or a 'backup' value in the default locale. Translation.Instance trans = new Translation.Instance( bundleName, Locale.CHINA ); assertThat( trans.t( "test_key_1" ), equalTo( "test_key_1" ) ); } @Test public void Known_bundle_and_key_means_value_is_returned() { Translation.Instance trans = new Translation.Instance( "rabbitescape.engine.i18n.testtranslations", Locale.ENGLISH ); assertThat( trans.t( "test_key_1" ), equalTo( "Test Value 1" ) ); } @Test public void Sanitising_key_means_to_lower_case_with_underscores() { assertThat( Translation.Instance.sanitise( "foo! bar% Baz$ BASH£ Quux\" =" ), equalTo( "foo__bar__baz__bash__quux___" ) ); } @Test public void Sanitised_version_of_key_is_looked_up() { Translation.Instance trans = new Translation.Instance( "rabbitescape.engine.i18n.testtranslations", Locale.ENGLISH ); assertThat( trans.t( "foo! bar% Baz$ BASH£ Quux\" =" ), equalTo( "Test Value 2" ) ); } }