diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/MeasureUnit.java b/icu4j/main/classes/core/src/com/ibm/icu/util/MeasureUnit.java index f2b2f2d3d26..4d69a63885f 100644 --- a/icu4j/main/classes/core/src/com/ibm/icu/util/MeasureUnit.java +++ b/icu4j/main/classes/core/src/com/ibm/icu/util/MeasureUnit.java @@ -443,6 +443,33 @@ public class MeasureUnit implements Serializable { */ public static final MeasureUnit SQUARE_YARD = MeasureUnit.internalGetInstance("area", "square-yard"); + /** + * Constant for unit of concentr: karat + * @stable ICU 54 + */ + public static final MeasureUnit KARAT = MeasureUnit.internalGetInstance("concentr", "karat"); + + /** + * Constant for unit of concentr: milligram-per-deciliter + * @draft ICU 57 + * @provisional This API might change or be removed in a future release. + */ + public static final MeasureUnit MILLIGRAM_PER_DECILITER = MeasureUnit.internalGetInstance("concentr", "milligram-per-deciliter"); + + /** + * Constant for unit of concentr: millimole-per-liter + * @draft ICU 57 + * @provisional This API might change or be removed in a future release. + */ + public static final MeasureUnit MILLIMOLE_PER_LITER = MeasureUnit.internalGetInstance("concentr", "millimole-per-liter"); + + /** + * Constant for unit of concentr: part-per-million + * @draft ICU 57 + * @provisional This API might change or be removed in a future release. + */ + public static final MeasureUnit PART_PER_MILLION = MeasureUnit.internalGetInstance("concentr", "part-per-million"); + /** * Constant for unit of consumption: liter-per-100kilometers * @draft ICU 56 @@ -462,6 +489,13 @@ public class MeasureUnit implements Serializable { */ public static final MeasureUnit MILE_PER_GALLON = MeasureUnit.internalGetInstance("consumption", "mile-per-gallon"); + /** + * Constant for unit of consumption: mile-per-gallon-imperial + * @draft ICU 57 + * @provisional This API might change or be removed in a future release. + */ + public static final MeasureUnit MILE_PER_GALLON_IMPERIAL = MeasureUnit.internalGetInstance("consumption", "mile-per-gallon-imperial"); + /** * Constant for unit of digital: bit * @stable ICU 54 @@ -926,12 +960,6 @@ public class MeasureUnit implements Serializable { */ public static final MeasureUnit POUND_PER_SQUARE_INCH = MeasureUnit.internalGetInstance("pressure", "pound-per-square-inch"); - /** - * Constant for unit of proportion: karat - * @stable ICU 54 - */ - public static final MeasureUnit KARAT = MeasureUnit.internalGetInstance("proportion", "karat"); - /** * Constant for unit of speed: kilometer-per-hour * @stable ICU 53 @@ -1073,6 +1101,13 @@ public class MeasureUnit implements Serializable { */ public static final MeasureUnit GALLON = MeasureUnit.internalGetInstance("volume", "gallon"); + /** + * Constant for unit of volume: gallon-imperial + * @draft ICU 57 + * @provisional This API might change or be removed in a future release. + */ + public static final MeasureUnit GALLON_IMPERIAL = MeasureUnit.internalGetInstance("volume", "gallon-imperial"); + /** * Constant for unit of volume: hectoliter * @stable ICU 54 @@ -1132,12 +1167,14 @@ public class MeasureUnit implements Serializable { new HashMap, MeasureUnit>(); static { - unitPerUnitToSingleUnit.put(Pair.of(MeasureUnit.KILOMETER, MeasureUnit.HOUR), MeasureUnit.KILOMETER_PER_HOUR); - unitPerUnitToSingleUnit.put(Pair.of(MeasureUnit.MILE, MeasureUnit.GALLON), MeasureUnit.MILE_PER_GALLON); - unitPerUnitToSingleUnit.put(Pair.of(MeasureUnit.MILE, MeasureUnit.HOUR), MeasureUnit.MILE_PER_HOUR); - unitPerUnitToSingleUnit.put(Pair.of(MeasureUnit.METER, MeasureUnit.SECOND), MeasureUnit.METER_PER_SECOND); unitPerUnitToSingleUnit.put(Pair.of(MeasureUnit.LITER, MeasureUnit.KILOMETER), MeasureUnit.LITER_PER_KILOMETER); unitPerUnitToSingleUnit.put(Pair.of(MeasureUnit.POUND, MeasureUnit.SQUARE_INCH), MeasureUnit.POUND_PER_SQUARE_INCH); + unitPerUnitToSingleUnit.put(Pair.of(MeasureUnit.MILE, MeasureUnit.HOUR), MeasureUnit.MILE_PER_HOUR); + unitPerUnitToSingleUnit.put(Pair.of(MeasureUnit.MILLIGRAM, MeasureUnit.DECILITER), MeasureUnit.MILLIGRAM_PER_DECILITER); + unitPerUnitToSingleUnit.put(Pair.of(MeasureUnit.MILE, MeasureUnit.GALLON_IMPERIAL), MeasureUnit.MILE_PER_GALLON_IMPERIAL); + unitPerUnitToSingleUnit.put(Pair.of(MeasureUnit.KILOMETER, MeasureUnit.HOUR), MeasureUnit.KILOMETER_PER_HOUR); + unitPerUnitToSingleUnit.put(Pair.of(MeasureUnit.MILE, MeasureUnit.GALLON), MeasureUnit.MILE_PER_GALLON); + unitPerUnitToSingleUnit.put(Pair.of(MeasureUnit.METER, MeasureUnit.SECOND), MeasureUnit.METER_PER_SECOND); } // End generated MeasureUnit constants diff --git a/icu4j/main/shared/data/icudata.jar b/icu4j/main/shared/data/icudata.jar index 27285c97e72..03855aeb03a 100755 --- a/icu4j/main/shared/data/icudata.jar +++ b/icu4j/main/shared/data/icudata.jar @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4b29223b2267fc726c592870fdde6bcb8584efadbb3b89b95223e98f6ca5a5a2 -size 11624126 +oid sha256:29e5ad7a851810d39052e021b830dae7513d06bc4e60c899fa72f8b44d1c46a5 +size 11626253 diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/MeasureUnitTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/MeasureUnitTest.java index e0759f2a395..0d78bdf9c84 100644 --- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/MeasureUnitTest.java +++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/MeasureUnitTest.java @@ -68,7 +68,7 @@ public class MeasureUnitTest extends TestFmwk { } } - private static final String[] DRAFT_VERSIONS = {"54", "55", "56"}; + private static final String[] DRAFT_VERSIONS = {"55", "56", "57"}; private static final HashSet DRAFT_VERSION_SET = new HashSet(); @@ -204,6 +204,11 @@ public class MeasureUnitTest extends TestFmwk { {"KNOT", "56"}, {"CUP_METRIC", "56"}, {"PINT_METRIC", "56"}, + {"MILLIGRAM_PER_DECILITER", "57"}, + {"MILLIMOLE_PER_LITER", "57"}, + {"PART_PER_MILLION", "57"}, + {"MILE_PER_GALLON_IMPERIAL", "57"}, + {"GALLON_IMPERIAL", "57"}, }; private static final HashMap JAVA_VERSION_MAP = new HashMap(); @@ -698,6 +703,146 @@ public class MeasureUnitTest extends TestFmwk { assertEquals("", 129, units.length); } + public void TestCompatible57_1() { + MeasureUnit[] units = { + MeasureUnit.G_FORCE, + MeasureUnit.METER_PER_SECOND_SQUARED, + MeasureUnit.ARC_MINUTE, + MeasureUnit.ARC_SECOND, + MeasureUnit.DEGREE, + MeasureUnit.RADIAN, + MeasureUnit.REVOLUTION_ANGLE, + MeasureUnit.ACRE, + MeasureUnit.HECTARE, + MeasureUnit.SQUARE_CENTIMETER, + MeasureUnit.SQUARE_FOOT, + MeasureUnit.SQUARE_INCH, + MeasureUnit.SQUARE_KILOMETER, + MeasureUnit.SQUARE_METER, + MeasureUnit.SQUARE_MILE, + MeasureUnit.SQUARE_YARD, + MeasureUnit.KARAT, + MeasureUnit.MILLIGRAM_PER_DECILITER, + MeasureUnit.MILLIMOLE_PER_LITER, + MeasureUnit.PART_PER_MILLION, + MeasureUnit.LITER_PER_100KILOMETERS, + MeasureUnit.LITER_PER_KILOMETER, + MeasureUnit.MILE_PER_GALLON, + MeasureUnit.MILE_PER_GALLON_IMPERIAL, + MeasureUnit.BIT, + MeasureUnit.BYTE, + MeasureUnit.GIGABIT, + MeasureUnit.GIGABYTE, + MeasureUnit.KILOBIT, + MeasureUnit.KILOBYTE, + MeasureUnit.MEGABIT, + MeasureUnit.MEGABYTE, + MeasureUnit.TERABIT, + MeasureUnit.TERABYTE, + MeasureUnit.CENTURY, + MeasureUnit.DAY, + MeasureUnit.HOUR, + MeasureUnit.MICROSECOND, + MeasureUnit.MILLISECOND, + MeasureUnit.MINUTE, + MeasureUnit.MONTH, + MeasureUnit.NANOSECOND, + MeasureUnit.SECOND, + MeasureUnit.WEEK, + MeasureUnit.YEAR, + MeasureUnit.AMPERE, + MeasureUnit.MILLIAMPERE, + MeasureUnit.OHM, + MeasureUnit.VOLT, + MeasureUnit.CALORIE, + MeasureUnit.FOODCALORIE, + MeasureUnit.JOULE, + MeasureUnit.KILOCALORIE, + MeasureUnit.KILOJOULE, + MeasureUnit.KILOWATT_HOUR, + MeasureUnit.GIGAHERTZ, + MeasureUnit.HERTZ, + MeasureUnit.KILOHERTZ, + MeasureUnit.MEGAHERTZ, + MeasureUnit.ASTRONOMICAL_UNIT, + MeasureUnit.CENTIMETER, + MeasureUnit.DECIMETER, + MeasureUnit.FATHOM, + MeasureUnit.FOOT, + MeasureUnit.FURLONG, + MeasureUnit.INCH, + MeasureUnit.KILOMETER, + MeasureUnit.LIGHT_YEAR, + MeasureUnit.METER, + MeasureUnit.MICROMETER, + MeasureUnit.MILE, + MeasureUnit.MILE_SCANDINAVIAN, + MeasureUnit.MILLIMETER, + MeasureUnit.NANOMETER, + MeasureUnit.NAUTICAL_MILE, + MeasureUnit.PARSEC, + MeasureUnit.PICOMETER, + MeasureUnit.YARD, + MeasureUnit.LUX, + MeasureUnit.CARAT, + MeasureUnit.GRAM, + MeasureUnit.KILOGRAM, + MeasureUnit.METRIC_TON, + MeasureUnit.MICROGRAM, + MeasureUnit.MILLIGRAM, + MeasureUnit.OUNCE, + MeasureUnit.OUNCE_TROY, + MeasureUnit.POUND, + MeasureUnit.STONE, + MeasureUnit.TON, + MeasureUnit.GIGAWATT, + MeasureUnit.HORSEPOWER, + MeasureUnit.KILOWATT, + MeasureUnit.MEGAWATT, + MeasureUnit.MILLIWATT, + MeasureUnit.WATT, + MeasureUnit.HECTOPASCAL, + MeasureUnit.INCH_HG, + MeasureUnit.MILLIBAR, + MeasureUnit.MILLIMETER_OF_MERCURY, + MeasureUnit.POUND_PER_SQUARE_INCH, + MeasureUnit.KILOMETER_PER_HOUR, + MeasureUnit.KNOT, + MeasureUnit.METER_PER_SECOND, + MeasureUnit.MILE_PER_HOUR, + MeasureUnit.CELSIUS, + MeasureUnit.FAHRENHEIT, + MeasureUnit.GENERIC_TEMPERATURE, + MeasureUnit.KELVIN, + MeasureUnit.ACRE_FOOT, + MeasureUnit.BUSHEL, + MeasureUnit.CENTILITER, + MeasureUnit.CUBIC_CENTIMETER, + MeasureUnit.CUBIC_FOOT, + MeasureUnit.CUBIC_INCH, + MeasureUnit.CUBIC_KILOMETER, + MeasureUnit.CUBIC_METER, + MeasureUnit.CUBIC_MILE, + MeasureUnit.CUBIC_YARD, + MeasureUnit.CUP, + MeasureUnit.CUP_METRIC, + MeasureUnit.DECILITER, + MeasureUnit.FLUID_OUNCE, + MeasureUnit.GALLON, + MeasureUnit.GALLON_IMPERIAL, + MeasureUnit.HECTOLITER, + MeasureUnit.LITER, + MeasureUnit.MEGALITER, + MeasureUnit.MILLILITER, + MeasureUnit.PINT, + MeasureUnit.PINT_METRIC, + MeasureUnit.QUART, + MeasureUnit.TABLESPOON, + MeasureUnit.TEASPOON, + }; + assertEquals("", 134, units.length); + } + public void TestExamplesInDocs() { MeasureFormat fmtFr = MeasureFormat.getInstance( ULocale.FRENCH, FormatWidth.SHORT);