mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-27 23:04:50 +02:00
8217254: CompactNumberFormat:: CompactNumberFormat() constructor does not comply with spec
8217721: CompactNumberFormat:: format() method spec for IAEx is not complaint Reviewed-by: naoto
This commit is contained in:
parent
472d55d722
commit
0b082fcc1d
3 changed files with 24 additions and 7 deletions
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -406,6 +406,11 @@ public final class CompactNumberFormat extends NumberFormat {
|
||||||
public final StringBuffer format(Object number,
|
public final StringBuffer format(Object number,
|
||||||
StringBuffer toAppendTo,
|
StringBuffer toAppendTo,
|
||||||
FieldPosition fieldPosition) {
|
FieldPosition fieldPosition) {
|
||||||
|
|
||||||
|
if (number == null) {
|
||||||
|
throw new IllegalArgumentException("Cannot format null as a number");
|
||||||
|
}
|
||||||
|
|
||||||
if (number instanceof Long || number instanceof Integer
|
if (number instanceof Long || number instanceof Integer
|
||||||
|| number instanceof Short || number instanceof Byte
|
|| number instanceof Short || number instanceof Byte
|
||||||
|| number instanceof AtomicInteger
|
|| number instanceof AtomicInteger
|
||||||
|
@ -1053,6 +1058,11 @@ public final class CompactNumberFormat extends NumberFormat {
|
||||||
*/
|
*/
|
||||||
private void applyPattern(String pattern, int index) {
|
private void applyPattern(String pattern, int index) {
|
||||||
|
|
||||||
|
if (pattern == null) {
|
||||||
|
throw new IllegalArgumentException("A null compact pattern" +
|
||||||
|
" encountered at index: " + index);
|
||||||
|
}
|
||||||
|
|
||||||
int start = 0;
|
int start = 0;
|
||||||
boolean gotNegative = false;
|
boolean gotNegative = false;
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -22,7 +22,7 @@
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* @test
|
* @test
|
||||||
* @bug 8177552
|
* @bug 8177552 8217721
|
||||||
* @summary Checks the functioning of compact number format
|
* @summary Checks the functioning of compact number format
|
||||||
* @modules jdk.localedata
|
* @modules jdk.localedata
|
||||||
* @run testng/othervm TestCompactNumber
|
* @run testng/othervm TestCompactNumber
|
||||||
|
@ -528,6 +528,11 @@ public class TestCompactNumber {
|
||||||
.getCompactNumberInstance(l, NumberFormat.Style.LONG).format(10000));
|
.getCompactNumberInstance(l, NumberFormat.Style.LONG).format(10000));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test(expectedExceptions = IllegalArgumentException.class)
|
||||||
|
public void testFormatWithNullParam() {
|
||||||
|
FORMAT_EN_US_SHORT.format(null);
|
||||||
|
}
|
||||||
|
|
||||||
@Test(dataProvider = "format")
|
@Test(dataProvider = "format")
|
||||||
public void testFormat(NumberFormat cnf, Object number,
|
public void testFormat(NumberFormat cnf, Object number,
|
||||||
String expected) {
|
String expected) {
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -22,7 +22,7 @@
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* @test
|
* @test
|
||||||
* @bug 8177552
|
* @bug 8177552 8217254
|
||||||
* @summary Checks the validity of compact number patterns specified through
|
* @summary Checks the validity of compact number patterns specified through
|
||||||
* CompactNumberFormat constructor
|
* CompactNumberFormat constructor
|
||||||
* @run testng/othervm TestCompactPatternsValidity
|
* @run testng/othervm TestCompactPatternsValidity
|
||||||
|
@ -80,7 +80,9 @@ public class TestCompactPatternsValidity {
|
||||||
// A non empty pattern containing no 0s (min integer digits)
|
// A non empty pattern containing no 0s (min integer digits)
|
||||||
{new String[]{"K", "0K", "00K"}},
|
{new String[]{"K", "0K", "00K"}},
|
||||||
// 0s (min integer digits) exceeding for the range at index 3
|
// 0s (min integer digits) exceeding for the range at index 3
|
||||||
{new String[]{"", "", "0K", "00000K"}},};
|
{new String[]{"", "", "0K", "00000K"}},
|
||||||
|
// null as a compact pattern
|
||||||
|
{new String[]{"", "", null, "00K"}},};
|
||||||
}
|
}
|
||||||
|
|
||||||
@DataProvider(name = "validPatternsFormat")
|
@DataProvider(name = "validPatternsFormat")
|
||||||
|
@ -124,7 +126,7 @@ public class TestCompactPatternsValidity {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(dataProvider = "invalidPatterns",
|
@Test(dataProvider = "invalidPatterns",
|
||||||
expectedExceptions = RuntimeException.class)
|
expectedExceptions = IllegalArgumentException.class)
|
||||||
public void testInvalidCompactPatterns(String[] compactPatterns) {
|
public void testInvalidCompactPatterns(String[] compactPatterns) {
|
||||||
new CompactNumberFormat("#,##0.0#", DecimalFormatSymbols
|
new CompactNumberFormat("#,##0.0#", DecimalFormatSymbols
|
||||||
.getInstance(Locale.US), compactPatterns);
|
.getInstance(Locale.US), compactPatterns);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue