package org.mongodb.morphia.converters;
import org.junit.Test;
import org.mongodb.morphia.TestBase;
import java.util.Locale;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
public class LocaleConverterTest extends TestBase {
@Test
public void shouldEncodeAndDecodeBuiltInLocale() throws Exception {
// given
LocaleConverter converter = new LocaleConverter();
Locale expectedLocale = Locale.CANADA_FRENCH;
// when
Locale decodedLocale = (Locale) converter.decode(Locale.class, converter.encode(expectedLocale));
// then
assertThat(decodedLocale, is(expectedLocale));
}
@Test
public void shouldEncodeAndDecodeCountryOnlyLocale() {
// given
LocaleConverter converter = new LocaleConverter();
Locale expectedLocale = new Locale("", "FI");
// when
Locale decodedLocale = (Locale) converter.decode(Locale.class, converter.encode(expectedLocale));
// then
assertThat(decodedLocale, is(expectedLocale));
}
@Test
public void shouldEncodeAndDecodeCustomLocale() {
// given
LocaleConverter converter = new LocaleConverter();
Locale expectedLocale = new Locale("de", "DE", "bavarian");
// when
Locale decodedLocale = (Locale) converter.decode(Locale.class, converter.encode(expectedLocale));
// then
assertThat(decodedLocale, is(expectedLocale));
assertThat(decodedLocale.getLanguage(), is("de"));
assertThat(decodedLocale.getCountry(), is("DE"));
assertThat(decodedLocale.getVariant(), is("bavarian"));
}
@Test
public void shouldEncodeAndDecodeNoCountryLocale() {
// given
LocaleConverter converter = new LocaleConverter();
Locale expectedLocale = new Locale("fi", "", "VAR");
// when
Locale decodedLocale = (Locale) converter.decode(Locale.class, converter.encode(expectedLocale));
// then
assertThat(decodedLocale, is(expectedLocale));
}
@Test
public void shouldEncodeAndDecodeNoLanguageLocale() {
// given
LocaleConverter converter = new LocaleConverter();
Locale expectedLocale = new Locale("", "FI", "VAR");
// when
Locale decodedLocale = (Locale) converter.decode(Locale.class, converter.encode(expectedLocale));
// then
assertThat(decodedLocale, is(expectedLocale));
}
@Test
public void shouldEncodeAndDecodeSpecialVariantLocale() {
// given
LocaleConverter converter = new LocaleConverter();
Locale expectedLocale = new Locale("fi", "FI", "VAR_SPECIAL");
// when
Locale decodedLocale = (Locale) converter.decode(Locale.class, converter.encode(expectedLocale));
// then
assertThat(decodedLocale, is(expectedLocale));
}
}