package com.googlecode.gwt.test.i18n; import com.google.gwt.core.client.GWT; import com.google.gwt.safehtml.shared.SafeHtml; import com.googlecode.gwt.test.GwtTestTest; import org.junit.Before; import org.junit.Test; import java.util.Locale; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.fail; public class MyMessagesTest extends GwtTestTest { private MyMessages messages; @Test public void a_message() { // Given String result = null; String expectedException = "Unable to find a Locale specific resource file to bind with i18n interface 'com.googlecode.gwt.test.i18n.MyMessages' and there is no @DefaultXXXValue annotation on 'a_message' called method"; // When 1 try { result = messages.a_message("Gael", 23, true); fail("The test is expected to throw an execption since 'a_message' can't be retrieve in the default property file and no @DefaultMessage is set on the method"); } catch (Exception e) { assertThat(e.getMessage()).isEqualTo(expectedException); } // Given 2 setLocale(Locale.FRANCE); // When 2 result = messages.a_message("Gael", 23, true); // Then2 assertThat(result).isEqualTo("Bonjour Gael, vous avez saisi le nombre 23 et le booléen true"); } @Before public void beforeMyMessages() { messages = GWT.create(MyMessages.class); } @Test public void meaningAnnotation() { // Given 1 setLocale(Locale.FRANCE); // When 1 String orangeColor = messages.orangeColor(); SafeHtml orangeFruit = messages.orangeFruit(); // Then 1 assertThat(orangeColor).isEqualTo("Orange"); assertThat(orangeFruit.asString()).isEqualTo("Orange"); // Given 2 setLocale(Locale.ENGLISH); // When 2 orangeColor = messages.orangeColor(); orangeFruit = messages.orangeFruit(); // Then 2 assertThat(orangeColor).isEqualTo("orange"); assertThat(orangeFruit.asString()).isEqualTo("orange"); } @Test public void totalAmount() { // Given 1 setLocale(Locale.US); // When String totalAmount = messages.totalAmount(6); // Then 1 assertThat(totalAmount).isEqualTo("Your cart total is $6.00"); // Given 2 setLocale(Locale.FRANCE); // When 2 totalAmount = messages.totalAmount(6); // Then 2 assertThat(totalAmount).isEqualTo("Le total de votre panier est de 6,00 €"); } @Test public void widgetCount_default_en() { // When String result0 = messages.widgetCount(0); String result1 = messages.widgetCount(1); String result2 = messages.widgetCount(2); // Then assertThat(result0).isEqualTo("You have 0 widgets"); assertThat(result1).isEqualTo("You have 1 widget"); assertThat(result2).isEqualTo("You have 2 widgets"); } // @Test // public void checkAlternateMessageWithSelect_default_en() { // // When // String resultFEMALE = messages.alternateMessageWithSelect("Jenny", // Gender.FEMALE); // String resultMALE = messages.alternateMessageWithSelect("Brian", // Gender.MALE); // String resultUNKNOWN = messages.alternateMessageWithSelect("Gloups", // Gender.UNKNOWN); // // // Then // ThenEquals("Jenny likes her widgets.", resultFEMALE); // ThenEquals("Brian likes his widgets.", resultMALE); // ThenEquals("Gloups likes their widgets.", resultUNKNOWN); // } // // @Test // public void checkAlternateMessageWithSelect_fr() { // // Given // setLocale(Locale.FRANCE); // // // When // String resultFEMALE = messages.alternateMessageWithSelect("Jenny", // Gender.FEMALE); // String resultMALE = messages.alternateMessageWithSelect("Brian", // Gender.MALE); // String resultUNKNOWN = messages.alternateMessageWithSelect("Gloups", // Gender.UNKNOWN); // // // Then // ThenEquals("Jenny aime sa poupée", resultFEMALE); // ThenEquals("Brian aime son dinosaure", resultMALE); // ThenEquals("Gloups aime son nonosse", resultUNKNOWN); // } // // @Test // public void checkAlternateMessageWithSelectAndPluralCount_default_en() { // // When // String resultFEMALE_ONE = // messages.alternateMessageWithSelectAndPluralCount("Jenny", Gender.FEMALE, // 1); // String resultFEMALE_MANY = // messages.alternateMessageWithSelectAndPluralCount("Jenny", Gender.FEMALE, // 4); // String resultMALE_ONE = // messages.alternateMessageWithSelectAndPluralCount("Brian", Gender.MALE, // 1); // String resultMALE_MANY = // messages.alternateMessageWithSelectAndPluralCount("Brian", Gender.MALE, // 2); // String resultUNKNOWN = // messages.alternateMessageWithSelectAndPluralCount("Gloups", // Gender.UNKNOWN, // 0); // // // Then // ThenEquals("Jenny gave away her widget", resultFEMALE_ONE); // ThenEquals("Jenny gave away her 4 widgets", resultFEMALE_MANY); // ThenEquals("Brian gave away his widget", resultMALE_ONE); // ThenEquals("Brian gave away his 2 widgets", resultMALE_MANY); // ThenEquals("Gloups gave away their 0 widgets", resultUNKNOWN); // } // // @Test // public void checkAlternateMessageWithSelectAndPluralCount_fr() { // // Given // setLocale(Locale.FRANCE); // // // When // String resultFEMALE_ONE = // messages.alternateMessageWithSelectAndPluralCount("Jenny", Gender.FEMALE, // 1); // String resultFEMALE_MANY = // messages.alternateMessageWithSelectAndPluralCount("Jenny", Gender.FEMALE, // 4); // String resultMALE_ONE = // messages.alternateMessageWithSelectAndPluralCount("Brian", Gender.MALE, // 1); // String resultMALE_MANY = // messages.alternateMessageWithSelectAndPluralCount("Brian", Gender.MALE, // 2); // String resultUNKNOWN = // messages.alternateMessageWithSelectAndPluralCount("Gloups", // Gender.UNKNOWN, // 0); // // // Then // ThenEquals("Jenny aime sa poupée", resultFEMALE_ONE); // ThenEquals("Jenny aime ses 4 poupées", resultFEMALE_MANY); // ThenEquals("Brian aime son dinosaure", resultMALE_ONE); // ThenEquals("Brian aime ses 2 dinosaures", resultMALE_MANY); // ThenEquals("Gloups gave away their 0 widgets", resultUNKNOWN); // } @Test public void widgetCount_fr() { // Given setLocale(Locale.FRANCE); // When String result0 = messages.widgetCount(0); String result1 = messages.widgetCount(1); String result2 = messages.widgetCount(2); // Then assertThat(result0).isEqualTo("Vous avez 0 widget"); assertThat(result1).isEqualTo("Vous avez 1 widget"); assertThat(result2).isEqualTo("Vous avez 2 widgets"); } }