Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

8262108: SimpleDateFormat formatting broken for sq_MK Locale #3463

Closed
wants to merge 10 commits into from
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2012, 2020, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2012, 2021, 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
@@ -189,7 +189,15 @@ public String getDisplayNameImpl(String calendarType, int field, int value, int
if (name.isEmpty()) {
continue;
}
map.put(name, base + i);
if (field == AM_PM && !javatime && i > PM) {
// Unlike in the case of java.time.format.DateTimeFormatter(Builder),
// when dealing with java.util.Calendar, don't set AM_PM field value
// to anything that isn't either AM or PM (this can happen when
// day periods are involved)
continue;
} else {
map.put(name, base + i);
}
}
}
}
@@ -0,0 +1,65 @@
/*
* Copyright (c) 2021, 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.
*/

import org.testng.Assert;
import org.testng.annotations.Test;

import java.util.Calendar;
import java.util.Locale;
import java.util.Map;

/**
* @test
* @bug 8262108
* @summary Verify the results returned by Calendar.getDisplayNames() API
* @comment Locale providers: COMPAT,SPI
* @run testng/othervm -Djava.locale.providers=COMPAT,SPI CalendarDisplayNamesTest
* @comment Locale providers: CLDR
* @run testng/othervm -Djava.locale.providers=CLDR CalendarDisplayNamesTest
*/
public class CalendarDisplayNamesTest {

/**
* Test that the {@link Calendar#getDisplayNames(int, int, Locale)} returns valid field values
* for the {@link Calendar#AM_PM} field in various locales and styles
*/
@Test
public void testAM_PMDisplayNameValues() {
final int[] styles = new int[]{Calendar.ALL_STYLES, Calendar.SHORT_FORMAT, Calendar.LONG_FORMAT,
Calendar.SHORT_STANDALONE, Calendar.LONG_STANDALONE, Calendar.SHORT, Calendar.LONG};
for (final Locale locale : Locale.getAvailableLocales()) {
for (final int style : styles) {
final Calendar cal = Calendar.getInstance();
final Map<String, Integer> names = cal.getDisplayNames(Calendar.AM_PM, style, locale);
if (names == null) {
continue;
}
for (final Integer fieldValue : names.values()) {
Assert.assertTrue(fieldValue == Calendar.AM || fieldValue == Calendar.PM,
"Invalid field value " + fieldValue + " for calendar field AM_PM, in locale "
+ locale + " with style " + style);
}
}
}
}
}
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2012, 2020, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2012, 2021, 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
@@ -23,7 +23,7 @@

/*
* @test
* @bug 8000983 8008577 8247781
* @bug 8000983 8008577 8247781 8262108
* @summary Unit test for narrow names support. This test is locale data-dependent
* and assumes that both COMPAT and CLDR have the same narrow names if not
* explicitly specified.
@@ -94,28 +94,10 @@ public static void main(String[] args) {
"Sat" // abb Saturday
);
testMap(US, DAY_OF_WEEK, NARROW_FORMAT); // expect null
if (providers.startsWith("CLDR")) {
testMap(US, AM_PM, ALL_STYLES,
"AM",
"PM",
"midnight",
"noon",
"in the morning",
"",
"in the afternoon",
"",
"in the evening",
"",
"at night",
"",
RESET_INDEX,
"a", "p", "mi", "n", "", "", "", "", "", "", "", "");
} else {
testMap(US, AM_PM, ALL_STYLES,
"AM", "PM",
RESET_INDEX,
"a", "p");
}
testMap(US, AM_PM, ALL_STYLES,
"AM", "PM",
RESET_INDEX,
"a", "p");
testMap(JAJPJP, DAY_OF_WEEK, NARROW_STANDALONE,
"", // 1-based indexing for DAY_OF_WEEK
"\u65e5",
ProTip! Use n and p to navigate between commits in a pull request.