]> granicus.if.org Git - icu/commitdiff
ICU-11629 J, update MeasureUnit interfaces and tests for new units in CLDR 27/28
authorPeter Edberg <pedberg@unicode.org>
Sun, 28 Jun 2015 01:41:07 +0000 (01:41 +0000)
committerPeter Edberg <pedberg@unicode.org>
Sun, 28 Jun 2015 01:41:07 +0000 (01:41 +0000)
X-SVN-Rev: 37625

icu4j/main/classes/core/src/com/ibm/icu/util/MeasureUnit.java
icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/MeasureUnitTest.java

index 58878430a51c04d629768c4430028f8e7aa8ec2d..7b73a0f0abd70e4cf658264441337e0e7d0cc67e 100644 (file)
@@ -181,7 +181,7 @@ public class MeasureUnit implements Serializable {
             throw new NullPointerException("Type and subType must be non-null");
         }
         if (!"currency".equals(type)) {
-            if (!ASCII.containsAll(type) || !ASCII_HYPHEN.containsAll(subType)) {
+            if (!ASCII.containsAll(type) || !ASCII_HYPHEN_DIGITS.containsAll(subType)) {
                 throw new IllegalArgumentException("The type or subType are invalid.");
             }
         }
@@ -207,7 +207,7 @@ public class MeasureUnit implements Serializable {
     }
 
     static final UnicodeSet ASCII = new UnicodeSet('a', 'z').freeze();
-    static final UnicodeSet ASCII_HYPHEN = new UnicodeSet('-', '-', 'a', 'z').freeze();
+    static final UnicodeSet ASCII_HYPHEN_DIGITS = new UnicodeSet('-', '-', '0', '9', 'a', 'z').freeze();
 
     /**
      * @internal
@@ -361,6 +361,13 @@ public class MeasureUnit implements Serializable {
      */
     public static final MeasureUnit RADIAN = MeasureUnit.internalGetInstance("angle", "radian");
 
+    /**
+     * Constant for unit of angle: revolution
+     * @draft ICU 56
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final MeasureUnit REVOLUTION = MeasureUnit.internalGetInstance("angle", "revolution");
+
     /**
      * Constant for unit of area: acre
      * @stable ICU 53
@@ -418,6 +425,13 @@ public class MeasureUnit implements Serializable {
      */
     public static final MeasureUnit SQUARE_YARD = MeasureUnit.internalGetInstance("area", "square-yard");
 
+    /**
+     * Constant for unit of consumption: liter-per-100kilometers
+     * @draft ICU 56
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final MeasureUnit LITER_PER_100KILOMETERS = MeasureUnit.internalGetInstance("consumption", "liter-per-100kilometers");
+
     /**
      * Constant for unit of consumption: liter-per-kilometer
      * @draft ICU 54
@@ -502,6 +516,13 @@ public class MeasureUnit implements Serializable {
      */
     public static final MeasureUnit TERABYTE = MeasureUnit.internalGetInstance("digital", "terabyte");
 
+    /**
+     * Constant for unit of duration: century
+     * @draft ICU 56
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final MeasureUnit CENTURY = MeasureUnit.internalGetInstance("duration", "century");
+
     /**
      * Constant for unit of duration: day
      * @stable ICU 4.0
@@ -535,7 +556,6 @@ public class MeasureUnit implements Serializable {
 
     /**
      * Constant for unit of duration: month
-     * 
      * @stable ICU 4.0
      */
     public static final TimeUnit MONTH = (TimeUnit) MeasureUnit.internalGetInstance("duration", "month");
@@ -740,6 +760,13 @@ public class MeasureUnit implements Serializable {
      */
     public static final MeasureUnit MILE = MeasureUnit.internalGetInstance("length", "mile");
 
+    /**
+     * Constant for unit of length: mile-scandinavian
+     * @draft ICU 56
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final MeasureUnit MILE_SCANDINAVIAN = MeasureUnit.internalGetInstance("length", "mile-scandinavian");
+
     /**
      * Constant for unit of length: millimeter
      * @stable ICU 53
@@ -943,6 +970,13 @@ public class MeasureUnit implements Serializable {
      */
     public static final MeasureUnit KILOMETER_PER_HOUR = MeasureUnit.internalGetInstance("speed", "kilometer-per-hour");
 
+    /**
+     * Constant for unit of speed: knot
+     * @draft ICU 56
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final MeasureUnit KNOT = MeasureUnit.internalGetInstance("speed", "knot");
+
     /**
      * Constant for unit of speed: meter-per-second
      * @stable ICU 53
@@ -967,6 +1001,13 @@ public class MeasureUnit implements Serializable {
      */
     public static final MeasureUnit FAHRENHEIT = MeasureUnit.internalGetInstance("temperature", "fahrenheit");
 
+    /**
+     * Constant for unit of temperature: generic
+     * @draft ICU 55
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final MeasureUnit GENERIC = MeasureUnit.internalGetInstance("temperature", "generic");
+
     /**
      * Constant for unit of temperature: kelvin
      * @draft ICU 54
@@ -1049,6 +1090,13 @@ public class MeasureUnit implements Serializable {
      */
     public static final MeasureUnit CUP = MeasureUnit.internalGetInstance("volume", "cup");
 
+    /**
+     * Constant for unit of volume: cup-metric
+     * @draft ICU 56
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final MeasureUnit CUP_METRIC = MeasureUnit.internalGetInstance("volume", "cup-metric");
+
     /**
      * Constant for unit of volume: deciliter
      * @draft ICU 54
@@ -1104,6 +1152,13 @@ public class MeasureUnit implements Serializable {
      */
     public static final MeasureUnit PINT = MeasureUnit.internalGetInstance("volume", "pint");
 
+    /**
+     * Constant for unit of volume: pint-metric
+     * @draft ICU 56
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final MeasureUnit PINT_METRIC = MeasureUnit.internalGetInstance("volume", "pint-metric");
+
     /**
      * Constant for unit of volume: quart
      * @draft ICU 54
index 1c0c58e9f6f0c6f84b12dd5a85495ce2dc35f93a..26faf826beb60beb695cff91f0eb032271143ec6 100644 (file)
@@ -67,7 +67,7 @@ public class MeasureUnitTest extends TestFmwk {
         }
     }
     
-    private static final String[] DRAFT_VERSIONS = {"54"};
+    private static final String[] DRAFT_VERSIONS = {"54", "55", "56"};
     
     private static final HashSet<String> DRAFT_VERSION_SET = new HashSet<String>();
     
@@ -195,6 +195,14 @@ public class MeasureUnitTest extends TestFmwk {
         {"QUART", "54"},
         {"TABLESPOON", "54"},
         {"TEASPOON", "54"},
+        {"GENERIC", "55"},
+        {"REVOLUTION", "56"},
+        {"LITER_PER_100KILOMETERS", "56"},
+        {"CENTURY", "56"},
+        {"MILE_SCANDINAVIAN", "56"},
+        {"KNOT", "56"},
+        {"CUP_METRIC", "56"},
+        {"PINT_METRIC", "56"},
     };
     
     private static final HashMap<String, String> JAVA_VERSION_MAP = new HashMap<String, String>();
@@ -224,6 +232,11 @@ public class MeasureUnitTest extends TestFmwk {
         new MeasureUnitTest().run(args);
     }
     
+    //public void testZZZ() {
+    //    // various generateXXX calls go here, see
+    //    // http://site.icu-project.org/design/formatting/measureformat/updating-measure-unit
+    //}
+    
     public void TestCompatible53_1() {
         MeasureUnit[] units = {
                 MeasureUnit.G_FORCE,
@@ -403,6 +416,269 @@ public class MeasureUnitTest extends TestFmwk {
         assertEquals("",  121, units.length);
     }
     
+    public void TestCompatible55_1() {
+        MeasureUnit[] units = {
+                MeasureUnit.G_FORCE,
+                MeasureUnit.METER_PER_SECOND_SQUARED,
+                MeasureUnit.ARC_MINUTE,
+                MeasureUnit.ARC_SECOND,
+                MeasureUnit.DEGREE,
+                MeasureUnit.RADIAN,
+                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.LITER_PER_KILOMETER,
+                MeasureUnit.MILE_PER_GALLON,
+                MeasureUnit.BIT,
+                MeasureUnit.BYTE,
+                MeasureUnit.GIGABIT,
+                MeasureUnit.GIGABYTE,
+                MeasureUnit.KILOBIT,
+                MeasureUnit.KILOBYTE,
+                MeasureUnit.MEGABIT,
+                MeasureUnit.MEGABYTE,
+                MeasureUnit.TERABIT,
+                MeasureUnit.TERABYTE,
+                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.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.KARAT,
+                MeasureUnit.KILOMETER_PER_HOUR,
+                MeasureUnit.METER_PER_SECOND,
+                MeasureUnit.MILE_PER_HOUR,
+                MeasureUnit.CELSIUS,
+                MeasureUnit.FAHRENHEIT,
+                MeasureUnit.GENERIC,
+                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.DECILITER,
+                MeasureUnit.FLUID_OUNCE,
+                MeasureUnit.GALLON,
+                MeasureUnit.HECTOLITER,
+                MeasureUnit.LITER,
+                MeasureUnit.MEGALITER,
+                MeasureUnit.MILLILITER,
+                MeasureUnit.PINT,
+                MeasureUnit.QUART,
+                MeasureUnit.TABLESPOON,
+                MeasureUnit.TEASPOON,
+        };
+        assertEquals("",  122, units.length);
+    }
+
+    public void TestCompatible56_1() {
+        MeasureUnit[] units = {
+                MeasureUnit.G_FORCE,
+                MeasureUnit.METER_PER_SECOND_SQUARED,
+                MeasureUnit.ARC_MINUTE,
+                MeasureUnit.ARC_SECOND,
+                MeasureUnit.DEGREE,
+                MeasureUnit.RADIAN,
+                MeasureUnit.REVOLUTION,
+                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.LITER_PER_100KILOMETERS,
+                MeasureUnit.LITER_PER_KILOMETER,
+                MeasureUnit.MILE_PER_GALLON,
+                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.KARAT,
+                MeasureUnit.KILOMETER_PER_HOUR,
+                MeasureUnit.KNOT,
+                MeasureUnit.METER_PER_SECOND,
+                MeasureUnit.MILE_PER_HOUR,
+                MeasureUnit.CELSIUS,
+                MeasureUnit.FAHRENHEIT,
+                MeasureUnit.GENERIC,
+                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.HECTOLITER,
+                MeasureUnit.LITER,
+                MeasureUnit.MEGALITER,
+                MeasureUnit.MILLILITER,
+                MeasureUnit.PINT,
+                MeasureUnit.PINT_METRIC,
+                MeasureUnit.QUART,
+                MeasureUnit.TABLESPOON,
+                MeasureUnit.TEASPOON,
+        };
+        assertEquals("",  129, units.length);
+    }
+
     public void TestExamplesInDocs() {
         MeasureFormat fmtFr = MeasureFormat.getInstance(
                 ULocale.FRENCH, FormatWidth.SHORT);