test/java/util/Calendar/Bug8185841.java
changeset 47473 5d798d729fec
equal deleted inserted replaced
47472:3937719e6371 47473:5d798d729fec
       
     1 /*
       
     2  * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
       
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
       
     4  *
       
     5  * This code is free software; you can redistribute it and/or modify it
       
     6  * under the terms of the GNU General Public License version 2 only, as
       
     7  * published by the Free Software Foundation.
       
     8  *
       
     9  * This code is distributed in the hope that it will be useful, but WITHOUT
       
    10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
       
    11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
       
    12  * version 2 for more details (a copy is included in the LICENSE file that
       
    13  * accompanied this code).
       
    14  *
       
    15  * You should have received a copy of the GNU General Public License version
       
    16  * 2 along with this work; if not, write to the Free Software Foundation,
       
    17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
       
    18  *
       
    19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
       
    20  * or visit www.oracle.com if you need additional information or have any
       
    21  * questions.
       
    22  */
       
    23 
       
    24  /*
       
    25  * @test
       
    26  * @bug 8185841
       
    27  * @summary Test that Region dependent Bundles are added/removed correctly.
       
    28  * @modules jdk.localedata
       
    29  */
       
    30 
       
    31  /*
       
    32 This test is dependent on a particular version of CLDR.
       
    33  */
       
    34 import java.net.URI;
       
    35 import java.nio.file.FileSystem;
       
    36 import java.nio.file.FileSystems;
       
    37 import java.nio.file.Files;
       
    38 import java.nio.file.Path;
       
    39 import java.util.Collections;
       
    40 import java.util.HashSet;
       
    41 import java.util.Set;
       
    42 import java.util.stream.Collectors;
       
    43 
       
    44 public class Bug8185841 {
       
    45     // Golden data for Region dependent Bundles in CLDR29.
       
    46 
       
    47     private static final Set<String> expectedBundles
       
    48             = Set.of("CalendarData_af_NA.class", "CalendarData_af_ZA.class", "CalendarData_agq_CM.class",
       
    49                     "CalendarData_ak_GH.class", "CalendarData_am_ET.class", "CalendarData_ar_AE.class",
       
    50                     "CalendarData_ar_BH.class", "CalendarData_ar_DJ.class", "CalendarData_ar_DZ.class",
       
    51                     "CalendarData_ar_EG.class", "CalendarData_ar_EH.class", "CalendarData_ar_ER.class",
       
    52                     "CalendarData_ar_IL.class", "CalendarData_ar_IQ.class", "CalendarData_ar_JO.class",
       
    53                     "CalendarData_ar_KM.class", "CalendarData_ar_KW.class", "CalendarData_ar_LB.class",
       
    54                     "CalendarData_ar_LY.class", "CalendarData_ar_MA.class", "CalendarData_ar_MR.class",
       
    55                     "CalendarData_ar_OM.class", "CalendarData_ar_PS.class", "CalendarData_ar_QA.class",
       
    56                     "CalendarData_ar_SA.class", "CalendarData_ar_SD.class", "CalendarData_ar_SO.class",
       
    57                     "CalendarData_ar_SS.class", "CalendarData_ar_SY.class", "CalendarData_ar_TD.class",
       
    58                     "CalendarData_ar_TN.class", "CalendarData_ar_YE.class", "CalendarData_as_IN.class",
       
    59                     "CalendarData_asa_TZ.class", "CalendarData_ast_ES.class", "CalendarData_az_AZ.class",
       
    60                     "CalendarData_az_Cyrl_AZ.class", "CalendarData_bas_CM.class", "CalendarData_be_BY.class",
       
    61                     "CalendarData_bem_ZM.class", "CalendarData_bez_TZ.class", "CalendarData_bg_BG.class",
       
    62                     "CalendarData_bm_ML.class", "CalendarData_bn_BD.class", "CalendarData_bn_IN.class",
       
    63                     "CalendarData_bo_CN.class", "CalendarData_bo_IN.class", "CalendarData_br_FR.class",
       
    64                     "CalendarData_brx_IN.class", "CalendarData_bs_BA.class", "CalendarData_bs_Cyrl_BA.class",
       
    65                     "CalendarData_ca_AD.class", "CalendarData_ca_ES.class", "CalendarData_ca_FR.class",
       
    66                     "CalendarData_ca_IT.class", "CalendarData_ce_RU.class", "CalendarData_cgg_UG.class",
       
    67                     "CalendarData_chr_US.class", "CalendarData_ckb_IQ.class", "CalendarData_ckb_IR.class",
       
    68                     "CalendarData_cs_CZ.class", "CalendarData_cu_RU.class", "CalendarData_cy_GB.class",
       
    69                     "CalendarData_da_DK.class", "CalendarData_da_GL.class", "CalendarData_dav_KE.class",
       
    70                     "CalendarData_de_AT.class", "CalendarData_de_BE.class", "CalendarData_de_CH.class",
       
    71                     "CalendarData_de_DE.class", "CalendarData_de_LI.class", "CalendarData_de_LU.class",
       
    72                     "CalendarData_dje_NE.class", "CalendarData_dsb_DE.class", "CalendarData_dua_CM.class",
       
    73                     "CalendarData_dyo_SN.class", "CalendarData_dz_BT.class", "CalendarData_ebu_KE.class",
       
    74                     "CalendarData_ee_GH.class", "CalendarData_ee_TG.class", "CalendarData_el_CY.class",
       
    75                     "CalendarData_el_GR.class", "CalendarData_en_AG.class", "CalendarData_en_AI.class",
       
    76                     "CalendarData_en_AS.class", "CalendarData_en_AT.class", "CalendarData_en_AU.class",
       
    77                     "CalendarData_en_BB.class", "CalendarData_en_BE.class", "CalendarData_en_BI.class",
       
    78                     "CalendarData_en_BM.class", "CalendarData_en_BS.class", "CalendarData_en_BW.class",
       
    79                     "CalendarData_en_BZ.class", "CalendarData_en_CA.class", "CalendarData_en_CC.class",
       
    80                     "CalendarData_en_CH.class", "CalendarData_en_CK.class", "CalendarData_en_CM.class",
       
    81                     "CalendarData_en_CX.class", "CalendarData_en_CY.class", "CalendarData_en_DE.class",
       
    82                     "CalendarData_en_DG.class", "CalendarData_en_DK.class", "CalendarData_en_DM.class",
       
    83                     "CalendarData_en_ER.class", "CalendarData_en_FI.class", "CalendarData_en_FJ.class",
       
    84                     "CalendarData_en_FK.class", "CalendarData_en_FM.class", "CalendarData_en_GB.class",
       
    85                     "CalendarData_en_GD.class", "CalendarData_en_GG.class", "CalendarData_en_GH.class",
       
    86                     "CalendarData_en_GI.class", "CalendarData_en_GM.class", "CalendarData_en_GU.class",
       
    87                     "CalendarData_en_GY.class", "CalendarData_en_HK.class", "CalendarData_en_IE.class",
       
    88                     "CalendarData_en_IL.class", "CalendarData_en_IM.class", "CalendarData_en_IN.class",
       
    89                     "CalendarData_en_IO.class", "CalendarData_en_JE.class", "CalendarData_en_JM.class",
       
    90                     "CalendarData_en_KE.class", "CalendarData_en_KI.class", "CalendarData_en_KN.class",
       
    91                     "CalendarData_en_KY.class", "CalendarData_en_LC.class", "CalendarData_en_LR.class",
       
    92                     "CalendarData_en_LS.class", "CalendarData_en_MG.class", "CalendarData_en_MH.class",
       
    93                     "CalendarData_en_MO.class", "CalendarData_en_MP.class", "CalendarData_en_MS.class",
       
    94                     "CalendarData_en_MT.class", "CalendarData_en_MU.class", "CalendarData_en_MW.class",
       
    95                     "CalendarData_en_MY.class", "CalendarData_en_NA.class", "CalendarData_en_NF.class",
       
    96                     "CalendarData_en_NG.class", "CalendarData_en_NL.class", "CalendarData_en_NR.class",
       
    97                     "CalendarData_en_NU.class", "CalendarData_en_NZ.class", "CalendarData_en_PG.class",
       
    98                     "CalendarData_en_PH.class", "CalendarData_en_PK.class", "CalendarData_en_PN.class",
       
    99                     "CalendarData_en_PR.class", "CalendarData_en_PW.class", "CalendarData_en_RW.class",
       
   100                     "CalendarData_en_SB.class", "CalendarData_en_SC.class", "CalendarData_en_SD.class",
       
   101                     "CalendarData_en_SE.class", "CalendarData_en_SG.class", "CalendarData_en_SH.class",
       
   102                     "CalendarData_en_SI.class", "CalendarData_en_SL.class", "CalendarData_en_SS.class",
       
   103                     "CalendarData_en_SX.class", "CalendarData_en_SZ.class", "CalendarData_en_TC.class",
       
   104                     "CalendarData_en_TK.class", "CalendarData_en_TO.class", "CalendarData_en_TT.class",
       
   105                     "CalendarData_en_TV.class", "CalendarData_en_TZ.class", "CalendarData_en_UG.class",
       
   106                     "CalendarData_en_UM.class", "CalendarData_en_VC.class", "CalendarData_en_VG.class",
       
   107                     "CalendarData_en_VI.class", "CalendarData_en_VU.class", "CalendarData_en_WS.class",
       
   108                     "CalendarData_en_ZA.class", "CalendarData_en_ZM.class", "CalendarData_en_ZW.class",
       
   109                     "CalendarData_es_AR.class", "CalendarData_es_BO.class", "CalendarData_es_BR.class",
       
   110                     "CalendarData_es_CL.class", "CalendarData_es_CO.class", "CalendarData_es_CR.class",
       
   111                     "CalendarData_es_CU.class", "CalendarData_es_DO.class", "CalendarData_es_EA.class",
       
   112                     "CalendarData_es_EC.class", "CalendarData_es_ES.class", "CalendarData_es_GQ.class",
       
   113                     "CalendarData_es_GT.class", "CalendarData_es_HN.class", "CalendarData_es_IC.class",
       
   114                     "CalendarData_es_MX.class", "CalendarData_es_NI.class", "CalendarData_es_PA.class",
       
   115                     "CalendarData_es_PE.class", "CalendarData_es_PH.class", "CalendarData_es_PR.class",
       
   116                     "CalendarData_es_PY.class", "CalendarData_es_SV.class", "CalendarData_es_US.class",
       
   117                     "CalendarData_es_UY.class", "CalendarData_es_VE.class", "CalendarData_et_EE.class",
       
   118                     "CalendarData_eu_ES.class", "CalendarData_ewo_CM.class", "CalendarData_fa_AF.class",
       
   119                     "CalendarData_fa_IR.class", "CalendarData_ff_CM.class", "CalendarData_ff_GN.class",
       
   120                     "CalendarData_ff_MR.class", "CalendarData_ff_SN.class", "CalendarData_fi_FI.class",
       
   121                     "CalendarData_fil_PH.class", "CalendarData_fo_DK.class", "CalendarData_fo_FO.class",
       
   122                     "CalendarData_fr_BE.class", "CalendarData_fr_BF.class", "CalendarData_fr_BI.class",
       
   123                     "CalendarData_fr_BJ.class", "CalendarData_fr_BL.class", "CalendarData_fr_CA.class",
       
   124                     "CalendarData_fr_CD.class", "CalendarData_fr_CF.class", "CalendarData_fr_CG.class",
       
   125                     "CalendarData_fr_CH.class", "CalendarData_fr_CI.class", "CalendarData_fr_CM.class",
       
   126                     "CalendarData_fr_DJ.class", "CalendarData_fr_DZ.class", "CalendarData_fr_FR.class",
       
   127                     "CalendarData_fr_GA.class", "CalendarData_fr_GF.class", "CalendarData_fr_GN.class",
       
   128                     "CalendarData_fr_GP.class", "CalendarData_fr_GQ.class", "CalendarData_fr_HT.class",
       
   129                     "CalendarData_fr_KM.class", "CalendarData_fr_LU.class", "CalendarData_fr_MA.class",
       
   130                     "CalendarData_fr_MC.class", "CalendarData_fr_MF.class", "CalendarData_fr_MG.class",
       
   131                     "CalendarData_fr_ML.class", "CalendarData_fr_MQ.class", "CalendarData_fr_MR.class",
       
   132                     "CalendarData_fr_MU.class", "CalendarData_fr_NC.class", "CalendarData_fr_NE.class",
       
   133                     "CalendarData_fr_PF.class", "CalendarData_fr_PM.class", "CalendarData_fr_RE.class",
       
   134                     "CalendarData_fr_RW.class", "CalendarData_fr_SC.class", "CalendarData_fr_SN.class",
       
   135                     "CalendarData_fr_SY.class", "CalendarData_fr_TD.class", "CalendarData_fr_TG.class",
       
   136                     "CalendarData_fr_TN.class", "CalendarData_fr_VU.class", "CalendarData_fr_WF.class",
       
   137                     "CalendarData_fr_YT.class", "CalendarData_fur_IT.class", "CalendarData_fy_NL.class",
       
   138                     "CalendarData_ga_IE.class", "CalendarData_gd_GB.class", "CalendarData_gl_ES.class",
       
   139                     "CalendarData_gsw_CH.class", "CalendarData_gsw_FR.class", "CalendarData_gsw_LI.class",
       
   140                     "CalendarData_gu_IN.class", "CalendarData_guz_KE.class", "CalendarData_gv_IM.class",
       
   141                     "CalendarData_ha_GH.class", "CalendarData_ha_NE.class", "CalendarData_ha_NG.class",
       
   142                     "CalendarData_haw_US.class", "CalendarData_hi_IN.class", "CalendarData_hr_BA.class",
       
   143                     "CalendarData_hr_HR.class", "CalendarData_hsb_DE.class", "CalendarData_hu_HU.class",
       
   144                     "CalendarData_hy_AM.class", "CalendarData_ig_NG.class", "CalendarData_ii_CN.class",
       
   145                     "CalendarData_in_ID.class", "CalendarData_is_IS.class", "CalendarData_it_CH.class",
       
   146                     "CalendarData_it_IT.class", "CalendarData_it_SM.class", "CalendarData_iw_IL.class",
       
   147                     "CalendarData_ja_JP.class", "CalendarData_jgo_CM.class", "CalendarData_jmc_TZ.class",
       
   148                     "CalendarData_ka_GE.class", "CalendarData_kab_DZ.class", "CalendarData_kam_KE.class",
       
   149                     "CalendarData_kde_TZ.class", "CalendarData_kea_CV.class", "CalendarData_khq_ML.class",
       
   150                     "CalendarData_ki_KE.class", "CalendarData_kk_KZ.class", "CalendarData_kkj_CM.class",
       
   151                     "CalendarData_kl_GL.class", "CalendarData_kln_KE.class", "CalendarData_km_KH.class",
       
   152                     "CalendarData_kn_IN.class", "CalendarData_ko_KP.class", "CalendarData_ko_KR.class",
       
   153                     "CalendarData_kok_IN.class", "CalendarData_ks_IN.class", "CalendarData_ksb_TZ.class",
       
   154                     "CalendarData_ksf_CM.class", "CalendarData_ksh_DE.class", "CalendarData_kw_GB.class",
       
   155                     "CalendarData_ky_KG.class", "CalendarData_lag_TZ.class", "CalendarData_lb_LU.class",
       
   156                     "CalendarData_lg_UG.class", "CalendarData_lkt_US.class", "CalendarData_ln_AO.class",
       
   157                     "CalendarData_ln_CD.class", "CalendarData_ln_CF.class", "CalendarData_ln_CG.class",
       
   158                     "CalendarData_lo_LA.class", "CalendarData_lrc_IQ.class", "CalendarData_lrc_IR.class",
       
   159                     "CalendarData_lt_LT.class", "CalendarData_lu_CD.class", "CalendarData_luo_KE.class",
       
   160                     "CalendarData_luy_KE.class", "CalendarData_lv_LV.class", "CalendarData_mas_KE.class",
       
   161                     "CalendarData_mas_TZ.class", "CalendarData_mer_KE.class", "CalendarData_mfe_MU.class",
       
   162                     "CalendarData_mg_MG.class", "CalendarData_mgh_MZ.class", "CalendarData_mgo_CM.class",
       
   163                     "CalendarData_mk_MK.class", "CalendarData_ml_IN.class", "CalendarData_mn_MN.class",
       
   164                     "CalendarData_mr_IN.class", "CalendarData_ms_BN.class", "CalendarData_ms_MY.class",
       
   165                     "CalendarData_ms_SG.class", "CalendarData_mt_MT.class", "CalendarData_mua_CM.class",
       
   166                     "CalendarData_my_MM.class", "CalendarData_mzn_IR.class", "CalendarData_naq_NA.class",
       
   167                     "CalendarData_nb_NO.class", "CalendarData_nb_SJ.class", "CalendarData_nd_ZW.class",
       
   168                     "CalendarData_ne_IN.class", "CalendarData_ne_NP.class", "CalendarData_nl_AW.class",
       
   169                     "CalendarData_nl_BE.class", "CalendarData_nl_BQ.class", "CalendarData_nl_CW.class",
       
   170                     "CalendarData_nl_NL.class", "CalendarData_nl_SR.class", "CalendarData_nl_SX.class",
       
   171                     "CalendarData_nmg_CM.class", "CalendarData_nnh_CM.class", "CalendarData_nus_SS.class",
       
   172                     "CalendarData_nyn_UG.class", "CalendarData_om_ET.class", "CalendarData_om_KE.class",
       
   173                     "CalendarData_or_IN.class", "CalendarData_os_GE.class", "CalendarData_os_RU.class",
       
   174                     "CalendarData_pa_Arab_PK.class", "CalendarData_pa_IN.class", "CalendarData_pa_PK.class",
       
   175                     "CalendarData_pl_PL.class", "CalendarData_ps_AF.class", "CalendarData_pt_AO.class",
       
   176                     "CalendarData_pt_BR.class", "CalendarData_pt_CV.class", "CalendarData_pt_GQ.class",
       
   177                     "CalendarData_pt_GW.class", "CalendarData_pt_MO.class", "CalendarData_pt_MZ.class",
       
   178                     "CalendarData_pt_PT.class", "CalendarData_pt_ST.class", "CalendarData_pt_TL.class",
       
   179                     "CalendarData_qu_BO.class", "CalendarData_qu_EC.class", "CalendarData_qu_PE.class",
       
   180                     "CalendarData_rm_CH.class", "CalendarData_rn_BI.class", "CalendarData_ro_MD.class",
       
   181                     "CalendarData_ro_RO.class", "CalendarData_rof_TZ.class", "CalendarData_ru_BY.class",
       
   182                     "CalendarData_ru_KG.class", "CalendarData_ru_KZ.class", "CalendarData_ru_MD.class",
       
   183                     "CalendarData_ru_RU.class", "CalendarData_ru_UA.class", "CalendarData_rw_RW.class",
       
   184                     "CalendarData_rwk_TZ.class", "CalendarData_sah_RU.class", "CalendarData_saq_KE.class",
       
   185                     "CalendarData_sbp_TZ.class", "CalendarData_se_FI.class", "CalendarData_se_NO.class",
       
   186                     "CalendarData_se_SE.class", "CalendarData_seh_MZ.class", "CalendarData_ses_ML.class",
       
   187                     "CalendarData_sg_CF.class", "CalendarData_shi_Latn_MA.class", "CalendarData_shi_MA.class",
       
   188                     "CalendarData_si_LK.class", "CalendarData_sk_SK.class", "CalendarData_sl_SI.class",
       
   189                     "CalendarData_smn_FI.class", "CalendarData_sn_ZW.class", "CalendarData_so_DJ.class",
       
   190                     "CalendarData_so_ET.class", "CalendarData_so_KE.class", "CalendarData_so_SO.class",
       
   191                     "CalendarData_sq_AL.class", "CalendarData_sq_MK.class", "CalendarData_sq_XK.class",
       
   192                     "CalendarData_sr_BA.class", "CalendarData_sr_Latn_BA.class", "CalendarData_sr_Latn_ME.class",
       
   193                     "CalendarData_sr_Latn_RS.class", "CalendarData_sr_Latn_XK.class", "CalendarData_sr_ME.class",
       
   194                     "CalendarData_sr_RS.class", "CalendarData_sr_XK.class", "CalendarData_sv_AX.class",
       
   195                     "CalendarData_sv_FI.class", "CalendarData_sv_SE.class", "CalendarData_sw_CD.class",
       
   196                     "CalendarData_sw_KE.class", "CalendarData_sw_TZ.class", "CalendarData_sw_UG.class",
       
   197                     "CalendarData_ta_IN.class", "CalendarData_ta_LK.class", "CalendarData_ta_MY.class",
       
   198                     "CalendarData_ta_SG.class", "CalendarData_te_IN.class", "CalendarData_teo_KE.class",
       
   199                     "CalendarData_teo_UG.class", "CalendarData_th_TH.class", "CalendarData_ti_ER.class",
       
   200                     "CalendarData_ti_ET.class", "CalendarData_tk_TM.class", "CalendarData_to_TO.class",
       
   201                     "CalendarData_tr_CY.class", "CalendarData_tr_TR.class", "CalendarData_twq_NE.class",
       
   202                     "CalendarData_tzm_MA.class", "CalendarData_ug_CN.class", "CalendarData_uk_UA.class",
       
   203                     "CalendarData_ur_IN.class", "CalendarData_ur_PK.class", "CalendarData_uz_AF.class",
       
   204                     "CalendarData_uz_Arab_AF.class", "CalendarData_uz_Cyrl_UZ.class", "CalendarData_uz_UZ.class",
       
   205                     "CalendarData_vai_LR.class", "CalendarData_vai_Latn_LR.class", "CalendarData_vi_VN.class",
       
   206                     "CalendarData_vun_TZ.class", "CalendarData_wae_CH.class", "CalendarData_xog_UG.class",
       
   207                     "CalendarData_yav_CM.class", "CalendarData_yo_BJ.class", "CalendarData_yo_NG.class",
       
   208                     "CalendarData_yue_HK.class", "CalendarData_zgh_MA.class", "CalendarData_zh_CN.class",
       
   209                     "CalendarData_zh_HK.class", "CalendarData_zh_Hant_HK.class", "CalendarData_zh_Hant_TW.class",
       
   210                     "CalendarData_zh_MO.class", "CalendarData_zh_SG.class", "CalendarData_zh_TW.class", "CalendarData_zu_ZA.class");
       
   211 
       
   212     private static Set<String> removedBundles = Set.of(
       
   213             "CalendarData_az_Latn_AZ.class", "CalendarData_bs_Latn_BA.class",
       
   214             "CalendarData_pa_Guru_IN.class", "CalendarData_shi_Tfng_MA.class",
       
   215             "CalendarData_sr_Cyrl_BA.class", "CalendarData_sr_Cyrl_ME.class",
       
   216             "CalendarData_sr_Cyrl_RS.class", "CalendarData_sr_Cyrl_XK.class",
       
   217             "CalendarData_uz_Latn_UZ.class", "CalendarData_vai_Vaii_LR.class",
       
   218             "CalendarData_zh_Hans_CN.class", "CalendarData_zh_Hans_HK.class",
       
   219             "CalendarData_zh_Hans_MO.class", "CalendarData_zh_Hans_SG.class");
       
   220 
       
   221     private static Set<String> addedBundles = Set.of(
       
   222             "CalendarData_az_AZ.class", "CalendarData_bs_BA.class",
       
   223             "CalendarData_pa_IN.class", "CalendarData_pa_PK.class",
       
   224             "CalendarData_shi_MA.class", "CalendarData_sr_BA.class",
       
   225             "CalendarData_sr_ME.class", "CalendarData_sr_RS.class",
       
   226             "CalendarData_sr_XK.class", "CalendarData_uz_UZ.class",
       
   227             "CalendarData_uz_AF.class", "CalendarData_vai_LR.class",
       
   228             "CalendarData_zh_CN.class", "CalendarData_zh_HK.class",
       
   229             "CalendarData_zh_MO.class", "CalendarData_zh_SG.class", "CalendarData_zh_TW.class");
       
   230 
       
   231     private static Set<String> retrievedBundles = Collections.EMPTY_SET;
       
   232 
       
   233     public static void main(String[] args) throws Exception {
       
   234         FileSystem fs = FileSystems.newFileSystem(URI.create("jrt:/"),
       
   235                 Collections.emptyMap());
       
   236         Path path = fs.getPath("/", "modules", "jdk.localedata", "sun/util/resources/cldr/ext");
       
   237         retrievedBundles = Files.walk(path)
       
   238                                 .map(p -> p.getFileName().toString())
       
   239                                 .filter(p -> p.startsWith("CalendarData_"))
       
   240                                 .collect(Collectors.toSet());
       
   241         if (!retrievedBundles.equals(expectedBundles)) {
       
   242             checkAddedBundles();
       
   243             checkRemovedBundles();
       
   244             Set<String> retrievedBundlesSet = new HashSet<>(retrievedBundles);
       
   245             retrievedBundlesSet.removeAll(expectedBundles);
       
   246             throw new RuntimeException("Unexpected "
       
   247                     + " bundles " + retrievedBundlesSet + " are present in jdk.localedata module ");
       
   248 
       
   249         }
       
   250     }
       
   251 
       
   252     /**
       
   253      * This method checks that bundles which have been additionally generated
       
   254      * are present in jdk.localedata module.
       
   255      */
       
   256     private static void checkAddedBundles() {
       
   257         Set<String> addedBundlesSet = new HashSet<>(addedBundles);
       
   258         addedBundlesSet.removeAll(retrievedBundles);
       
   259         if (!addedBundlesSet.isEmpty()) {
       
   260             throw new RuntimeException("expected CalendarData"
       
   261                     + " bundles " + addedBundlesSet + " are not present in jdk.localedata module ");
       
   262         }
       
   263 
       
   264     }
       
   265 
       
   266     /**
       
   267      * This method checks that bundles which have been removed are not present
       
   268      * in jdk.localedata module.
       
   269      */
       
   270     private static void checkRemovedBundles() {
       
   271         Set<String> unexpectedBundles = removedBundles.stream().
       
   272                 filter(retrievedBundles::contains).collect(Collectors.toSet());
       
   273         if (!unexpectedBundles.isEmpty()) {
       
   274             throw new RuntimeException("Unexpected CalendarData"
       
   275                     + " bundles " + unexpectedBundles + " are present in jdk.localedata module ");
       
   276         }
       
   277     }
       
   278 }