From e503f584ed4bb6585de8603a5691814e725e9a4a Mon Sep 17 00:00:00 2001 From: Shane Carr Date: Thu, 14 Sep 2017 00:16:56 +0000 Subject: [PATCH] ICU-13310 Fixing assertion failure in ScientificFormat. X-SVN-Rev: 40410 --- .../ibm/icu/impl/number/formatters/ScientificFormat.java | 6 +++--- .../src/com/ibm/icu/dev/test/format/NumberFormatTest.java | 7 +++++++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/formatters/ScientificFormat.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/formatters/ScientificFormat.java index c2e71c80cc0..e7d17de46e4 100644 --- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/formatters/ScientificFormat.java +++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/formatters/ScientificFormat.java @@ -154,9 +154,9 @@ public class ScientificFormat extends Format.BeforeFormat implements Rounder.Mul if (_maxInt > _minInt && _minInt > 1) { _minInt = 1; } - minInt = _minInt < 0 ? 0 : _minInt >= 8 ? 1 : _minInt; - maxInt = _maxInt < _minInt ? _minInt : _maxInt >= 8 ? _minInt : _maxInt; - assert 0 <= minInt && minInt <= maxInt && maxInt < 8; + maxInt = _maxInt > 8 ? 8 : _maxInt < _minInt ? _minInt : _maxInt; + minInt = _minInt < 0 ? 0 : _minInt > maxInt ? maxInt : _minInt; + assert 0 <= minInt && minInt <= maxInt && maxInt <= 8; interval = maxInt < 1 ? 1 : maxInt; this.rounder = rounder; diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatTest.java index 23c699bb03c..1b270b3044b 100644 --- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatTest.java +++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatTest.java @@ -5237,6 +5237,13 @@ public class NumberFormatTest extends TestFmwk { assertEquals("Should ignore scientific minInt if maxInt>minInt", "1.23E-3", result); } + @Test + public void Test13310() { + assertEquals("Should not throw an assertion error", + "10000000.76E0", + new DecimalFormat("000000000.0#E0").format(10000000.76d)); + } + @Test public void testPercentZero() { DecimalFormat df = (DecimalFormat) NumberFormat.getPercentInstance(); -- 2.40.0