]> granicus.if.org Git - icu/commitdiff
ICU-21192 MeasureUnit Identifier spec compliance: s/p/pow/
authorHugo van der Merwe <17109322+hugovdm@users.noreply.github.com>
Thu, 18 Jun 2020 00:20:49 +0000 (02:20 +0200)
committerHugo van der Merwe <17109322+hugovdm@users.noreply.github.com>
Wed, 15 Jul 2020 23:58:32 +0000 (01:58 +0200)
Specification:
https://www.unicode.org/reports/tr35/tr35-general.html#Unit_Identifiers

icu4c/source/i18n/measunit_extra.cpp
icu4c/source/test/intltest/measfmttest.cpp

index 64f39cb52bb9dc1e4b965469206389448810a9b3..00b902270c8ee6deda9627f8fbee35b3080a88a1 100644 (file)
@@ -60,7 +60,7 @@ enum InitialCompoundPart {
     INITIAL_COMPOUND_PART_PER = kInitialCompoundPartOffset,
 };
 
-// Trie value offset for powers like "square-", "cubic-", "p2-" etc.
+// Trie value offset for powers like "square-", "cubic-", "pow2-" etc.
 constexpr int32_t kPowerPartOffset = 256;
 
 enum PowerPart {
@@ -249,20 +249,20 @@ void U_CALLCONV initUnitExtras(UErrorCode& status) {
     b.add("per-", INITIAL_COMPOUND_PART_PER, status);
     b.add("square-", POWER_PART_P2, status);
     b.add("cubic-", POWER_PART_P3, status);
-    b.add("p2-", POWER_PART_P2, status);
-    b.add("p3-", POWER_PART_P3, status);
-    b.add("p4-", POWER_PART_P4, status);
-    b.add("p5-", POWER_PART_P5, status);
-    b.add("p6-", POWER_PART_P6, status);
-    b.add("p7-", POWER_PART_P7, status);
-    b.add("p8-", POWER_PART_P8, status);
-    b.add("p9-", POWER_PART_P9, status);
-    b.add("p10-", POWER_PART_P10, status);
-    b.add("p11-", POWER_PART_P11, status);
-    b.add("p12-", POWER_PART_P12, status);
-    b.add("p13-", POWER_PART_P13, status);
-    b.add("p14-", POWER_PART_P14, status);
-    b.add("p15-", POWER_PART_P15, status);
+    b.add("pow2-", POWER_PART_P2, status);
+    b.add("pow3-", POWER_PART_P3, status);
+    b.add("pow4-", POWER_PART_P4, status);
+    b.add("pow5-", POWER_PART_P5, status);
+    b.add("pow6-", POWER_PART_P6, status);
+    b.add("pow7-", POWER_PART_P7, status);
+    b.add("pow8-", POWER_PART_P8, status);
+    b.add("pow9-", POWER_PART_P9, status);
+    b.add("pow10-", POWER_PART_P10, status);
+    b.add("pow11-", POWER_PART_P11, status);
+    b.add("pow12-", POWER_PART_P12, status);
+    b.add("pow13-", POWER_PART_P13, status);
+    b.add("pow14-", POWER_PART_P14, status);
+    b.add("pow15-", POWER_PART_P15, status);
     if (U_FAILURE(status)) { return; }
 
     // Add sanctioned simple units by offset
@@ -645,11 +645,11 @@ void serializeSingle(const SingleUnitImpl& singleUnit, bool first, CharString& o
     } else if (posPower == 3) {
         output.append("cubic-", status);
     } else if (posPower < 10) {
-        output.append('p', status);
+        output.append("pow", status);
         output.append(posPower + '0', status);
         output.append('-', status);
     } else if (posPower <= 15) {
-        output.append("p1", status);
+        output.append("pow1", status);
         output.append('0' + (posPower % 10), status);
         output.append('-', status);
     } else {
index 51a85fef85f03e670ae710784c6a17dc55593f09..b2b2877cca8699c71a25ffc11daf76c527689b28 100644 (file)
@@ -3258,7 +3258,7 @@ void MeasureFormatTest::TestIdentifiers() {
         {"per-kilometer", "per-kilometer"},
 
         // Normalization of power and per
-        {"p2-foot-and-p2-mile", "square-foot-and-square-mile"},
+        {"pow2-foot-and-pow2-mile", "square-foot-and-square-mile"},
         {"gram-square-gram-per-dekagram", "cubic-gram-per-dekagram"},
         {"kilogram-per-meter-per-second", "kilogram-per-meter-second"},
 
@@ -3290,8 +3290,10 @@ void MeasureFormatTest::TestInvalidIdentifiers() {
         "+meter",
         "-kilometer",
         "+kilometer",
-        "-p2-meter",
-        "+p2-meter",
+        "-pow2-meter",
+        "+pow2-meter",
+        "p2-meter",
+        "p4-meter",
         "+",
         "-",
         "-mile",
@@ -3347,8 +3349,8 @@ void MeasureFormatTest::TestCompoundUnitOperations() {
 
     verifySingleUnit(squareMeter, UMEASURE_SI_PREFIX_ONE, 2, "square-meter");
     verifySingleUnit(overCubicCentimeter, UMEASURE_SI_PREFIX_CENTI, -3, "per-cubic-centimeter");
-    verifySingleUnit(quarticKilometer, UMEASURE_SI_PREFIX_KILO, 4, "p4-kilometer");
-    verifySingleUnit(overQuarticKilometer1, UMEASURE_SI_PREFIX_KILO, -4, "per-p4-kilometer");
+    verifySingleUnit(quarticKilometer, UMEASURE_SI_PREFIX_KILO, 4, "pow4-kilometer");
+    verifySingleUnit(overQuarticKilometer1, UMEASURE_SI_PREFIX_KILO, -4, "per-pow4-kilometer");
 
     assertTrue("power inequality", quarticKilometer != overQuarticKilometer1);
 
@@ -3361,9 +3363,9 @@ void MeasureFormatTest::TestCompoundUnitOperations() {
         .reciprocal(status)
         .withSIPrefix(UMEASURE_SI_PREFIX_KILO, status);
 
-    verifySingleUnit(overQuarticKilometer2, UMEASURE_SI_PREFIX_KILO, -4, "per-p4-kilometer");
-    verifySingleUnit(overQuarticKilometer3, UMEASURE_SI_PREFIX_KILO, -4, "per-p4-kilometer");
-    verifySingleUnit(overQuarticKilometer4, UMEASURE_SI_PREFIX_KILO, -4, "per-p4-kilometer");
+    verifySingleUnit(overQuarticKilometer2, UMEASURE_SI_PREFIX_KILO, -4, "per-pow4-kilometer");
+    verifySingleUnit(overQuarticKilometer3, UMEASURE_SI_PREFIX_KILO, -4, "per-pow4-kilometer");
+    verifySingleUnit(overQuarticKilometer4, UMEASURE_SI_PREFIX_KILO, -4, "per-pow4-kilometer");
 
     assertTrue("reciprocal equality", overQuarticKilometer1 == overQuarticKilometer2);
     assertTrue("reciprocal equality", overQuarticKilometer1 == overQuarticKilometer3);
@@ -3442,17 +3444,17 @@ void MeasureFormatTest::TestCompoundUnitOperations() {
     assertTrue("kilometer equality", kilometer == kilometer2);
 
     // Test out-of-range powers
-    MeasureUnit power15 = MeasureUnit::forIdentifier("p15-kilometer", status);
-    verifySingleUnit(power15, UMEASURE_SI_PREFIX_KILO, 15, "p15-kilometer");
+    MeasureUnit power15 = MeasureUnit::forIdentifier("pow15-kilometer", status);
+    verifySingleUnit(power15, UMEASURE_SI_PREFIX_KILO, 15, "pow15-kilometer");
     status.errIfFailureAndReset();
-    MeasureUnit power16a = MeasureUnit::forIdentifier("p16-kilometer", status);
+    MeasureUnit power16a = MeasureUnit::forIdentifier("pow16-kilometer", status);
     status.expectErrorAndReset(U_ILLEGAL_ARGUMENT_ERROR);
     MeasureUnit power16b = power15.product(kilometer, status);
     status.expectErrorAndReset(U_ILLEGAL_ARGUMENT_ERROR);
-    MeasureUnit powerN15 = MeasureUnit::forIdentifier("per-p15-kilometer", status);
-    verifySingleUnit(powerN15, UMEASURE_SI_PREFIX_KILO, -15, "per-p15-kilometer");
+    MeasureUnit powerN15 = MeasureUnit::forIdentifier("per-pow15-kilometer", status);
+    verifySingleUnit(powerN15, UMEASURE_SI_PREFIX_KILO, -15, "per-pow15-kilometer");
     status.errIfFailureAndReset();
-    MeasureUnit powerN16a = MeasureUnit::forIdentifier("per-p16-kilometer", status);
+    MeasureUnit powerN16a = MeasureUnit::forIdentifier("per-pow16-kilometer", status);
     status.expectErrorAndReset(U_ILLEGAL_ARGUMENT_ERROR);
     MeasureUnit powerN16b = powerN15.product(overQuarticKilometer1, status);
     status.expectErrorAndReset(U_ILLEGAL_ARGUMENT_ERROR);