diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/impl/UnitsTest.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/impl/UnitsTest.java index 09d8eeafb3b6..4bdd5c6518d0 100644 --- a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/impl/UnitsTest.java +++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/impl/UnitsTest.java @@ -27,6 +27,7 @@ import com.ibm.icu.util.Measure; import com.ibm.icu.util.MeasureUnit; import com.ibm.icu.util.ULocale; +import com.ibm.icu.util.MeasureUnit.Complexity; public class UnitsTest { @@ -817,4 +818,38 @@ public TestCase(String name, String category, String usage, String region, Strin } } } + + @Test + public void testWithConstantDenominator() { + class TestCase { + String unitIdentifier; + long constantDenominator; + Complexity expectedComplexity; + + TestCase(String unitIdentifier, long constantDenominator, Complexity expectedComplexity) { + this.unitIdentifier = unitIdentifier; + this.constantDenominator = constantDenominator; + this.expectedComplexity = expectedComplexity; + } + } + + TestCase[] testCases = { + new TestCase("meter-per-second", 100, Complexity.COMPOUND), + new TestCase("meter-per-100-second", 0, Complexity.COMPOUND), + new TestCase("portion", 100, Complexity.COMPOUND), + new TestCase("portion-per-100", 0, Complexity.SINGLE), + }; + + for (TestCase testCase : testCases) { + MeasureUnit unit = MeasureUnit.forIdentifier(testCase.unitIdentifier); + unit = unit.withConstantDenominator(testCase.constantDenominator); + + long actualDenominator = unit.getConstantDenominator(); + Complexity actualComplexity = unit.getComplexity(); + + assertEquals(testCase.constantDenominator, actualDenominator); + assertEquals(testCase.expectedComplexity, actualComplexity); + } + + } }