]> granicus.if.org Git - icu/commitdiff
ICU-11276 Fixing ICU4J number range test failures.
authorShane Carr <shane@unicode.org>
Fri, 7 Sep 2018 19:24:47 +0000 (12:24 -0700)
committerShane Carr <shane@unicode.org>
Thu, 27 Sep 2018 21:27:40 +0000 (14:27 -0700)
icu4j/main/classes/core/src/com/ibm/icu/number/NumberRangeFormatterImpl.java
icu4j/main/classes/core/src/com/ibm/icu/number/ScientificNotation.java

index b2629903922aac02a175af03cf339a81785875e9..ca842748a109c03e1a5f037f0c1de10f931abf46 100644 (file)
@@ -239,7 +239,7 @@ class NumberRangeFormatterImpl {
                     // Only collapse if the modifier is a unit.
                     // TODO: Make a better way to check for a unit?
                     // TODO: Handle case where the modifier has both notation and unit (compact currency)?
-                    if (mm.containsField(NumberFormat.Field.CURRENCY) && mm.containsField(NumberFormat.Field.PERCENT)) {
+                    if (!mm.containsField(NumberFormat.Field.CURRENCY) && !mm.containsField(NumberFormat.Field.PERCENT)) {
                         collapseMiddle = false;
                     }
                 } else if (fCollapse == RangeCollapse.AUTO) {
index 7b283734813dd383c39048c4564e991eb7aa02b9..3854ff36f1c6644819c5a7e21afcc159a6ce8b4f 100644 (file)
@@ -296,8 +296,10 @@ public class ScientificNotation extends Notation implements Cloneable {
 
         @Override
         public int getCodePointCount() {
-            // This method is not used for strong modifiers.
-            throw new AssertionError();
+            // NOTE: This method is only called one place, NumberRangeFormatterImpl.
+            // The call site only cares about != 0 and != 1.
+            // Return a very large value so that if this method is used elsewhere, we should notice.
+            return 999;
         }
 
         @Override
@@ -315,10 +317,10 @@ public class ScientificNotation extends Notation implements Cloneable {
 
         @Override
         public boolean equalsModifier(Modifier other) {
-            if (!(other instanceof ScientificHandler)) {
+            if (!(other instanceof ScientificModifier)) {
                 return false;
             }
-            ScientificHandler _other = (ScientificHandler) other;
+            ScientificModifier _other = (ScientificModifier) other;
             // TODO: Check for locale symbols and settings as well? Could be less efficient.
             return exponent == _other.exponent;
         }