8253321: java.util.Locale.LanguageRange#equals is inconsistent after calling hashCode

Reviewed-by: joehw, rriggs
This commit is contained in:
Naoto Sato 2020-09-21 12:33:00 +00:00
parent edc14f92d9
commit dad6edbf83
2 changed files with 51 additions and 4 deletions

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1996, 2019, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1996, 2020, 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
@ -2187,7 +2187,7 @@ public final class Locale implements Cloneable, Serializable {
/**
* Return an array of the display names of the variant.
* @param bundle the ResourceBundle to use to get the display names
* @param inLocale The locale for which to retrieve the display variant.
* @return an array of display names, possible of zero length.
*/
private String[] getDisplayVariantArray(Locale inLocale) {
@ -3335,8 +3335,7 @@ public final class Locale implements Cloneable, Serializable {
return false;
}
LanguageRange other = (LanguageRange)obj;
return hash == other.hash
&& range.equals(other.range)
return range.equals(other.range)
&& weight == other.weight;
}

View File

@ -0,0 +1,48 @@
/*
* Copyright (c) 2020, 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 8253321
* @summary test LanguageRange class
* @run testng LanguageRangeTest
*/
import static java.util.Locale.LanguageRange;
import org.testng.annotations.Test;
import static org.testng.Assert.assertEquals;
@Test
public class LanguageRangeTest {
@Test
public void hashCodeTest() {
var range1 = new LanguageRange("en-GB", 0);
var range2 = new LanguageRange("en-GB", 0);
assertEquals(range1, range2);
range1.hashCode();
assertEquals(range1, range2);
range2.hashCode();
assertEquals(range1, range2);
}
}