package com.blazebit.i18n;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
public class LocaleUtilsTest {
private static Locale locale(String locale) {
return LocaleUtils.getLocale(locale);
}
private static List<Locale> locales(String... locales) {
List<Locale> list = new ArrayList<Locale>();
for (String l : locales) {
list.add(LocaleUtils.getLocale(l));
}
return list;
}
@Test
public void testGetLocale() {
assertEquals(LocaleUtils.getLocale("en"), new Locale("en"));
assertEquals(LocaleUtils.getLocale("en_US"), new Locale("en", "US"));
assertEquals(LocaleUtils.getLocale("en_US_NY"), new Locale("en", "US",
"NY"));
}
/******************************
* Perfect Matching Tests *
******************************/
@Test
public void testPerfectMatchEnsuringPriorityResolving1() {
List<Locale> supportedLocales = locales("de_AT", "de_DE", "de_CH", "de");
List<Locale> preferredLocales = locales("de_AT", "de_DE", "en_US");
Locale defaultLocale = locale("en_US");
Locale expectedResult = locale("de_AT");
assertEquals(expectedResult, LocaleUtils.resolveLocale(
preferredLocales, supportedLocales, defaultLocale));
}
@Test
public void testPerfectMatchEnsuringPriorityResolving2() {
List<Locale> supportedLocales = locales("de_AT", "de_DE", "de_CH", "de");
List<Locale> preferredLocales = locales("de_DE", "de_AT", "en_US");
Locale defaultLocale = locale("en_US");
Locale expectedResult = locale("de_DE");
assertEquals(expectedResult, LocaleUtils.resolveLocale(
preferredLocales, supportedLocales, defaultLocale));
}
@Test
public void testPerfectMatchEnsuringPriorityResolving3() {
List<Locale> supportedLocales = locales("de_AT", "de_DE", "de_CH", "de");
List<Locale> preferredLocales = locales("en_US", "de_DE", "de_AT");
Locale defaultLocale = locale("en_US");
Locale expectedResult = locale("en_US");
assertEquals(expectedResult, LocaleUtils.resolveLocale(
preferredLocales, supportedLocales, defaultLocale));
}
/******************************
* Language Fallback Tests *
******************************/
@Test
public void testLanguageFallbackEnsuringLanguageMatchResolving1() {
List<Locale> supportedLocales = locales("de_AT", "de_DE", "de", "en_US");
List<Locale> preferredLocales = locales("de_CH", "en_US");
Locale defaultLocale = locale("en_US");
Locale expectedResult = locale("de");
assertEquals(expectedResult, LocaleUtils.resolveLocale(
preferredLocales, supportedLocales, defaultLocale));
}
@Test
public void testLanguageFallbackEnsuringLanguageMatchResolving2() {
List<Locale> supportedLocales = locales("de_AT", "de_DE", "de",
"en_UK", "en");
List<Locale> preferredLocales = locales("fr_CH", "en_US");
Locale defaultLocale = locale("en_UK");
Locale expectedResult = locale("en");
assertEquals(expectedResult, LocaleUtils.resolveLocale(
preferredLocales, supportedLocales, defaultLocale));
}
@Test
public void testLanguageFallbackEnsuringLanguageMatchResolving3() {
List<Locale> supportedLocales = locales("de_AT", "de_DE", "de",
"en_UK", "en_US");
List<Locale> preferredLocales = locales("fr_CH", "en_US");
Locale defaultLocale = locale("en_US");
Locale expectedResult = locale("en_US");
assertEquals(expectedResult, LocaleUtils.resolveLocale(
preferredLocales, supportedLocales, defaultLocale));
}
@Test
public void testLanguageFallbackEnsuringLanguageMatchResolving4() {
List<Locale> supportedLocales = locales("de_AT_UA", "de_AT_VB",
"de_DE", "de", "en_US");
List<Locale> preferredLocales = locales("de_AT_VI");
Locale defaultLocale = locale("en_US");
Locale expectedResult = locale("de");
assertEquals(expectedResult, LocaleUtils.resolveLocale(
preferredLocales, supportedLocales, defaultLocale));
}
@Test
public void testLanguageFallbackEnsuringLanguageMatchResolving5() {
List<Locale> supportedLocales = locales("de_AT_UA", "de_AT_VB",
"de_AT", "de_DE", "de", "en_US");
List<Locale> preferredLocales = locales("de_AT_VI");
Locale defaultLocale = locale("en_US");
Locale expectedResult = locale("de_AT");
assertEquals(expectedResult, LocaleUtils.resolveLocale(
preferredLocales, supportedLocales, defaultLocale));
}
@Test
public void testLanguageFallbackEnsuringLanguageMatchResolving6() {
List<Locale> supportedLocales = locales("de_AT_UA", "de_AT_VB",
"de_AT", "de_DE", "de", "en_US");
List<Locale> preferredLocales = locales("de_AT_VI");
Locale defaultLocale = locale("en_US");
Locale expectedResult = locale("de_AT");
assertEquals(expectedResult, LocaleUtils.resolveLocale(
preferredLocales, supportedLocales, defaultLocale, false));
}
@Test
public void testLanguageFallbackEnsuringLanguageMatchResolving7() {
List<Locale> supportedLocales = locales("de_AT_UA", "de_AT_VB",
"de_DE", "de", "en_US");
List<Locale> preferredLocales = locales("de_AT_VI");
Locale defaultLocale = locale("en_US");
Locale expectedResult = locale("de_AT_UA");
assertEquals(expectedResult, LocaleUtils.resolveLocale(
preferredLocales, supportedLocales, defaultLocale, false));
}
@Test
public void testLanguageFallbackEnsuringLanguageMatchResolving8() {
List<Locale> supportedLocales = locales("de_AT_UA", "de_AT_VB", "en_US");
List<Locale> preferredLocales = locales("de_DE_BE");
Locale defaultLocale = locale("en_US");
Locale expectedResult = locale("de_AT_UA");
assertEquals(expectedResult, LocaleUtils.resolveLocale(
preferredLocales, supportedLocales, defaultLocale));
}
@Test
public void testLanguageFallbackEnsuringLanguageMatchAndPriorityResolving() {
List<Locale> supportedLocales = locales("de_AT", "de_DE", "en_US");
List<Locale> preferredLocales = locales("de_CH", "fr_CH");
Locale defaultLocale = locale("en_US");
Locale expectedResult = locale("de_AT");
assertEquals(expectedResult, LocaleUtils.resolveLocale(
preferredLocales, supportedLocales, defaultLocale));
}
@Test
public void testLanguageFallbackEnsuringLanguageAndCountryMatchResolving() {
List<Locale> supportedLocales = locales("de_AT", "de_AT_UA",
"de_AT_VB", "de_DE", "de", "en_US");
List<Locale> preferredLocales = locales("de_AT_VI", "de_DE");
Locale defaultLocale = locale("en_US");
Locale expectedResult = locale("de_AT");
assertEquals(expectedResult, LocaleUtils.resolveLocale(
preferredLocales, supportedLocales, defaultLocale));
}
/******************************
* Country Fallback Tests *
******************************/
@Test
public void testCountryFallbackEnsuringPriorityResolving1() {
List<Locale> supportedLocales = locales("de_AT", "de_DE", "de_CH",
"en_CH");
List<Locale> preferredLocales = locales("fr_CH");
Locale defaultLocale = locale("en_US");
Locale expectedResult = locale("de_CH");
assertEquals(expectedResult, LocaleUtils.resolveLocale(
preferredLocales, supportedLocales, defaultLocale));
}
@Test
public void testCountryFallbackEnsuringPriorityResolving2() {
List<Locale> supportedLocales = locales("de_AT", "de_DE", "en_CH",
"de_CH");
List<Locale> preferredLocales = locales("fr_CH");
Locale defaultLocale = locale("en_US");
Locale expectedResult = locale("en_CH");
assertEquals(expectedResult, LocaleUtils.resolveLocale(
preferredLocales, supportedLocales, defaultLocale));
}
/******************************
* Default Fallback Tests *
******************************/
@Test
public void testDefaultFallback() {
List<Locale> supportedLocales = locales("de_AT", "de_DE", "de_CH",
"en_US");
List<Locale> preferredLocales = locales("fr_FR");
Locale defaultLocale = locale("en_US");
Locale expectedResult = locale("en_US");
assertEquals(expectedResult, LocaleUtils.resolveLocale(
preferredLocales, supportedLocales, defaultLocale));
}
}