package com.vaadin.server;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;
import com.vaadin.shared.ui.ui.UIState.LocaleData;
import com.vaadin.shared.ui.ui.UIState.LocaleServiceState;
import com.vaadin.ui.UI;
public class LocaleServiceTest {
private static Set<String> JAVA8_SUPPORTED_LOCALES = new HashSet<String>();
static {
// From
// http://www.oracle.com/technetwork/java/javase/java8locales-2095355.html
JAVA8_SUPPORTED_LOCALES.add("sq-AL");
JAVA8_SUPPORTED_LOCALES.add("ar-DZ");
JAVA8_SUPPORTED_LOCALES.add("ar-BH");
JAVA8_SUPPORTED_LOCALES.add("ar-EG");
JAVA8_SUPPORTED_LOCALES.add("ar-IQ");
JAVA8_SUPPORTED_LOCALES.add("ar-JO");
JAVA8_SUPPORTED_LOCALES.add("ar-KW");
JAVA8_SUPPORTED_LOCALES.add("ar-LB");
JAVA8_SUPPORTED_LOCALES.add("ar-LY");
JAVA8_SUPPORTED_LOCALES.add("ar-MA");
JAVA8_SUPPORTED_LOCALES.add("ar-OM");
JAVA8_SUPPORTED_LOCALES.add("ar-QA");
JAVA8_SUPPORTED_LOCALES.add("ar-SA");
JAVA8_SUPPORTED_LOCALES.add("ar-SD");
JAVA8_SUPPORTED_LOCALES.add("ar-SY");
JAVA8_SUPPORTED_LOCALES.add("ar-TN");
JAVA8_SUPPORTED_LOCALES.add("ar-AE");
JAVA8_SUPPORTED_LOCALES.add("ar-YE");
JAVA8_SUPPORTED_LOCALES.add("be-BY");
JAVA8_SUPPORTED_LOCALES.add("bg-BG");
JAVA8_SUPPORTED_LOCALES.add("ca-ES");
JAVA8_SUPPORTED_LOCALES.add("zh-CN");
JAVA8_SUPPORTED_LOCALES.add("zh-SG");
JAVA8_SUPPORTED_LOCALES.add("zh-HK");
JAVA8_SUPPORTED_LOCALES.add("zh-TW");
JAVA8_SUPPORTED_LOCALES.add("hr-HR");
JAVA8_SUPPORTED_LOCALES.add("cs-CZ");
JAVA8_SUPPORTED_LOCALES.add("da-DK");
JAVA8_SUPPORTED_LOCALES.add("nl-BE");
JAVA8_SUPPORTED_LOCALES.add("nl-NL");
JAVA8_SUPPORTED_LOCALES.add("en-AU");
JAVA8_SUPPORTED_LOCALES.add("en-CA");
JAVA8_SUPPORTED_LOCALES.add("en-IN");
JAVA8_SUPPORTED_LOCALES.add("en-IE");
JAVA8_SUPPORTED_LOCALES.add("en-MT");
JAVA8_SUPPORTED_LOCALES.add("en-NZ");
JAVA8_SUPPORTED_LOCALES.add("en-PH");
JAVA8_SUPPORTED_LOCALES.add("en-SG");
JAVA8_SUPPORTED_LOCALES.add("en-ZA");
JAVA8_SUPPORTED_LOCALES.add("en-GB");
JAVA8_SUPPORTED_LOCALES.add("en-US");
JAVA8_SUPPORTED_LOCALES.add("et-EE");
JAVA8_SUPPORTED_LOCALES.add("fi-FI");
JAVA8_SUPPORTED_LOCALES.add("fr-BE");
JAVA8_SUPPORTED_LOCALES.add("fr-CA");
JAVA8_SUPPORTED_LOCALES.add("fr-FR");
JAVA8_SUPPORTED_LOCALES.add("fr-LU");
JAVA8_SUPPORTED_LOCALES.add("fr-CH");
JAVA8_SUPPORTED_LOCALES.add("de-AT");
JAVA8_SUPPORTED_LOCALES.add("de-DE");
JAVA8_SUPPORTED_LOCALES.add("de-LU");
JAVA8_SUPPORTED_LOCALES.add("de-CH");
JAVA8_SUPPORTED_LOCALES.add("el-CY");
JAVA8_SUPPORTED_LOCALES.add("el-GR");
JAVA8_SUPPORTED_LOCALES.add("iw-IL");
JAVA8_SUPPORTED_LOCALES.add("hi-IN");
JAVA8_SUPPORTED_LOCALES.add("hu-HU");
JAVA8_SUPPORTED_LOCALES.add("is-IS");
JAVA8_SUPPORTED_LOCALES.add("in-ID");
JAVA8_SUPPORTED_LOCALES.add("ga-IE");
JAVA8_SUPPORTED_LOCALES.add("it-IT");
JAVA8_SUPPORTED_LOCALES.add("it-CH");
JAVA8_SUPPORTED_LOCALES.add("ja-JP");
JAVA8_SUPPORTED_LOCALES.add("ja-JP-u-ca-japanese");
JAVA8_SUPPORTED_LOCALES.add("ja-JP-x-lvariant-JP");
JAVA8_SUPPORTED_LOCALES.add("ko-KR");
JAVA8_SUPPORTED_LOCALES.add("lv-LV");
JAVA8_SUPPORTED_LOCALES.add("lt-LT");
JAVA8_SUPPORTED_LOCALES.add("mk-MK");
JAVA8_SUPPORTED_LOCALES.add("ms-MY");
JAVA8_SUPPORTED_LOCALES.add("mt-MT");
JAVA8_SUPPORTED_LOCALES.add("no-NO");
JAVA8_SUPPORTED_LOCALES.add("nb-NO");
JAVA8_SUPPORTED_LOCALES.add("nn-NO");
JAVA8_SUPPORTED_LOCALES.add("no-NO-x-lvariant-NY");
JAVA8_SUPPORTED_LOCALES.add("pl-PL");
JAVA8_SUPPORTED_LOCALES.add("pt-BR");
JAVA8_SUPPORTED_LOCALES.add("pt-PT");
JAVA8_SUPPORTED_LOCALES.add("ro-RO");
JAVA8_SUPPORTED_LOCALES.add("ru-RU");
JAVA8_SUPPORTED_LOCALES.add("sr-BA");
JAVA8_SUPPORTED_LOCALES.add("sr-ME");
JAVA8_SUPPORTED_LOCALES.add("sr-RS");
JAVA8_SUPPORTED_LOCALES.add("sr-Latn-BA");
JAVA8_SUPPORTED_LOCALES.add("sr-Latn-ME");
JAVA8_SUPPORTED_LOCALES.add("sr-Latn-RS");
JAVA8_SUPPORTED_LOCALES.add("sk-SK");
JAVA8_SUPPORTED_LOCALES.add("sl-SI");
JAVA8_SUPPORTED_LOCALES.add("es-AR");
JAVA8_SUPPORTED_LOCALES.add("es-BO");
JAVA8_SUPPORTED_LOCALES.add("es-CL");
JAVA8_SUPPORTED_LOCALES.add("es-CO");
JAVA8_SUPPORTED_LOCALES.add("es-CR");
JAVA8_SUPPORTED_LOCALES.add("es-DO");
JAVA8_SUPPORTED_LOCALES.add("es-EC");
JAVA8_SUPPORTED_LOCALES.add("es-SV");
JAVA8_SUPPORTED_LOCALES.add("es-GT");
JAVA8_SUPPORTED_LOCALES.add("es-HN");
JAVA8_SUPPORTED_LOCALES.add("es-MX");
JAVA8_SUPPORTED_LOCALES.add("es-NI");
JAVA8_SUPPORTED_LOCALES.add("es-PA");
JAVA8_SUPPORTED_LOCALES.add("es-PY");
JAVA8_SUPPORTED_LOCALES.add("es-PE");
JAVA8_SUPPORTED_LOCALES.add("es-PR");
JAVA8_SUPPORTED_LOCALES.add("es-ES");
JAVA8_SUPPORTED_LOCALES.add("es-US");
JAVA8_SUPPORTED_LOCALES.add("es-UY");
JAVA8_SUPPORTED_LOCALES.add("es-VE");
JAVA8_SUPPORTED_LOCALES.add("sv-SE");
JAVA8_SUPPORTED_LOCALES.add("th-TH");
JAVA8_SUPPORTED_LOCALES.add("th-TH-u-ca-buddhist");
JAVA8_SUPPORTED_LOCALES.add("th-TH-u-ca-buddhist-nu-thai");
JAVA8_SUPPORTED_LOCALES.add("th-TH-x-lvariant-TH");
JAVA8_SUPPORTED_LOCALES.add("tr-TR");
JAVA8_SUPPORTED_LOCALES.add("uk-UA");
JAVA8_SUPPORTED_LOCALES.add("vi-VN");
}
private static Map<Locale, LocaleData> expectedLocaleData = new HashMap<Locale, LocaleData>();
static {
LocaleData en_IE = new LocaleData();
en_IE.dateFormat = "dd/MM/yy";
en_IE.twelveHourClock = false;
en_IE.hourMinuteDelimiter = ":";
expectedLocaleData.put(new Locale("en", "IE"), en_IE);
LocaleData ar_KW = new LocaleData();
ar_KW.dateFormat = "dd/MM/yy";
ar_KW.twelveHourClock = true;
ar_KW.hourMinuteDelimiter = ":";
ar_KW.am = "ص";
ar_KW.pm = "م";
expectedLocaleData.put(new Locale("ar", "KW"), ar_KW);
LocaleData ms_MY = new LocaleData();
ms_MY.dateFormat = "dd/MM/yyyy";
ms_MY.twelveHourClock = false;
ms_MY.hourMinuteDelimiter = ":";
expectedLocaleData.put(new Locale("ms", "MY"), ms_MY);
LocaleData en_IN = new LocaleData();
en_IN.dateFormat = "d/M/yy";
en_IN.twelveHourClock = true;
en_IN.hourMinuteDelimiter = ":";
en_IN.am = "AM";
en_IN.pm = "PM";
expectedLocaleData.put(new Locale("en", "IN"), en_IN);
LocaleData es_BO = new LocaleData();
es_BO.dateFormat = "dd-MM-yy";
es_BO.twelveHourClock = true;
es_BO.hourMinuteDelimiter = ":";
es_BO.am = "AM";
es_BO.pm = "PM";
expectedLocaleData.put(new Locale("es", "BO"), es_BO);
LocaleData ar_SY = new LocaleData();
ar_SY.dateFormat = "dd/MM/yy";
ar_SY.twelveHourClock = true;
ar_SY.hourMinuteDelimiter = ":";
ar_SY.am = "ص";
ar_SY.pm = "م";
expectedLocaleData.put(new Locale("ar", "SY"), ar_SY);
LocaleData en_ZA = new LocaleData();
en_ZA.dateFormat = "yyyy/MM/dd";
en_ZA.twelveHourClock = true;
en_ZA.hourMinuteDelimiter = ":";
en_ZA.am = "AM";
en_ZA.pm = "PM";
expectedLocaleData.put(new Locale("en", "ZA"), en_ZA);
LocaleData no_NO = new LocaleData();
no_NO.dateFormat = "dd.MM.yy";
no_NO.twelveHourClock = false;
no_NO.hourMinuteDelimiter = ":";
expectedLocaleData.put(new Locale("no", "NO"), no_NO);
LocaleData sr_LATN_BA = new LocaleData();
sr_LATN_BA.dateFormat = "d.M.yy.";
sr_LATN_BA.twelveHourClock = false;
sr_LATN_BA.hourMinuteDelimiter = ".";
expectedLocaleData.put(new Locale("sr", "LATN", "BA"), sr_LATN_BA);
LocaleData el_GR = new LocaleData();
el_GR.dateFormat = "d/M/yyyy";
el_GR.twelveHourClock = true;
el_GR.hourMinuteDelimiter = ":";
el_GR.am = "πμ";
el_GR.pm = "μμ";
expectedLocaleData.put(new Locale("el", "GR"), el_GR);
LocaleData sr_LATN_RS = new LocaleData();
sr_LATN_RS.dateFormat = "d.M.yy.";
sr_LATN_RS.twelveHourClock = false;
sr_LATN_RS.hourMinuteDelimiter = ".";
expectedLocaleData.put(new Locale("sr", "LATN", "RS"), sr_LATN_RS);
LocaleData nl_NL = new LocaleData();
nl_NL.dateFormat = "d-M-yy";
nl_NL.twelveHourClock = false;
nl_NL.hourMinuteDelimiter = ":";
expectedLocaleData.put(new Locale("nl", "NL"), nl_NL);
LocaleData ar_LB = new LocaleData();
ar_LB.dateFormat = "dd/MM/yy";
ar_LB.twelveHourClock = true;
ar_LB.hourMinuteDelimiter = ":";
ar_LB.am = "ص";
ar_LB.pm = "م";
expectedLocaleData.put(new Locale("ar", "LB"), ar_LB);
LocaleData en_AU = new LocaleData();
en_AU.dateFormat = "d/MM/yy";
en_AU.twelveHourClock = true;
en_AU.hourMinuteDelimiter = ":";
en_AU.am = "AM";
en_AU.pm = "PM";
expectedLocaleData.put(new Locale("en", "AU"), en_AU);
LocaleData mk_MK = new LocaleData();
mk_MK.dateFormat = "d.M.yy";
mk_MK.twelveHourClock = false;
mk_MK.hourMinuteDelimiter = ":";
expectedLocaleData.put(new Locale("mk", "MK"), mk_MK);
LocaleData ar_TN = new LocaleData();
ar_TN.dateFormat = "dd/MM/yy";
ar_TN.twelveHourClock = true;
ar_TN.hourMinuteDelimiter = ":";
ar_TN.am = "ص";
ar_TN.pm = "م";
expectedLocaleData.put(new Locale("ar", "TN"), ar_TN);
LocaleData ar_LY = new LocaleData();
ar_LY.dateFormat = "dd/MM/yy";
ar_LY.twelveHourClock = true;
ar_LY.hourMinuteDelimiter = ":";
ar_LY.am = "ص";
ar_LY.pm = "م";
expectedLocaleData.put(new Locale("ar", "LY"), ar_LY);
LocaleData hu_HU = new LocaleData();
hu_HU.dateFormat = "yyyy.MM.dd.";
hu_HU.twelveHourClock = false;
hu_HU.hourMinuteDelimiter = ":";
expectedLocaleData.put(new Locale("hu", "HU"), hu_HU);
LocaleData es_SV = new LocaleData();
es_SV.dateFormat = "MM-dd-yy";
es_SV.twelveHourClock = true;
es_SV.hourMinuteDelimiter = ":";
es_SV.am = "AM";
es_SV.pm = "PM";
expectedLocaleData.put(new Locale("es", "SV"), es_SV);
LocaleData es_CR = new LocaleData();
es_CR.dateFormat = "dd/MM/yy";
es_CR.twelveHourClock = true;
es_CR.hourMinuteDelimiter = ":";
es_CR.am = "AM";
es_CR.pm = "PM";
expectedLocaleData.put(new Locale("es", "CR"), es_CR);
LocaleData es_CL = new LocaleData();
es_CL.dateFormat = "dd-MM-yy";
es_CL.twelveHourClock = false;
es_CL.hourMinuteDelimiter = ":";
expectedLocaleData.put(new Locale("es", "CL"), es_CL);
LocaleData fr_CA = new LocaleData();
fr_CA.dateFormat = "yy-MM-dd";
fr_CA.twelveHourClock = false;
fr_CA.hourMinuteDelimiter = ":";
expectedLocaleData.put(new Locale("fr", "CA"), fr_CA);
LocaleData es_CO = new LocaleData();
es_CO.dateFormat = "d/MM/yy";
es_CO.twelveHourClock = true;
es_CO.hourMinuteDelimiter = ":";
es_CO.am = "AM";
es_CO.pm = "PM";
expectedLocaleData.put(new Locale("es", "CO"), es_CO);
LocaleData pl_PL = new LocaleData();
pl_PL.dateFormat = "dd.MM.yy";
pl_PL.twelveHourClock = false;
pl_PL.hourMinuteDelimiter = ":";
expectedLocaleData.put(new Locale("pl", "PL"), pl_PL);
LocaleData pt_PT = new LocaleData();
pt_PT.dateFormat = "dd-MM-yyyy";
pt_PT.twelveHourClock = false;
pt_PT.hourMinuteDelimiter = ":";
expectedLocaleData.put(new Locale("pt", "PT"), pt_PT);
LocaleData ar_EG = new LocaleData();
ar_EG.dateFormat = "dd/MM/yy";
ar_EG.twelveHourClock = true;
ar_EG.hourMinuteDelimiter = ":";
ar_EG.am = "ص";
ar_EG.pm = "م";
expectedLocaleData.put(new Locale("ar", "EG"), ar_EG);
LocaleData fr_BE = new LocaleData();
fr_BE.dateFormat = "d/MM/yy";
fr_BE.twelveHourClock = false;
fr_BE.hourMinuteDelimiter = ":";
expectedLocaleData.put(new Locale("fr", "BE"), fr_BE);
LocaleData ga_IE = new LocaleData();
ga_IE.dateFormat = "dd/MM/yyyy";
ga_IE.twelveHourClock = false;
ga_IE.hourMinuteDelimiter = ":";
expectedLocaleData.put(new Locale("ga", "IE"), ga_IE);
LocaleData ar_DZ = new LocaleData();
ar_DZ.dateFormat = "dd/MM/yy";
ar_DZ.twelveHourClock = true;
ar_DZ.hourMinuteDelimiter = ":";
ar_DZ.am = "ص";
ar_DZ.pm = "م";
expectedLocaleData.put(new Locale("ar", "DZ"), ar_DZ);
LocaleData en_SG = new LocaleData();
en_SG.dateFormat = "d/M/yy";
en_SG.twelveHourClock = true;
en_SG.hourMinuteDelimiter = ":";
en_SG.am = "AM";
en_SG.pm = "PM";
expectedLocaleData.put(new Locale("en", "SG"), en_SG);
LocaleData in_ID = new LocaleData();
in_ID.dateFormat = "dd/MM/yy";
in_ID.twelveHourClock = false;
in_ID.hourMinuteDelimiter = ":";
expectedLocaleData.put(new Locale("in", "ID"), in_ID);
LocaleData ar_MA = new LocaleData();
ar_MA.dateFormat = "dd/MM/yy";
ar_MA.twelveHourClock = true;
ar_MA.hourMinuteDelimiter = ":";
ar_MA.am = "ص";
ar_MA.pm = "م";
expectedLocaleData.put(new Locale("ar", "MA"), ar_MA);
LocaleData th_TH_u_ca_buddhist_nu_thai = new LocaleData();
th_TH_u_ca_buddhist_nu_thai.dateFormat = "d/M/yyyy";
th_TH_u_ca_buddhist_nu_thai.twelveHourClock = false;
th_TH_u_ca_buddhist_nu_thai.hourMinuteDelimiter = ".";
expectedLocaleData.put(new Locale("th", "TH", "u-ca-buddhist-nu-thai"),
th_TH_u_ca_buddhist_nu_thai);
LocaleData nb_NO = new LocaleData();
nb_NO.dateFormat = "dd.MM.yy";
nb_NO.twelveHourClock = false;
nb_NO.hourMinuteDelimiter = ":";
expectedLocaleData.put(new Locale("nb", "NO"), nb_NO);
LocaleData es_HN = new LocaleData();
es_HN.dateFormat = "MM-dd-yy";
es_HN.twelveHourClock = true;
es_HN.hourMinuteDelimiter = ":";
es_HN.am = "AM";
es_HN.pm = "PM";
expectedLocaleData.put(new Locale("es", "HN"), es_HN);
LocaleData hr_HR = new LocaleData();
hr_HR.dateFormat = "dd.MM.yy.";
hr_HR.twelveHourClock = false;
hr_HR.hourMinuteDelimiter = ":";
expectedLocaleData.put(new Locale("hr", "HR"), hr_HR);
LocaleData es_PR = new LocaleData();
es_PR.dateFormat = "MM-dd-yy";
es_PR.twelveHourClock = true;
es_PR.hourMinuteDelimiter = ":";
es_PR.am = "AM";
es_PR.pm = "PM";
expectedLocaleData.put(new Locale("es", "PR"), es_PR);
LocaleData es_PY = new LocaleData();
es_PY.dateFormat = "dd/MM/yy";
es_PY.twelveHourClock = true;
es_PY.hourMinuteDelimiter = ":";
es_PY.am = "AM";
es_PY.pm = "PM";
expectedLocaleData.put(new Locale("es", "PY"), es_PY);
LocaleData sr_ME = new LocaleData();
sr_ME.dateFormat = "d.M.yy.";
sr_ME.twelveHourClock = false;
sr_ME.hourMinuteDelimiter = ".";
expectedLocaleData.put(new Locale("sr", "ME"), sr_ME);
LocaleData de_AT = new LocaleData();
de_AT.dateFormat = "dd.MM.yy";
de_AT.twelveHourClock = false;
de_AT.hourMinuteDelimiter = ":";
expectedLocaleData.put(new Locale("de", "AT"), de_AT);
LocaleData is_IS = new LocaleData();
is_IS.dateFormat = "d.M.yyyy";
is_IS.twelveHourClock = false;
is_IS.hourMinuteDelimiter = ":";
expectedLocaleData.put(new Locale("is", "IS"), is_IS);
LocaleData bg_BG = new LocaleData();
bg_BG.dateFormat = "dd.MM.yy";
bg_BG.twelveHourClock = false;
bg_BG.hourMinuteDelimiter = ":";
expectedLocaleData.put(new Locale("bg", "BG"), bg_BG);
LocaleData cs_CZ = new LocaleData();
cs_CZ.dateFormat = "d.M.yy";
cs_CZ.twelveHourClock = false;
cs_CZ.hourMinuteDelimiter = ":";
expectedLocaleData.put(new Locale("cs", "CZ"), cs_CZ);
LocaleData en_PH = new LocaleData();
en_PH.dateFormat = "M/d/yy";
en_PH.twelveHourClock = true;
en_PH.hourMinuteDelimiter = ":";
en_PH.am = "AM";
en_PH.pm = "PM";
expectedLocaleData.put(new Locale("en", "PH"), en_PH);
LocaleData zh_TW = new LocaleData();
zh_TW.dateFormat = "yyyy/M/d";
zh_TW.twelveHourClock = true;
zh_TW.hourMinuteDelimiter = ":";
zh_TW.am = "上午";
zh_TW.pm = "下午";
expectedLocaleData.put(new Locale("zh", "TW"), zh_TW);
LocaleData ko_KR = new LocaleData();
ko_KR.dateFormat = "yy. M. d";
ko_KR.twelveHourClock = true;
ko_KR.hourMinuteDelimiter = ":";
ko_KR.am = "오전";
ko_KR.pm = "오후";
expectedLocaleData.put(new Locale("ko", "KR"), ko_KR);
LocaleData sk_SK = new LocaleData();
sk_SK.dateFormat = "d.M.yyyy";
sk_SK.twelveHourClock = false;
sk_SK.hourMinuteDelimiter = ":";
expectedLocaleData.put(new Locale("sk", "SK"), sk_SK);
LocaleData sr_LATN_ME = new LocaleData();
sr_LATN_ME.dateFormat = "d.M.yy.";
sr_LATN_ME.twelveHourClock = false;
sr_LATN_ME.hourMinuteDelimiter = ".";
expectedLocaleData.put(new Locale("sr", "LATN", "ME"), sr_LATN_ME);
LocaleData ar_OM = new LocaleData();
ar_OM.dateFormat = "dd/MM/yy";
ar_OM.twelveHourClock = true;
ar_OM.hourMinuteDelimiter = ":";
ar_OM.am = "ص";
ar_OM.pm = "م";
expectedLocaleData.put(new Locale("ar", "OM"), ar_OM);
LocaleData ru_RU = new LocaleData();
ru_RU.dateFormat = "dd.MM.yy";
ru_RU.twelveHourClock = false;
ru_RU.hourMinuteDelimiter = ":";
expectedLocaleData.put(new Locale("ru", "RU"), ru_RU);
LocaleData sq_AL = new LocaleData();
sq_AL.dateFormat = "yy-MM-dd";
sq_AL.twelveHourClock = true;
sq_AL.hourMinuteDelimiter = ".";
sq_AL.am = "PD";
sq_AL.pm = "MD";
expectedLocaleData.put(new Locale("sq", "AL"), sq_AL);
LocaleData es_AR = new LocaleData();
es_AR.dateFormat = "dd/MM/yy";
es_AR.twelveHourClock = false;
es_AR.hourMinuteDelimiter = ":";
expectedLocaleData.put(new Locale("es", "AR"), es_AR);
LocaleData sv_SE = new LocaleData();
sv_SE.dateFormat = "yyyy-MM-dd";
sv_SE.twelveHourClock = false;
sv_SE.hourMinuteDelimiter = ":";
expectedLocaleData.put(new Locale("sv", "SE"), sv_SE);
LocaleData ja_JP_x_lvariant_JP = new LocaleData();
ja_JP_x_lvariant_JP.dateFormat = "yy/MM/dd";
ja_JP_x_lvariant_JP.twelveHourClock = false;
ja_JP_x_lvariant_JP.hourMinuteDelimiter = ":";
expectedLocaleData.put(new Locale("ja", "JP", "x-lvariant-JP"),
ja_JP_x_lvariant_JP);
LocaleData da_DK = new LocaleData();
da_DK.dateFormat = "dd-MM-yy";
da_DK.twelveHourClock = false;
da_DK.hourMinuteDelimiter = ":";
expectedLocaleData.put(new Locale("da", "DK"), da_DK);
LocaleData uk_UA = new LocaleData();
uk_UA.dateFormat = "dd.MM.yy";
uk_UA.twelveHourClock = false;
uk_UA.hourMinuteDelimiter = ":";
expectedLocaleData.put(new Locale("uk", "UA"), uk_UA);
LocaleData th_TH_u_ca_buddhist = new LocaleData();
th_TH_u_ca_buddhist.dateFormat = "d/M/yyyy";
th_TH_u_ca_buddhist.twelveHourClock = false;
th_TH_u_ca_buddhist.hourMinuteDelimiter = ".";
expectedLocaleData.put(new Locale("th", "TH", "u-ca-buddhist"),
th_TH_u_ca_buddhist);
LocaleData en_US = new LocaleData();
en_US.dateFormat = "M/d/yy";
en_US.twelveHourClock = true;
en_US.hourMinuteDelimiter = ":";
en_US.am = "AM";
en_US.pm = "PM";
expectedLocaleData.put(new Locale("en", "US"), en_US);
LocaleData lv_LV = new LocaleData();
lv_LV.dateFormat = "yy.d.M";
lv_LV.twelveHourClock = false;
lv_LV.hourMinuteDelimiter = ":";
expectedLocaleData.put(new Locale("lv", "LV"), lv_LV);
LocaleData ja_JP_u_ca_japanese = new LocaleData();
ja_JP_u_ca_japanese.dateFormat = "yy/MM/dd";
ja_JP_u_ca_japanese.twelveHourClock = false;
ja_JP_u_ca_japanese.hourMinuteDelimiter = ":";
expectedLocaleData.put(new Locale("ja", "JP", "u-ca-japanese"),
ja_JP_u_ca_japanese);
LocaleData en_MT = new LocaleData();
en_MT.dateFormat = "dd/MM/yyyy";
en_MT.twelveHourClock = false;
en_MT.hourMinuteDelimiter = ":";
expectedLocaleData.put(new Locale("en", "MT"), en_MT);
LocaleData zh_CN = new LocaleData();
zh_CN.dateFormat = "yy-M-d";
zh_CN.twelveHourClock = true;
zh_CN.hourMinuteDelimiter = ":";
zh_CN.am = "上午";
zh_CN.pm = "下午";
expectedLocaleData.put(new Locale("zh", "CN"), zh_CN);
LocaleData nl_BE = new LocaleData();
nl_BE.dateFormat = "d/MM/yy";
nl_BE.twelveHourClock = false;
nl_BE.hourMinuteDelimiter = ":";
expectedLocaleData.put(new Locale("nl", "BE"), nl_BE);
LocaleData hi_IN = new LocaleData();
hi_IN.dateFormat = "d/M/yy";
hi_IN.twelveHourClock = true;
hi_IN.hourMinuteDelimiter = ":";
hi_IN.am = "पूर्वाह्न";
hi_IN.pm = "अपराह्न";
expectedLocaleData.put(new Locale("hi", "IN"), hi_IN);
LocaleData el_CY = new LocaleData();
el_CY.dateFormat = "dd/MM/yyyy";
el_CY.twelveHourClock = true;
el_CY.hourMinuteDelimiter = ":";
el_CY.am = "ΠΜ";
el_CY.pm = "ΜΜ";
expectedLocaleData.put(new Locale("el", "CY"), el_CY);
LocaleData de_CH = new LocaleData();
de_CH.dateFormat = "dd.MM.yy";
de_CH.twelveHourClock = false;
de_CH.hourMinuteDelimiter = ":";
expectedLocaleData.put(new Locale("de", "CH"), de_CH);
LocaleData ja_JP = new LocaleData();
ja_JP.dateFormat = "yy/MM/dd";
ja_JP.twelveHourClock = false;
ja_JP.hourMinuteDelimiter = ":";
expectedLocaleData.put(new Locale("ja", "JP"), ja_JP);
LocaleData ar_YE = new LocaleData();
ar_YE.dateFormat = "dd/MM/yy";
ar_YE.twelveHourClock = true;
ar_YE.hourMinuteDelimiter = ":";
ar_YE.am = "ص";
ar_YE.pm = "م";
expectedLocaleData.put(new Locale("ar", "YE"), ar_YE);
LocaleData ar_QA = new LocaleData();
ar_QA.dateFormat = "dd/MM/yy";
ar_QA.twelveHourClock = true;
ar_QA.hourMinuteDelimiter = ":";
ar_QA.am = "ص";
ar_QA.pm = "م";
expectedLocaleData.put(new Locale("ar", "QA"), ar_QA);
LocaleData es_GT = new LocaleData();
es_GT.dateFormat = "d/MM/yy";
es_GT.twelveHourClock = true;
es_GT.hourMinuteDelimiter = ":";
es_GT.am = "AM";
es_GT.pm = "PM";
expectedLocaleData.put(new Locale("es", "GT"), es_GT);
LocaleData nn_NO = new LocaleData();
nn_NO.dateFormat = "dd.MM.yy";
nn_NO.twelveHourClock = false;
nn_NO.hourMinuteDelimiter = ":";
expectedLocaleData.put(new Locale("nn", "NO"), nn_NO);
LocaleData es_PE = new LocaleData();
es_PE.dateFormat = "dd/MM/yy";
es_PE.twelveHourClock = true;
es_PE.hourMinuteDelimiter = ":";
es_PE.am = "AM";
es_PE.pm = "PM";
expectedLocaleData.put(new Locale("es", "PE"), es_PE);
LocaleData en_NZ = new LocaleData();
en_NZ.dateFormat = "d/MM/yy";
en_NZ.twelveHourClock = true;
en_NZ.hourMinuteDelimiter = ":";
en_NZ.am = "AM";
en_NZ.pm = "PM";
expectedLocaleData.put(new Locale("en", "NZ"), en_NZ);
LocaleData be_BY = new LocaleData();
be_BY.dateFormat = "d.M.yy";
be_BY.twelveHourClock = false;
be_BY.hourMinuteDelimiter = ".";
expectedLocaleData.put(new Locale("be", "BY"), be_BY);
LocaleData zh_SG = new LocaleData();
zh_SG.dateFormat = "dd/MM/yy";
zh_SG.twelveHourClock = true;
zh_SG.hourMinuteDelimiter = ":";
zh_SG.am = "上午";
zh_SG.pm = "下午";
expectedLocaleData.put(new Locale("zh", "SG"), zh_SG);
LocaleData ro_RO = new LocaleData();
ro_RO.dateFormat = "dd.MM.yyyy";
ro_RO.twelveHourClock = false;
ro_RO.hourMinuteDelimiter = ":";
expectedLocaleData.put(new Locale("ro", "RO"), ro_RO);
LocaleData es_PA = new LocaleData();
es_PA.dateFormat = "MM/dd/yy";
es_PA.twelveHourClock = true;
es_PA.hourMinuteDelimiter = ":";
es_PA.am = "AM";
es_PA.pm = "PM";
expectedLocaleData.put(new Locale("es", "PA"), es_PA);
LocaleData mt_MT = new LocaleData();
mt_MT.dateFormat = "dd/MM/yyyy";
mt_MT.twelveHourClock = false;
mt_MT.hourMinuteDelimiter = ":";
expectedLocaleData.put(new Locale("mt", "MT"), mt_MT);
LocaleData et_EE = new LocaleData();
et_EE.dateFormat = "d.MM.yy";
et_EE.twelveHourClock = false;
et_EE.hourMinuteDelimiter = ":";
expectedLocaleData.put(new Locale("et", "EE"), et_EE);
LocaleData it_CH = new LocaleData();
it_CH.dateFormat = "dd.MM.yy";
it_CH.twelveHourClock = false;
it_CH.hourMinuteDelimiter = ":";
expectedLocaleData.put(new Locale("it", "CH"), it_CH);
LocaleData th_TH_x_lvariant_TH = new LocaleData();
th_TH_x_lvariant_TH.dateFormat = "d/M/yyyy";
th_TH_x_lvariant_TH.twelveHourClock = false;
th_TH_x_lvariant_TH.hourMinuteDelimiter = ".";
expectedLocaleData.put(new Locale("th", "TH", "x-lvariant-TH"),
th_TH_x_lvariant_TH);
LocaleData tr_TR = new LocaleData();
tr_TR.dateFormat = "dd.MM.yyyy";
tr_TR.twelveHourClock = false;
tr_TR.hourMinuteDelimiter = ":";
expectedLocaleData.put(new Locale("tr", "TR"), tr_TR);
LocaleData fr_FR = new LocaleData();
fr_FR.dateFormat = "dd/MM/yy";
fr_FR.twelveHourClock = false;
fr_FR.hourMinuteDelimiter = ":";
expectedLocaleData.put(new Locale("fr", "FR"), fr_FR);
LocaleData vi_VN = new LocaleData();
vi_VN.dateFormat = "dd/MM/yyyy";
vi_VN.twelveHourClock = false;
vi_VN.hourMinuteDelimiter = ":";
expectedLocaleData.put(new Locale("vi", "VN"), vi_VN);
LocaleData en_GB = new LocaleData();
en_GB.dateFormat = "dd/MM/yy";
en_GB.twelveHourClock = false;
en_GB.hourMinuteDelimiter = ":";
expectedLocaleData.put(new Locale("en", "GB"), en_GB);
LocaleData fi_FI = new LocaleData();
fi_FI.dateFormat = "d.M.yyyy";
fi_FI.twelveHourClock = false;
fi_FI.hourMinuteDelimiter = ":";
expectedLocaleData.put(new Locale("fi", "FI"), fi_FI);
LocaleData en_CA = new LocaleData();
en_CA.dateFormat = "dd/MM/yy";
en_CA.twelveHourClock = true;
en_CA.hourMinuteDelimiter = ":";
en_CA.am = "AM";
en_CA.pm = "PM";
expectedLocaleData.put(new Locale("en", "CA"), en_CA);
LocaleData lt_LT = new LocaleData();
lt_LT.dateFormat = "yy.M.d";
lt_LT.twelveHourClock = false;
lt_LT.hourMinuteDelimiter = ".";
expectedLocaleData.put(new Locale("lt", "LT"), lt_LT);
LocaleData ar_AE = new LocaleData();
ar_AE.dateFormat = "dd/MM/yy";
ar_AE.twelveHourClock = true;
ar_AE.hourMinuteDelimiter = ":";
ar_AE.am = "ص";
ar_AE.pm = "م";
expectedLocaleData.put(new Locale("ar", "AE"), ar_AE);
LocaleData sl_SI = new LocaleData();
sl_SI.dateFormat = "d.M.y";
sl_SI.twelveHourClock = false;
sl_SI.hourMinuteDelimiter = ":";
expectedLocaleData.put(new Locale("sl", "SI"), sl_SI);
LocaleData es_DO = new LocaleData();
es_DO.dateFormat = "dd/MM/yy";
es_DO.twelveHourClock = true;
es_DO.hourMinuteDelimiter = ":";
es_DO.am = "AM";
es_DO.pm = "PM";
expectedLocaleData.put(new Locale("es", "DO"), es_DO);
LocaleData ar_IQ = new LocaleData();
ar_IQ.dateFormat = "dd/MM/yy";
ar_IQ.twelveHourClock = true;
ar_IQ.hourMinuteDelimiter = ":";
ar_IQ.am = "ص";
ar_IQ.pm = "م";
expectedLocaleData.put(new Locale("ar", "IQ"), ar_IQ);
LocaleData fr_CH = new LocaleData();
fr_CH.dateFormat = "dd.MM.yy";
fr_CH.twelveHourClock = false;
fr_CH.hourMinuteDelimiter = ":";
expectedLocaleData.put(new Locale("fr", "CH"), fr_CH);
LocaleData es_EC = new LocaleData();
es_EC.dateFormat = "dd/MM/yy";
es_EC.twelveHourClock = false;
es_EC.hourMinuteDelimiter = ":";
expectedLocaleData.put(new Locale("es", "EC"), es_EC);
LocaleData es_US = new LocaleData();
es_US.dateFormat = "M/d/yy";
es_US.twelveHourClock = true;
es_US.hourMinuteDelimiter = ":";
es_US.am = "a.m.";
es_US.pm = "p.m.";
expectedLocaleData.put(new Locale("es", "US"), es_US);
LocaleData iw_IL = new LocaleData();
iw_IL.dateFormat = "dd/MM/yy";
iw_IL.twelveHourClock = false;
iw_IL.hourMinuteDelimiter = ":";
expectedLocaleData.put(new Locale("iw", "IL"), iw_IL);
LocaleData ar_SA = new LocaleData();
ar_SA.dateFormat = "dd/MM/yy";
ar_SA.twelveHourClock = true;
ar_SA.hourMinuteDelimiter = ":";
ar_SA.am = "ص";
ar_SA.pm = "م";
expectedLocaleData.put(new Locale("ar", "SA"), ar_SA);
LocaleData ca_ES = new LocaleData();
ca_ES.dateFormat = "dd/MM/yy";
ca_ES.twelveHourClock = false;
ca_ES.hourMinuteDelimiter = ":";
expectedLocaleData.put(new Locale("ca", "ES"), ca_ES);
LocaleData de_DE = new LocaleData();
de_DE.dateFormat = "dd.MM.yy";
de_DE.twelveHourClock = false;
de_DE.hourMinuteDelimiter = ":";
expectedLocaleData.put(new Locale("de", "DE"), de_DE);
LocaleData sr_BA = new LocaleData();
sr_BA.dateFormat = "yy-MM-dd";
sr_BA.twelveHourClock = false;
sr_BA.hourMinuteDelimiter = ":";
expectedLocaleData.put(new Locale("sr", "BA"), sr_BA);
LocaleData zh_HK = new LocaleData();
zh_HK.dateFormat = "yy'年'M'月'd'日'";
zh_HK.twelveHourClock = true;
zh_HK.hourMinuteDelimiter = ":";
zh_HK.am = "上午";
zh_HK.pm = "下午";
expectedLocaleData.put(new Locale("zh", "HK"), zh_HK);
LocaleData ar_SD = new LocaleData();
ar_SD.dateFormat = "dd/MM/yy";
ar_SD.twelveHourClock = true;
ar_SD.hourMinuteDelimiter = ":";
ar_SD.am = "ص";
ar_SD.pm = "م";
expectedLocaleData.put(new Locale("ar", "SD"), ar_SD);
LocaleData pt_BR = new LocaleData();
pt_BR.dateFormat = "dd/MM/yy";
pt_BR.twelveHourClock = false;
pt_BR.hourMinuteDelimiter = ":";
expectedLocaleData.put(new Locale("pt", "BR"), pt_BR);
LocaleData sr_RS = new LocaleData();
sr_RS.dateFormat = "d.M.yy.";
sr_RS.twelveHourClock = false;
sr_RS.hourMinuteDelimiter = ".";
expectedLocaleData.put(new Locale("sr", "RS"), sr_RS);
LocaleData es_UY = new LocaleData();
es_UY.dateFormat = "dd/MM/yy";
es_UY.twelveHourClock = true;
es_UY.hourMinuteDelimiter = ":";
es_UY.am = "AM";
es_UY.pm = "PM";
expectedLocaleData.put(new Locale("es", "UY"), es_UY);
LocaleData ar_BH = new LocaleData();
ar_BH.dateFormat = "dd/MM/yy";
ar_BH.twelveHourClock = true;
ar_BH.hourMinuteDelimiter = ":";
ar_BH.am = "ص";
ar_BH.pm = "م";
expectedLocaleData.put(new Locale("ar", "BH"), ar_BH);
LocaleData es_ES = new LocaleData();
es_ES.dateFormat = "d/MM/yy";
es_ES.twelveHourClock = false;
es_ES.hourMinuteDelimiter = ":";
expectedLocaleData.put(new Locale("es", "ES"), es_ES);
LocaleData ar_JO = new LocaleData();
ar_JO.dateFormat = "dd/MM/yy";
ar_JO.twelveHourClock = true;
ar_JO.hourMinuteDelimiter = ":";
ar_JO.am = "ص";
ar_JO.pm = "م";
expectedLocaleData.put(new Locale("ar", "JO"), ar_JO);
LocaleData es_VE = new LocaleData();
es_VE.dateFormat = "dd/MM/yy";
es_VE.twelveHourClock = true;
es_VE.hourMinuteDelimiter = ":";
es_VE.am = "AM";
es_VE.pm = "PM";
expectedLocaleData.put(new Locale("es", "VE"), es_VE);
LocaleData es_MX = new LocaleData();
es_MX.dateFormat = "d/MM/yy";
es_MX.twelveHourClock = true;
es_MX.hourMinuteDelimiter = ":";
es_MX.am = "AM";
es_MX.pm = "PM";
expectedLocaleData.put(new Locale("es", "MX"), es_MX);
LocaleData it_IT = new LocaleData();
it_IT.dateFormat = "dd/MM/yy";
it_IT.twelveHourClock = false;
it_IT.hourMinuteDelimiter = ".";
expectedLocaleData.put(new Locale("it", "IT"), it_IT);
LocaleData no_NO_x_lvariant_NY = new LocaleData();
no_NO_x_lvariant_NY.dateFormat = "dd.MM.yy";
no_NO_x_lvariant_NY.twelveHourClock = false;
no_NO_x_lvariant_NY.hourMinuteDelimiter = ":";
expectedLocaleData.put(new Locale("no", "NO", "x-lvariant-NY"),
no_NO_x_lvariant_NY);
LocaleData de_LU = new LocaleData();
de_LU.dateFormat = "dd.MM.yy";
de_LU.twelveHourClock = false;
de_LU.hourMinuteDelimiter = ":";
expectedLocaleData.put(new Locale("de", "LU"), de_LU);
LocaleData fr_LU = new LocaleData();
fr_LU.dateFormat = "dd/MM/yy";
fr_LU.twelveHourClock = false;
fr_LU.hourMinuteDelimiter = ":";
expectedLocaleData.put(new Locale("fr", "LU"), fr_LU);
LocaleData es_NI = new LocaleData();
es_NI.dateFormat = "MM-dd-yy";
es_NI.twelveHourClock = true;
es_NI.hourMinuteDelimiter = ":";
es_NI.am = "AM";
es_NI.pm = "PM";
expectedLocaleData.put(new Locale("es", "NI"), es_NI);
LocaleData th_TH = new LocaleData();
th_TH.dateFormat = "d/M/yyyy";
th_TH.twelveHourClock = false;
th_TH.hourMinuteDelimiter = ".";
expectedLocaleData.put(new Locale("th", "TH"), th_TH);
}
private LocaleService localeService;
@Before
public void setup() {
localeService = new LocaleService(Mockito.mock(UI.class),
new LocaleServiceState());
}
@Test
public void localeDateTimeFormat() {
for (Locale l : expectedLocaleData.keySet()) {
Assert.assertEquals("Error verifying locale " + l,
expectedLocaleData.get(l).dateFormat,
localeService.createLocaleData(l).dateFormat);
Assert.assertEquals("Error verifying locale " + l,
expectedLocaleData.get(l).twelveHourClock,
localeService.createLocaleData(l).twelveHourClock);
Assert.assertEquals("Error verifying locale " + l,
expectedLocaleData.get(l).am,
localeService.createLocaleData(l).am);
Assert.assertEquals("Error verifying locale " + l,
expectedLocaleData.get(l).pm,
localeService.createLocaleData(l).pm);
}
}
public static void main(String[] args) {
for (String s : JAVA8_SUPPORTED_LOCALES) {
String[] parts = s.split("-", 3);
Locale l;
if (parts.length == 1) {
l = new Locale(parts[0]);
} else if (parts.length == 2) {
l = new Locale(parts[0], parts[1]);
} else if (parts.length == 3) {
l = new Locale(parts[0], parts[1], parts[2]);
} else {
throw new RuntimeException("Unexpected locale: " + s);
}
generateData(l);
}
}
/**
* Helper method for generating the above data using LocaleService.
*
* @param locale
* the locale to generate data for
*/
private static void generateData(Locale locale) {
System.out.println();
String id = locale.getLanguage();
if (!locale.getCountry().equals("")) {
id += "_" + locale.getCountry();
if (!locale.getVariant().equals("")) {
id += "_" + locale.getVariant();
}
}
String field = id.replace('-', '_');
LocaleService localeService = new LocaleService(Mockito.mock(UI.class),
new LocaleServiceState());
LocaleData localeData = localeService.createLocaleData(locale);
System.out.println("LocaleData " + field + " = new LocaleData();");
System.out.println(
field + ".dateFormat = \"" + localeData.dateFormat + "\";");
System.out.println(field + ".twelveHourClock = "
+ localeData.twelveHourClock + ";");
System.out.println(field + ".hourMinuteDelimiter = \""
+ localeData.hourMinuteDelimiter + "\";");
if (localeData.twelveHourClock) {
System.out.println(field + ".am = \"" + localeData.am + "\";");
System.out.println(field + ".pm = \"" + localeData.pm + "\";");
}
System.out.println("expectedLocaleData.put(new Locale(\""
+ id.replaceAll("_", "\",\"") + "\"), " + field + ");");
}
}