/* * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. */ /* * @test * @bug 8154797 * @modules java.base/sun.util.locale.provider * java.base/sun.util.resources * jdk.localedata * @summary Test for checking HourFormat and GmtFormat resources are retrieved from * COMPAT and CLDR Providers. */ import java.util.HashMap; import java.util.Locale; import java.util.Map; import java.util.ResourceBundle; import sun.util.locale.provider.LocaleProviderAdapter.Type; import sun.util.locale.provider.LocaleProviderAdapter; public class Bug8154797 { static Map<String, String> expectedResourcesMap = new HashMap<>(); static final String GMT_RESOURCE_KEY = "timezone.gmtFormat"; static final String HMT_RESOURCE_KEY = "timezone.hourFormat"; static final String GMT = "Gmt"; static final String HMT = "Hmt"; static void generateExpectedValues() { expectedResourcesMap.put("FR" + GMT, "UTC{0}"); expectedResourcesMap.put("FR" + HMT, "+HH:mm;\u2212HH:mm"); expectedResourcesMap.put("FI" + HMT, "+H.mm;-H.mm"); expectedResourcesMap.put("FI" + GMT, "UTC{0}"); /* For root locale, en_US, de_DE, hi_IN, ja_JP,Root locale resources * should be returned. */ expectedResourcesMap.put(GMT, "GMT{0}"); //Root locale resource expectedResourcesMap.put(HMT, "+HH:mm;-HH:mm"); //Root locale resource } static void compareResources(Locale loc) { String mapKeyHourFormat = HMT, mapKeyGmtFormat = GMT; ResourceBundle compatBundle, cldrBundle; compatBundle = LocaleProviderAdapter.forJRE().getLocaleResources(loc) .getJavaTimeFormatData(); cldrBundle = LocaleProviderAdapter.forType(Type.CLDR) .getLocaleResources(loc).getJavaTimeFormatData(); if (loc.getCountry() == "FR" || loc.getCountry() == "FI") { mapKeyHourFormat = loc.getCountry() + HMT; mapKeyGmtFormat = loc.getCountry() + GMT; } if (!(expectedResourcesMap.get(mapKeyGmtFormat) .equals(compatBundle.getString(GMT_RESOURCE_KEY)) && expectedResourcesMap.get(mapKeyHourFormat) .equals(compatBundle.getString(HMT_RESOURCE_KEY)) && expectedResourcesMap.get(mapKeyGmtFormat) .equals(cldrBundle.getString(GMT_RESOURCE_KEY)) && expectedResourcesMap.get(mapKeyHourFormat) .equals(cldrBundle.getString(HMT_RESOURCE_KEY)))) { throw new RuntimeException("Retrieved resource does not match with " + " expected string for Locale " + compatBundle.getLocale()); } } public static void main(String args[]) { Bug8154797.generateExpectedValues(); Locale[] locArr = {new Locale("hi", "IN"), Locale.UK, new Locale("fi", "FI"), Locale.ROOT, Locale.GERMAN, Locale.JAPANESE, Locale.ENGLISH, Locale.FRANCE}; for (Locale loc : locArr) { Bug8154797.compareResources(loc); } } }