package gherkin;
import gherkin.deps.com.google.gson.reflect.TypeToken;
import gherkin.deps.com.google.gson.Gson;
import gherkin.util.Mapper;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import static gherkin.util.FixJava.map;
import static java.util.Arrays.asList;
import static org.hamcrest.CoreMatchers.hasItem;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertThat;
public class I18nTest {
@Test
public void shouldFindAllLanguages() throws IOException {
List<I18n> all = I18n.getAll();
List<String> isoCodes = map(all, new Mapper<I18n, String>() {
@Override
public String map(I18n i18n) {
return i18n.getIsoCode();
}
});
Map<String, Map<String, String>> i18nContent =
new Gson().fromJson(new InputStreamReader(I18n.class.getResourceAsStream("/gherkin/i18n.json"), "UTF-8"), new TypeToken<Map<String, Map<String, String>>>() {}.getType());
List<String> i18nContentKeys = extractSortedListOfMapKeys(i18nContent);
assertEquals(i18nContentKeys, isoCodes);
assertThat(isoCodes, hasItem("ar"));
assertThat(isoCodes, hasItem("en"));
assertThat(isoCodes, hasItem("zh-TW"));
}
@Test
public void shouldProvideKeywordsForNorwegian() throws IOException {
I18n no = new I18n("no");
assertEquals(Arrays.asList("* ", "Så "), no.keywords("then"));
assertEquals("no", no.getLocale().getLanguage());
}
@Test
public void shouldProvideKeywordsForIndonesian() throws IOException {
I18n id = new I18n("id");
assertEquals(Arrays.asList("* ", "Ketika "), id.keywords("when"));
assertEquals("in", id.getLocale().getLanguage());
}
@Test
public void shouldProvideKeywordsForHebrew() throws IOException {
I18n he = new I18n("he");
assertEquals(Arrays.asList("דוגמאות"), he.keywords("examples"));
assertEquals("iw", he.getLocale().getLanguage());
}
@Test
public void shouldProvideKeywordsForChinese() throws IOException {
I18n zhCn = new I18n("zh-CN");
assertEquals(Arrays.asList("* ", "但是"), zhCn.keywords("but"));
assertEquals("zh", zhCn.getLocale().getLanguage());
}
@Test
public void shouldProvideKeywordsForScouse() throws IOException {
I18n enScouse = new I18n("en-Scouse");
assertEquals(Arrays.asList("* ", "Givun ", "Youse know when youse got "), enScouse.keywords("given"));
assertEquals("en", enScouse.getLocale().getLanguage());
}
@Test
public void shouldProvideKeywordsForKlingon() throws IOException {
I18n tlh = new I18n("tlh");
assertEquals(Arrays.asList("* ", "ghu' noblu' ", "DaH ghu' bejlu' "), tlh.keywords("given"));
assertEquals("tlh", tlh.getLocale().getLanguage());
}
private List<String> extractSortedListOfMapKeys(Map<String, ?> map) {
String[] emptyStringArray = {};
List<String> keys = asList(map.keySet().toArray(emptyStringArray));
Collections.sort(keys);
return keys;
}
}