• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // © 2016 and later: Unicode, Inc. and others.
2 // License & terms of use: http://www.unicode.org/copyright.html
3 /*
4 *******************************************************************************
5 * Copyright (C) 2014-2016, International Business Machines Corporation and    *
6 * others. All Rights Reserved.                                                *
7 *******************************************************************************
8 *
9 * File MEASFMTTEST.CPP
10 *
11 *******************************************************************************
12 */
13 #include <stdio.h>
14 #include <stdlib.h>
15 
16 #include "intltest.h"
17 
18 #if !UCONFIG_NO_FORMATTING
19 
20 #include "charstr.h"
21 #include "cstr.h"
22 #include "cstring.h"
23 #include "measunit_impl.h"
24 #include "unicode/decimfmt.h"
25 #include "unicode/measfmt.h"
26 #include "unicode/measure.h"
27 #include "unicode/measunit.h"
28 #include "unicode/strenum.h"
29 #include "unicode/tmunit.h"
30 #include "unicode/plurrule.h"
31 #include "unicode/ustring.h"
32 #include "unicode/reldatefmt.h"
33 #include "unicode/rbnf.h"
34 
35 struct ExpectedResult {
36     const Measure *measures;
37     int32_t count;
38     const char *expected;
39 };
40 
41 class MeasureFormatTest : public IntlTest {
42 public:
MeasureFormatTest()43     MeasureFormatTest() {
44     }
45 
46     void runIndexedTest(int32_t index, UBool exec, const char*& name, char* par = nullptr) override;
47 
48 private:
49     void TestBasic();
50     void TestCompatible53();
51     void TestCompatible54();
52     void TestCompatible55();
53     void TestCompatible56();
54     void TestCompatible57();
55     void TestCompatible58();
56     void TestCompatible59();
57     void TestCompatible63();
58     void TestCompatible64();
59     void TestCompatible65();
60     void TestCompatible68();
61     void TestCompatible69();
62     void TestCompatible70();
63     void TestCompatible72();
64     void TestCompatible73();
65     void TestCompatible74();
66     void TestGetAvailable();
67     void TestExamplesInDocs();
68     void TestFormatPeriodEn();
69     void Test10219FractionalPlurals();
70     void TestGreek();
71     void TestFormatSingleArg();
72     void TestFormatMeasuresZeroArg();
73     void TestSimplePer();
74     void TestNumeratorPlurals();
75     void TestMultiples();
76     void TestManyLocaleDurations();
77     void TestGram();
78     void TestCurrencies();
79     void TestDisplayNames();
80     void TestFieldPosition();
81     void TestFieldPositionMultiple();
82     void TestBadArg();
83     void TestEquality();
84     void TestGroupingSeparator();
85     void TestDoubleZero();
86     void TestUnitPerUnitResolution();
87     void TestIndividualPluralFallback();
88     void Test20332_PersonUnits();
89     void TestNumericTime();
90     void TestNumericTimeSomeSpecialFormats();
91     void TestIdentifiers();
92     void TestInvalidIdentifiers();
93     void TestIdentifierDetails();
94     void TestPrefixes();
95     void TestParseBuiltIns();
96     void TestParseToBuiltIn();
97     void TestKilogramIdentifier();
98     void TestCompoundUnitOperations();
99     void TestDimensionlessBehaviour();
100     void Test21060_AddressSanitizerProblem();
101     void Test21223_FrenchDuration();
102     void TestInternalMeasureUnitImpl();
103     void TestMeasureEquality();
104 
105     void verifyFormat(
106         const char *description,
107         const MeasureFormat &fmt,
108         const Measure *measures,
109         int32_t measureCount,
110         const char *expected);
111     void verifyFormatWithPrefix(
112         const char *description,
113         const MeasureFormat &fmt,
114         const UnicodeString &prefix,
115         const Measure *measures,
116         int32_t measureCount,
117         const char *expected);
118     void verifyFormat(
119         const char *description,
120         const MeasureFormat &fmt,
121         const ExpectedResult *expectedResults,
122         int32_t count);
123     void helperTestSimplePer(
124         const Locale &locale,
125         UMeasureFormatWidth width,
126         double value,
127         const MeasureUnit &unit,
128         const MeasureUnit &perUnit,
129         const char *expected);
130     void helperTestSimplePer(
131         const Locale &locale,
132         UMeasureFormatWidth width,
133         double value,
134         const MeasureUnit &unit,
135         const MeasureUnit &perUnit,
136         const char *expected,
137         int32_t field,
138         int32_t expected_start,
139         int32_t expected_end);
140     void helperTestMultiples(
141         const Locale &locale,
142         UMeasureFormatWidth width,
143         const char *expected);
144     void helperTestManyLocaleDurations(
145         const char *localeID,
146         UMeasureFormatWidth width,
147         const Measure *measures,
148         int32_t measureCount,
149         const char *expected);
150     void helperTestDisplayName(
151         const MeasureUnit *unit,
152         const char *localeID,
153         UMeasureFormatWidth width,
154         const char *expected);
155     void verifyFieldPosition(
156         const char *description,
157         const MeasureFormat &fmt,
158         const UnicodeString &prefix,
159         const Measure *measures,
160         int32_t measureCount,
161         NumberFormat::EAlignmentFields field,
162         int32_t start,
163         int32_t end);
164     void verifySingleUnit(
165         const MeasureUnit& unit,
166         UMeasurePrefix unitPrefix,
167         int8_t power,
168         const char* identifier);
169     void verifyCompoundUnit(
170         const MeasureUnit& unit,
171         const char* identifier,
172         const char** subIdentifiers,
173         int32_t subIdentifierCount);
174     void verifyMixedUnit(
175         const MeasureUnit& unit,
176         const char* identifier,
177         const char** subIdentifiers,
178         int32_t subIdentifierCount);
179 };
180 
runIndexedTest(int32_t index,UBool exec,const char * & name,char *)181 void MeasureFormatTest::runIndexedTest(
182         int32_t index, UBool exec, const char *&name, char *) {
183     if (exec) {
184         logln("TestSuite MeasureFormatTest: ");
185     }
186     TESTCASE_AUTO_BEGIN;
187     TESTCASE_AUTO(TestBasic);
188     TESTCASE_AUTO(TestCompatible53);
189     TESTCASE_AUTO(TestCompatible54);
190     TESTCASE_AUTO(TestCompatible55);
191     TESTCASE_AUTO(TestCompatible56);
192     TESTCASE_AUTO(TestCompatible57);
193     TESTCASE_AUTO(TestCompatible58);
194     TESTCASE_AUTO(TestCompatible59);
195     TESTCASE_AUTO(TestCompatible63);
196     TESTCASE_AUTO(TestCompatible64);
197     TESTCASE_AUTO(TestCompatible65);
198     TESTCASE_AUTO(TestCompatible68);
199     TESTCASE_AUTO(TestCompatible69);
200     TESTCASE_AUTO(TestCompatible70);
201     TESTCASE_AUTO(TestCompatible72);
202     TESTCASE_AUTO(TestCompatible73);
203     TESTCASE_AUTO(TestCompatible74);
204     TESTCASE_AUTO(TestGetAvailable);
205     TESTCASE_AUTO(TestExamplesInDocs);
206     TESTCASE_AUTO(TestFormatPeriodEn);
207     TESTCASE_AUTO(Test10219FractionalPlurals);
208     TESTCASE_AUTO(TestGreek);
209     TESTCASE_AUTO(TestFormatSingleArg);
210     TESTCASE_AUTO(TestFormatMeasuresZeroArg);
211     TESTCASE_AUTO(TestSimplePer);
212     TESTCASE_AUTO(TestNumeratorPlurals);
213     TESTCASE_AUTO(TestMultiples);
214     TESTCASE_AUTO(TestManyLocaleDurations);
215     TESTCASE_AUTO(TestGram);
216     TESTCASE_AUTO(TestCurrencies);
217     TESTCASE_AUTO(TestDisplayNames);
218     TESTCASE_AUTO(TestFieldPosition);
219     TESTCASE_AUTO(TestFieldPositionMultiple);
220     TESTCASE_AUTO(TestBadArg);
221     TESTCASE_AUTO(TestEquality);
222     TESTCASE_AUTO(TestGroupingSeparator);
223     TESTCASE_AUTO(TestDoubleZero);
224     TESTCASE_AUTO(TestUnitPerUnitResolution);
225     TESTCASE_AUTO(TestIndividualPluralFallback);
226     TESTCASE_AUTO(Test20332_PersonUnits);
227     TESTCASE_AUTO(TestNumericTime);
228     TESTCASE_AUTO(TestNumericTimeSomeSpecialFormats);
229     TESTCASE_AUTO(TestIdentifiers);
230     TESTCASE_AUTO(TestInvalidIdentifiers);
231     TESTCASE_AUTO(TestIdentifierDetails);
232     TESTCASE_AUTO(TestPrefixes);
233     TESTCASE_AUTO(TestParseBuiltIns);
234     TESTCASE_AUTO(TestParseToBuiltIn);
235     TESTCASE_AUTO(TestKilogramIdentifier);
236     TESTCASE_AUTO(TestCompoundUnitOperations);
237     TESTCASE_AUTO(TestDimensionlessBehaviour);
238     TESTCASE_AUTO(Test21060_AddressSanitizerProblem);
239     TESTCASE_AUTO(Test21223_FrenchDuration);
240     TESTCASE_AUTO(TestInternalMeasureUnitImpl);
241     TESTCASE_AUTO(TestMeasureEquality);
242     TESTCASE_AUTO_END;
243 }
244 
TestCompatible53()245 void MeasureFormatTest::TestCompatible53() {
246     UErrorCode status = U_ZERO_ERROR;
247     LocalPointer<MeasureUnit> measureUnit;
248     measureUnit.adoptInstead(MeasureUnit::createGForce(status));
249     measureUnit.adoptInstead(MeasureUnit::createArcMinute(status));
250     measureUnit.adoptInstead(MeasureUnit::createArcSecond(status));
251     measureUnit.adoptInstead(MeasureUnit::createDegree(status));
252     measureUnit.adoptInstead(MeasureUnit::createAcre(status));
253     measureUnit.adoptInstead(MeasureUnit::createHectare(status));
254     measureUnit.adoptInstead(MeasureUnit::createSquareFoot(status));
255     measureUnit.adoptInstead(MeasureUnit::createSquareKilometer(status));
256     measureUnit.adoptInstead(MeasureUnit::createSquareMeter(status));
257     measureUnit.adoptInstead(MeasureUnit::createSquareMile(status));
258     measureUnit.adoptInstead(MeasureUnit::createDay(status));
259     measureUnit.adoptInstead(MeasureUnit::createHour(status));
260     measureUnit.adoptInstead(MeasureUnit::createMillisecond(status));
261     measureUnit.adoptInstead(MeasureUnit::createMinute(status));
262     measureUnit.adoptInstead(MeasureUnit::createMonth(status));
263     measureUnit.adoptInstead(MeasureUnit::createSecond(status));
264     measureUnit.adoptInstead(MeasureUnit::createWeek(status));
265     measureUnit.adoptInstead(MeasureUnit::createYear(status));
266     measureUnit.adoptInstead(MeasureUnit::createCentimeter(status));
267     measureUnit.adoptInstead(MeasureUnit::createFoot(status));
268     measureUnit.adoptInstead(MeasureUnit::createInch(status));
269     measureUnit.adoptInstead(MeasureUnit::createKilometer(status));
270     measureUnit.adoptInstead(MeasureUnit::createLightYear(status));
271     measureUnit.adoptInstead(MeasureUnit::createMeter(status));
272     measureUnit.adoptInstead(MeasureUnit::createMile(status));
273     measureUnit.adoptInstead(MeasureUnit::createMillimeter(status));
274     measureUnit.adoptInstead(MeasureUnit::createPicometer(status));
275     measureUnit.adoptInstead(MeasureUnit::createYard(status));
276     measureUnit.adoptInstead(MeasureUnit::createGram(status));
277     measureUnit.adoptInstead(MeasureUnit::createKilogram(status));
278     measureUnit.adoptInstead(MeasureUnit::createOunce(status));
279     measureUnit.adoptInstead(MeasureUnit::createPound(status));
280     measureUnit.adoptInstead(MeasureUnit::createHorsepower(status));
281     measureUnit.adoptInstead(MeasureUnit::createKilowatt(status));
282     measureUnit.adoptInstead(MeasureUnit::createWatt(status));
283     measureUnit.adoptInstead(MeasureUnit::createHectopascal(status));
284     measureUnit.adoptInstead(MeasureUnit::createInchHg(status));
285     measureUnit.adoptInstead(MeasureUnit::createMillibar(status));
286     measureUnit.adoptInstead(MeasureUnit::createKilometerPerHour(status));
287     measureUnit.adoptInstead(MeasureUnit::createMeterPerSecond(status));
288     measureUnit.adoptInstead(MeasureUnit::createMilePerHour(status));
289     measureUnit.adoptInstead(MeasureUnit::createCelsius(status));
290     measureUnit.adoptInstead(MeasureUnit::createFahrenheit(status));
291     measureUnit.adoptInstead(MeasureUnit::createCubicKilometer(status));
292     measureUnit.adoptInstead(MeasureUnit::createCubicMile(status));
293     measureUnit.adoptInstead(MeasureUnit::createLiter(status));
294     assertSuccess("", status);
295 }
296 
TestCompatible54()297 void MeasureFormatTest::TestCompatible54() {
298     UErrorCode status = U_ZERO_ERROR;
299     LocalPointer<MeasureUnit> measureUnit;
300     measureUnit.adoptInstead(MeasureUnit::createGForce(status));
301     measureUnit.adoptInstead(MeasureUnit::createMeterPerSecondSquared(status));
302     measureUnit.adoptInstead(MeasureUnit::createArcMinute(status));
303     measureUnit.adoptInstead(MeasureUnit::createArcSecond(status));
304     measureUnit.adoptInstead(MeasureUnit::createDegree(status));
305     measureUnit.adoptInstead(MeasureUnit::createRadian(status));
306     measureUnit.adoptInstead(MeasureUnit::createAcre(status));
307     measureUnit.adoptInstead(MeasureUnit::createHectare(status));
308     measureUnit.adoptInstead(MeasureUnit::createSquareCentimeter(status));
309     measureUnit.adoptInstead(MeasureUnit::createSquareFoot(status));
310     measureUnit.adoptInstead(MeasureUnit::createSquareInch(status));
311     measureUnit.adoptInstead(MeasureUnit::createSquareKilometer(status));
312     measureUnit.adoptInstead(MeasureUnit::createSquareMeter(status));
313     measureUnit.adoptInstead(MeasureUnit::createSquareMile(status));
314     measureUnit.adoptInstead(MeasureUnit::createSquareYard(status));
315     measureUnit.adoptInstead(MeasureUnit::createLiterPerKilometer(status));
316     measureUnit.adoptInstead(MeasureUnit::createMilePerGallon(status));
317     measureUnit.adoptInstead(MeasureUnit::createBit(status));
318     measureUnit.adoptInstead(MeasureUnit::createByte(status));
319     measureUnit.adoptInstead(MeasureUnit::createGigabit(status));
320     measureUnit.adoptInstead(MeasureUnit::createGigabyte(status));
321     measureUnit.adoptInstead(MeasureUnit::createKilobit(status));
322     measureUnit.adoptInstead(MeasureUnit::createKilobyte(status));
323     measureUnit.adoptInstead(MeasureUnit::createMegabit(status));
324     measureUnit.adoptInstead(MeasureUnit::createMegabyte(status));
325     measureUnit.adoptInstead(MeasureUnit::createTerabit(status));
326     measureUnit.adoptInstead(MeasureUnit::createTerabyte(status));
327     measureUnit.adoptInstead(MeasureUnit::createDay(status));
328     measureUnit.adoptInstead(MeasureUnit::createHour(status));
329     measureUnit.adoptInstead(MeasureUnit::createMicrosecond(status));
330     measureUnit.adoptInstead(MeasureUnit::createMillisecond(status));
331     measureUnit.adoptInstead(MeasureUnit::createMinute(status));
332     measureUnit.adoptInstead(MeasureUnit::createMonth(status));
333     measureUnit.adoptInstead(MeasureUnit::createNanosecond(status));
334     measureUnit.adoptInstead(MeasureUnit::createSecond(status));
335     measureUnit.adoptInstead(MeasureUnit::createWeek(status));
336     measureUnit.adoptInstead(MeasureUnit::createYear(status));
337     measureUnit.adoptInstead(MeasureUnit::createAmpere(status));
338     measureUnit.adoptInstead(MeasureUnit::createMilliampere(status));
339     measureUnit.adoptInstead(MeasureUnit::createOhm(status));
340     measureUnit.adoptInstead(MeasureUnit::createVolt(status));
341     measureUnit.adoptInstead(MeasureUnit::createCalorie(status));
342     measureUnit.adoptInstead(MeasureUnit::createFoodcalorie(status));
343     measureUnit.adoptInstead(MeasureUnit::createJoule(status));
344     measureUnit.adoptInstead(MeasureUnit::createKilocalorie(status));
345     measureUnit.adoptInstead(MeasureUnit::createKilojoule(status));
346     measureUnit.adoptInstead(MeasureUnit::createKilowattHour(status));
347     measureUnit.adoptInstead(MeasureUnit::createGigahertz(status));
348     measureUnit.adoptInstead(MeasureUnit::createHertz(status));
349     measureUnit.adoptInstead(MeasureUnit::createKilohertz(status));
350     measureUnit.adoptInstead(MeasureUnit::createMegahertz(status));
351     measureUnit.adoptInstead(MeasureUnit::createAstronomicalUnit(status));
352     measureUnit.adoptInstead(MeasureUnit::createCentimeter(status));
353     measureUnit.adoptInstead(MeasureUnit::createDecimeter(status));
354     measureUnit.adoptInstead(MeasureUnit::createFathom(status));
355     measureUnit.adoptInstead(MeasureUnit::createFoot(status));
356     measureUnit.adoptInstead(MeasureUnit::createFurlong(status));
357     measureUnit.adoptInstead(MeasureUnit::createInch(status));
358     measureUnit.adoptInstead(MeasureUnit::createKilometer(status));
359     measureUnit.adoptInstead(MeasureUnit::createLightYear(status));
360     measureUnit.adoptInstead(MeasureUnit::createMeter(status));
361     measureUnit.adoptInstead(MeasureUnit::createMicrometer(status));
362     measureUnit.adoptInstead(MeasureUnit::createMile(status));
363     measureUnit.adoptInstead(MeasureUnit::createMillimeter(status));
364     measureUnit.adoptInstead(MeasureUnit::createNanometer(status));
365     measureUnit.adoptInstead(MeasureUnit::createNauticalMile(status));
366     measureUnit.adoptInstead(MeasureUnit::createParsec(status));
367     measureUnit.adoptInstead(MeasureUnit::createPicometer(status));
368     measureUnit.adoptInstead(MeasureUnit::createYard(status));
369     measureUnit.adoptInstead(MeasureUnit::createLux(status));
370     measureUnit.adoptInstead(MeasureUnit::createCarat(status));
371     measureUnit.adoptInstead(MeasureUnit::createGram(status));
372     measureUnit.adoptInstead(MeasureUnit::createKilogram(status));
373     measureUnit.adoptInstead(MeasureUnit::createMetricTon(status));
374     measureUnit.adoptInstead(MeasureUnit::createMicrogram(status));
375     measureUnit.adoptInstead(MeasureUnit::createMilligram(status));
376     measureUnit.adoptInstead(MeasureUnit::createOunce(status));
377     measureUnit.adoptInstead(MeasureUnit::createOunceTroy(status));
378     measureUnit.adoptInstead(MeasureUnit::createPound(status));
379     measureUnit.adoptInstead(MeasureUnit::createStone(status));
380     measureUnit.adoptInstead(MeasureUnit::createTon(status));
381     measureUnit.adoptInstead(MeasureUnit::createGigawatt(status));
382     measureUnit.adoptInstead(MeasureUnit::createHorsepower(status));
383     measureUnit.adoptInstead(MeasureUnit::createKilowatt(status));
384     measureUnit.adoptInstead(MeasureUnit::createMegawatt(status));
385     measureUnit.adoptInstead(MeasureUnit::createMilliwatt(status));
386     measureUnit.adoptInstead(MeasureUnit::createWatt(status));
387     measureUnit.adoptInstead(MeasureUnit::createHectopascal(status));
388     measureUnit.adoptInstead(MeasureUnit::createInchHg(status));
389     measureUnit.adoptInstead(MeasureUnit::createMillibar(status));
390     measureUnit.adoptInstead(MeasureUnit::createMillimeterOfMercury(status));
391     measureUnit.adoptInstead(MeasureUnit::createPoundPerSquareInch(status));
392     measureUnit.adoptInstead(MeasureUnit::createKarat(status));
393     measureUnit.adoptInstead(MeasureUnit::createKilometerPerHour(status));
394     measureUnit.adoptInstead(MeasureUnit::createMeterPerSecond(status));
395     measureUnit.adoptInstead(MeasureUnit::createMilePerHour(status));
396     measureUnit.adoptInstead(MeasureUnit::createCelsius(status));
397     measureUnit.adoptInstead(MeasureUnit::createFahrenheit(status));
398     measureUnit.adoptInstead(MeasureUnit::createKelvin(status));
399     measureUnit.adoptInstead(MeasureUnit::createAcreFoot(status));
400     measureUnit.adoptInstead(MeasureUnit::createBushel(status));
401     measureUnit.adoptInstead(MeasureUnit::createCentiliter(status));
402     measureUnit.adoptInstead(MeasureUnit::createCubicCentimeter(status));
403     measureUnit.adoptInstead(MeasureUnit::createCubicFoot(status));
404     measureUnit.adoptInstead(MeasureUnit::createCubicInch(status));
405     measureUnit.adoptInstead(MeasureUnit::createCubicKilometer(status));
406     measureUnit.adoptInstead(MeasureUnit::createCubicMeter(status));
407     measureUnit.adoptInstead(MeasureUnit::createCubicMile(status));
408     measureUnit.adoptInstead(MeasureUnit::createCubicYard(status));
409     measureUnit.adoptInstead(MeasureUnit::createCup(status));
410     measureUnit.adoptInstead(MeasureUnit::createDeciliter(status));
411     measureUnit.adoptInstead(MeasureUnit::createFluidOunce(status));
412     measureUnit.adoptInstead(MeasureUnit::createGallon(status));
413     measureUnit.adoptInstead(MeasureUnit::createHectoliter(status));
414     measureUnit.adoptInstead(MeasureUnit::createLiter(status));
415     measureUnit.adoptInstead(MeasureUnit::createMegaliter(status));
416     measureUnit.adoptInstead(MeasureUnit::createMilliliter(status));
417     measureUnit.adoptInstead(MeasureUnit::createPint(status));
418     measureUnit.adoptInstead(MeasureUnit::createQuart(status));
419     measureUnit.adoptInstead(MeasureUnit::createTablespoon(status));
420     measureUnit.adoptInstead(MeasureUnit::createTeaspoon(status));
421     assertSuccess("", status);
422 }
423 
TestCompatible55()424 void MeasureFormatTest::TestCompatible55() {
425     UErrorCode status = U_ZERO_ERROR;
426     LocalPointer<MeasureUnit> measureUnit;
427     measureUnit.adoptInstead(MeasureUnit::createGForce(status));
428     measureUnit.adoptInstead(MeasureUnit::createMeterPerSecondSquared(status));
429     measureUnit.adoptInstead(MeasureUnit::createArcMinute(status));
430     measureUnit.adoptInstead(MeasureUnit::createArcSecond(status));
431     measureUnit.adoptInstead(MeasureUnit::createDegree(status));
432     measureUnit.adoptInstead(MeasureUnit::createRadian(status));
433     measureUnit.adoptInstead(MeasureUnit::createAcre(status));
434     measureUnit.adoptInstead(MeasureUnit::createHectare(status));
435     measureUnit.adoptInstead(MeasureUnit::createSquareCentimeter(status));
436     measureUnit.adoptInstead(MeasureUnit::createSquareFoot(status));
437     measureUnit.adoptInstead(MeasureUnit::createSquareInch(status));
438     measureUnit.adoptInstead(MeasureUnit::createSquareKilometer(status));
439     measureUnit.adoptInstead(MeasureUnit::createSquareMeter(status));
440     measureUnit.adoptInstead(MeasureUnit::createSquareMile(status));
441     measureUnit.adoptInstead(MeasureUnit::createSquareYard(status));
442     measureUnit.adoptInstead(MeasureUnit::createLiterPerKilometer(status));
443     measureUnit.adoptInstead(MeasureUnit::createMilePerGallon(status));
444     measureUnit.adoptInstead(MeasureUnit::createBit(status));
445     measureUnit.adoptInstead(MeasureUnit::createByte(status));
446     measureUnit.adoptInstead(MeasureUnit::createGigabit(status));
447     measureUnit.adoptInstead(MeasureUnit::createGigabyte(status));
448     measureUnit.adoptInstead(MeasureUnit::createKilobit(status));
449     measureUnit.adoptInstead(MeasureUnit::createKilobyte(status));
450     measureUnit.adoptInstead(MeasureUnit::createMegabit(status));
451     measureUnit.adoptInstead(MeasureUnit::createMegabyte(status));
452     measureUnit.adoptInstead(MeasureUnit::createTerabit(status));
453     measureUnit.adoptInstead(MeasureUnit::createTerabyte(status));
454     measureUnit.adoptInstead(MeasureUnit::createDay(status));
455     measureUnit.adoptInstead(MeasureUnit::createHour(status));
456     measureUnit.adoptInstead(MeasureUnit::createMicrosecond(status));
457     measureUnit.adoptInstead(MeasureUnit::createMillisecond(status));
458     measureUnit.adoptInstead(MeasureUnit::createMinute(status));
459     measureUnit.adoptInstead(MeasureUnit::createMonth(status));
460     measureUnit.adoptInstead(MeasureUnit::createNanosecond(status));
461     measureUnit.adoptInstead(MeasureUnit::createSecond(status));
462     measureUnit.adoptInstead(MeasureUnit::createWeek(status));
463     measureUnit.adoptInstead(MeasureUnit::createYear(status));
464     measureUnit.adoptInstead(MeasureUnit::createAmpere(status));
465     measureUnit.adoptInstead(MeasureUnit::createMilliampere(status));
466     measureUnit.adoptInstead(MeasureUnit::createOhm(status));
467     measureUnit.adoptInstead(MeasureUnit::createVolt(status));
468     measureUnit.adoptInstead(MeasureUnit::createCalorie(status));
469     measureUnit.adoptInstead(MeasureUnit::createFoodcalorie(status));
470     measureUnit.adoptInstead(MeasureUnit::createJoule(status));
471     measureUnit.adoptInstead(MeasureUnit::createKilocalorie(status));
472     measureUnit.adoptInstead(MeasureUnit::createKilojoule(status));
473     measureUnit.adoptInstead(MeasureUnit::createKilowattHour(status));
474     measureUnit.adoptInstead(MeasureUnit::createGigahertz(status));
475     measureUnit.adoptInstead(MeasureUnit::createHertz(status));
476     measureUnit.adoptInstead(MeasureUnit::createKilohertz(status));
477     measureUnit.adoptInstead(MeasureUnit::createMegahertz(status));
478     measureUnit.adoptInstead(MeasureUnit::createAstronomicalUnit(status));
479     measureUnit.adoptInstead(MeasureUnit::createCentimeter(status));
480     measureUnit.adoptInstead(MeasureUnit::createDecimeter(status));
481     measureUnit.adoptInstead(MeasureUnit::createFathom(status));
482     measureUnit.adoptInstead(MeasureUnit::createFoot(status));
483     measureUnit.adoptInstead(MeasureUnit::createFurlong(status));
484     measureUnit.adoptInstead(MeasureUnit::createInch(status));
485     measureUnit.adoptInstead(MeasureUnit::createKilometer(status));
486     measureUnit.adoptInstead(MeasureUnit::createLightYear(status));
487     measureUnit.adoptInstead(MeasureUnit::createMeter(status));
488     measureUnit.adoptInstead(MeasureUnit::createMicrometer(status));
489     measureUnit.adoptInstead(MeasureUnit::createMile(status));
490     measureUnit.adoptInstead(MeasureUnit::createMillimeter(status));
491     measureUnit.adoptInstead(MeasureUnit::createNanometer(status));
492     measureUnit.adoptInstead(MeasureUnit::createNauticalMile(status));
493     measureUnit.adoptInstead(MeasureUnit::createParsec(status));
494     measureUnit.adoptInstead(MeasureUnit::createPicometer(status));
495     measureUnit.adoptInstead(MeasureUnit::createYard(status));
496     measureUnit.adoptInstead(MeasureUnit::createLux(status));
497     measureUnit.adoptInstead(MeasureUnit::createCarat(status));
498     measureUnit.adoptInstead(MeasureUnit::createGram(status));
499     measureUnit.adoptInstead(MeasureUnit::createKilogram(status));
500     measureUnit.adoptInstead(MeasureUnit::createMetricTon(status));
501     measureUnit.adoptInstead(MeasureUnit::createMicrogram(status));
502     measureUnit.adoptInstead(MeasureUnit::createMilligram(status));
503     measureUnit.adoptInstead(MeasureUnit::createOunce(status));
504     measureUnit.adoptInstead(MeasureUnit::createOunceTroy(status));
505     measureUnit.adoptInstead(MeasureUnit::createPound(status));
506     measureUnit.adoptInstead(MeasureUnit::createStone(status));
507     measureUnit.adoptInstead(MeasureUnit::createTon(status));
508     measureUnit.adoptInstead(MeasureUnit::createGigawatt(status));
509     measureUnit.adoptInstead(MeasureUnit::createHorsepower(status));
510     measureUnit.adoptInstead(MeasureUnit::createKilowatt(status));
511     measureUnit.adoptInstead(MeasureUnit::createMegawatt(status));
512     measureUnit.adoptInstead(MeasureUnit::createMilliwatt(status));
513     measureUnit.adoptInstead(MeasureUnit::createWatt(status));
514     measureUnit.adoptInstead(MeasureUnit::createHectopascal(status));
515     measureUnit.adoptInstead(MeasureUnit::createInchHg(status));
516     measureUnit.adoptInstead(MeasureUnit::createMillibar(status));
517     measureUnit.adoptInstead(MeasureUnit::createMillimeterOfMercury(status));
518     measureUnit.adoptInstead(MeasureUnit::createPoundPerSquareInch(status));
519     measureUnit.adoptInstead(MeasureUnit::createKarat(status));
520     measureUnit.adoptInstead(MeasureUnit::createKilometerPerHour(status));
521     measureUnit.adoptInstead(MeasureUnit::createMeterPerSecond(status));
522     measureUnit.adoptInstead(MeasureUnit::createMilePerHour(status));
523     measureUnit.adoptInstead(MeasureUnit::createCelsius(status));
524     measureUnit.adoptInstead(MeasureUnit::createFahrenheit(status));
525     measureUnit.adoptInstead(MeasureUnit::createGenericTemperature(status));
526     measureUnit.adoptInstead(MeasureUnit::createKelvin(status));
527     measureUnit.adoptInstead(MeasureUnit::createAcreFoot(status));
528     measureUnit.adoptInstead(MeasureUnit::createBushel(status));
529     measureUnit.adoptInstead(MeasureUnit::createCentiliter(status));
530     measureUnit.adoptInstead(MeasureUnit::createCubicCentimeter(status));
531     measureUnit.adoptInstead(MeasureUnit::createCubicFoot(status));
532     measureUnit.adoptInstead(MeasureUnit::createCubicInch(status));
533     measureUnit.adoptInstead(MeasureUnit::createCubicKilometer(status));
534     measureUnit.adoptInstead(MeasureUnit::createCubicMeter(status));
535     measureUnit.adoptInstead(MeasureUnit::createCubicMile(status));
536     measureUnit.adoptInstead(MeasureUnit::createCubicYard(status));
537     measureUnit.adoptInstead(MeasureUnit::createCup(status));
538     measureUnit.adoptInstead(MeasureUnit::createDeciliter(status));
539     measureUnit.adoptInstead(MeasureUnit::createFluidOunce(status));
540     measureUnit.adoptInstead(MeasureUnit::createGallon(status));
541     measureUnit.adoptInstead(MeasureUnit::createHectoliter(status));
542     measureUnit.adoptInstead(MeasureUnit::createLiter(status));
543     measureUnit.adoptInstead(MeasureUnit::createMegaliter(status));
544     measureUnit.adoptInstead(MeasureUnit::createMilliliter(status));
545     measureUnit.adoptInstead(MeasureUnit::createPint(status));
546     measureUnit.adoptInstead(MeasureUnit::createQuart(status));
547     measureUnit.adoptInstead(MeasureUnit::createTablespoon(status));
548     measureUnit.adoptInstead(MeasureUnit::createTeaspoon(status));
549     assertSuccess("", status);
550 }
551 
TestCompatible56()552 void MeasureFormatTest::TestCompatible56() {
553     UErrorCode status = U_ZERO_ERROR;
554     LocalPointer<MeasureUnit> measureUnit;
555     measureUnit.adoptInstead(MeasureUnit::createGForce(status));
556     measureUnit.adoptInstead(MeasureUnit::createMeterPerSecondSquared(status));
557     measureUnit.adoptInstead(MeasureUnit::createArcMinute(status));
558     measureUnit.adoptInstead(MeasureUnit::createArcSecond(status));
559     measureUnit.adoptInstead(MeasureUnit::createDegree(status));
560     measureUnit.adoptInstead(MeasureUnit::createRadian(status));
561     measureUnit.adoptInstead(MeasureUnit::createRevolutionAngle(status));
562     measureUnit.adoptInstead(MeasureUnit::createAcre(status));
563     measureUnit.adoptInstead(MeasureUnit::createHectare(status));
564     measureUnit.adoptInstead(MeasureUnit::createSquareCentimeter(status));
565     measureUnit.adoptInstead(MeasureUnit::createSquareFoot(status));
566     measureUnit.adoptInstead(MeasureUnit::createSquareInch(status));
567     measureUnit.adoptInstead(MeasureUnit::createSquareKilometer(status));
568     measureUnit.adoptInstead(MeasureUnit::createSquareMeter(status));
569     measureUnit.adoptInstead(MeasureUnit::createSquareMile(status));
570     measureUnit.adoptInstead(MeasureUnit::createSquareYard(status));
571     measureUnit.adoptInstead(MeasureUnit::createLiterPer100Kilometers(status));
572     measureUnit.adoptInstead(MeasureUnit::createLiterPerKilometer(status));
573     measureUnit.adoptInstead(MeasureUnit::createMilePerGallon(status));
574     measureUnit.adoptInstead(MeasureUnit::createBit(status));
575     measureUnit.adoptInstead(MeasureUnit::createByte(status));
576     measureUnit.adoptInstead(MeasureUnit::createGigabit(status));
577     measureUnit.adoptInstead(MeasureUnit::createGigabyte(status));
578     measureUnit.adoptInstead(MeasureUnit::createKilobit(status));
579     measureUnit.adoptInstead(MeasureUnit::createKilobyte(status));
580     measureUnit.adoptInstead(MeasureUnit::createMegabit(status));
581     measureUnit.adoptInstead(MeasureUnit::createMegabyte(status));
582     measureUnit.adoptInstead(MeasureUnit::createTerabit(status));
583     measureUnit.adoptInstead(MeasureUnit::createTerabyte(status));
584     measureUnit.adoptInstead(MeasureUnit::createCentury(status));
585     measureUnit.adoptInstead(MeasureUnit::createDay(status));
586     measureUnit.adoptInstead(MeasureUnit::createHour(status));
587     measureUnit.adoptInstead(MeasureUnit::createMicrosecond(status));
588     measureUnit.adoptInstead(MeasureUnit::createMillisecond(status));
589     measureUnit.adoptInstead(MeasureUnit::createMinute(status));
590     measureUnit.adoptInstead(MeasureUnit::createMonth(status));
591     measureUnit.adoptInstead(MeasureUnit::createNanosecond(status));
592     measureUnit.adoptInstead(MeasureUnit::createSecond(status));
593     measureUnit.adoptInstead(MeasureUnit::createWeek(status));
594     measureUnit.adoptInstead(MeasureUnit::createYear(status));
595     measureUnit.adoptInstead(MeasureUnit::createAmpere(status));
596     measureUnit.adoptInstead(MeasureUnit::createMilliampere(status));
597     measureUnit.adoptInstead(MeasureUnit::createOhm(status));
598     measureUnit.adoptInstead(MeasureUnit::createVolt(status));
599     measureUnit.adoptInstead(MeasureUnit::createCalorie(status));
600     measureUnit.adoptInstead(MeasureUnit::createFoodcalorie(status));
601     measureUnit.adoptInstead(MeasureUnit::createJoule(status));
602     measureUnit.adoptInstead(MeasureUnit::createKilocalorie(status));
603     measureUnit.adoptInstead(MeasureUnit::createKilojoule(status));
604     measureUnit.adoptInstead(MeasureUnit::createKilowattHour(status));
605     measureUnit.adoptInstead(MeasureUnit::createGigahertz(status));
606     measureUnit.adoptInstead(MeasureUnit::createHertz(status));
607     measureUnit.adoptInstead(MeasureUnit::createKilohertz(status));
608     measureUnit.adoptInstead(MeasureUnit::createMegahertz(status));
609     measureUnit.adoptInstead(MeasureUnit::createAstronomicalUnit(status));
610     measureUnit.adoptInstead(MeasureUnit::createCentimeter(status));
611     measureUnit.adoptInstead(MeasureUnit::createDecimeter(status));
612     measureUnit.adoptInstead(MeasureUnit::createFathom(status));
613     measureUnit.adoptInstead(MeasureUnit::createFoot(status));
614     measureUnit.adoptInstead(MeasureUnit::createFurlong(status));
615     measureUnit.adoptInstead(MeasureUnit::createInch(status));
616     measureUnit.adoptInstead(MeasureUnit::createKilometer(status));
617     measureUnit.adoptInstead(MeasureUnit::createLightYear(status));
618     measureUnit.adoptInstead(MeasureUnit::createMeter(status));
619     measureUnit.adoptInstead(MeasureUnit::createMicrometer(status));
620     measureUnit.adoptInstead(MeasureUnit::createMile(status));
621     measureUnit.adoptInstead(MeasureUnit::createMileScandinavian(status));
622     measureUnit.adoptInstead(MeasureUnit::createMillimeter(status));
623     measureUnit.adoptInstead(MeasureUnit::createNanometer(status));
624     measureUnit.adoptInstead(MeasureUnit::createNauticalMile(status));
625     measureUnit.adoptInstead(MeasureUnit::createParsec(status));
626     measureUnit.adoptInstead(MeasureUnit::createPicometer(status));
627     measureUnit.adoptInstead(MeasureUnit::createYard(status));
628     measureUnit.adoptInstead(MeasureUnit::createLux(status));
629     measureUnit.adoptInstead(MeasureUnit::createCarat(status));
630     measureUnit.adoptInstead(MeasureUnit::createGram(status));
631     measureUnit.adoptInstead(MeasureUnit::createKilogram(status));
632     measureUnit.adoptInstead(MeasureUnit::createMetricTon(status));
633     measureUnit.adoptInstead(MeasureUnit::createMicrogram(status));
634     measureUnit.adoptInstead(MeasureUnit::createMilligram(status));
635     measureUnit.adoptInstead(MeasureUnit::createOunce(status));
636     measureUnit.adoptInstead(MeasureUnit::createOunceTroy(status));
637     measureUnit.adoptInstead(MeasureUnit::createPound(status));
638     measureUnit.adoptInstead(MeasureUnit::createStone(status));
639     measureUnit.adoptInstead(MeasureUnit::createTon(status));
640     measureUnit.adoptInstead(MeasureUnit::createGigawatt(status));
641     measureUnit.adoptInstead(MeasureUnit::createHorsepower(status));
642     measureUnit.adoptInstead(MeasureUnit::createKilowatt(status));
643     measureUnit.adoptInstead(MeasureUnit::createMegawatt(status));
644     measureUnit.adoptInstead(MeasureUnit::createMilliwatt(status));
645     measureUnit.adoptInstead(MeasureUnit::createWatt(status));
646     measureUnit.adoptInstead(MeasureUnit::createHectopascal(status));
647     measureUnit.adoptInstead(MeasureUnit::createInchHg(status));
648     measureUnit.adoptInstead(MeasureUnit::createMillibar(status));
649     measureUnit.adoptInstead(MeasureUnit::createMillimeterOfMercury(status));
650     measureUnit.adoptInstead(MeasureUnit::createPoundPerSquareInch(status));
651     measureUnit.adoptInstead(MeasureUnit::createKarat(status));
652     measureUnit.adoptInstead(MeasureUnit::createKilometerPerHour(status));
653     measureUnit.adoptInstead(MeasureUnit::createKnot(status));
654     measureUnit.adoptInstead(MeasureUnit::createMeterPerSecond(status));
655     measureUnit.adoptInstead(MeasureUnit::createMilePerHour(status));
656     measureUnit.adoptInstead(MeasureUnit::createCelsius(status));
657     measureUnit.adoptInstead(MeasureUnit::createFahrenheit(status));
658     measureUnit.adoptInstead(MeasureUnit::createGenericTemperature(status));
659     measureUnit.adoptInstead(MeasureUnit::createKelvin(status));
660     measureUnit.adoptInstead(MeasureUnit::createAcreFoot(status));
661     measureUnit.adoptInstead(MeasureUnit::createBushel(status));
662     measureUnit.adoptInstead(MeasureUnit::createCentiliter(status));
663     measureUnit.adoptInstead(MeasureUnit::createCubicCentimeter(status));
664     measureUnit.adoptInstead(MeasureUnit::createCubicFoot(status));
665     measureUnit.adoptInstead(MeasureUnit::createCubicInch(status));
666     measureUnit.adoptInstead(MeasureUnit::createCubicKilometer(status));
667     measureUnit.adoptInstead(MeasureUnit::createCubicMeter(status));
668     measureUnit.adoptInstead(MeasureUnit::createCubicMile(status));
669     measureUnit.adoptInstead(MeasureUnit::createCubicYard(status));
670     measureUnit.adoptInstead(MeasureUnit::createCup(status));
671     measureUnit.adoptInstead(MeasureUnit::createCupMetric(status));
672     measureUnit.adoptInstead(MeasureUnit::createDeciliter(status));
673     measureUnit.adoptInstead(MeasureUnit::createFluidOunce(status));
674     measureUnit.adoptInstead(MeasureUnit::createGallon(status));
675     measureUnit.adoptInstead(MeasureUnit::createHectoliter(status));
676     measureUnit.adoptInstead(MeasureUnit::createLiter(status));
677     measureUnit.adoptInstead(MeasureUnit::createMegaliter(status));
678     measureUnit.adoptInstead(MeasureUnit::createMilliliter(status));
679     measureUnit.adoptInstead(MeasureUnit::createPint(status));
680     measureUnit.adoptInstead(MeasureUnit::createPintMetric(status));
681     measureUnit.adoptInstead(MeasureUnit::createQuart(status));
682     measureUnit.adoptInstead(MeasureUnit::createTablespoon(status));
683     measureUnit.adoptInstead(MeasureUnit::createTeaspoon(status));
684     assertSuccess("", status);
685 }
686 
TestCompatible57()687 void MeasureFormatTest::TestCompatible57() {
688     UErrorCode status = U_ZERO_ERROR;
689     LocalPointer<MeasureUnit> measureUnit;
690     measureUnit.adoptInstead(MeasureUnit::createGForce(status));
691     measureUnit.adoptInstead(MeasureUnit::createMeterPerSecondSquared(status));
692     measureUnit.adoptInstead(MeasureUnit::createArcMinute(status));
693     measureUnit.adoptInstead(MeasureUnit::createArcSecond(status));
694     measureUnit.adoptInstead(MeasureUnit::createDegree(status));
695     measureUnit.adoptInstead(MeasureUnit::createRadian(status));
696     measureUnit.adoptInstead(MeasureUnit::createRevolutionAngle(status));
697     measureUnit.adoptInstead(MeasureUnit::createAcre(status));
698     measureUnit.adoptInstead(MeasureUnit::createHectare(status));
699     measureUnit.adoptInstead(MeasureUnit::createSquareCentimeter(status));
700     measureUnit.adoptInstead(MeasureUnit::createSquareFoot(status));
701     measureUnit.adoptInstead(MeasureUnit::createSquareInch(status));
702     measureUnit.adoptInstead(MeasureUnit::createSquareKilometer(status));
703     measureUnit.adoptInstead(MeasureUnit::createSquareMeter(status));
704     measureUnit.adoptInstead(MeasureUnit::createSquareMile(status));
705     measureUnit.adoptInstead(MeasureUnit::createSquareYard(status));
706     measureUnit.adoptInstead(MeasureUnit::createKarat(status));
707     measureUnit.adoptInstead(MeasureUnit::createMilligramPerDeciliter(status));
708     measureUnit.adoptInstead(MeasureUnit::createMillimolePerLiter(status));
709     measureUnit.adoptInstead(MeasureUnit::createPartPerMillion(status));
710     measureUnit.adoptInstead(MeasureUnit::createLiterPer100Kilometers(status));
711     measureUnit.adoptInstead(MeasureUnit::createLiterPerKilometer(status));
712     measureUnit.adoptInstead(MeasureUnit::createMilePerGallon(status));
713     measureUnit.adoptInstead(MeasureUnit::createMilePerGallonImperial(status));
714     measureUnit.adoptInstead(MeasureUnit::createBit(status));
715     measureUnit.adoptInstead(MeasureUnit::createByte(status));
716     measureUnit.adoptInstead(MeasureUnit::createGigabit(status));
717     measureUnit.adoptInstead(MeasureUnit::createGigabyte(status));
718     measureUnit.adoptInstead(MeasureUnit::createKilobit(status));
719     measureUnit.adoptInstead(MeasureUnit::createKilobyte(status));
720     measureUnit.adoptInstead(MeasureUnit::createMegabit(status));
721     measureUnit.adoptInstead(MeasureUnit::createMegabyte(status));
722     measureUnit.adoptInstead(MeasureUnit::createTerabit(status));
723     measureUnit.adoptInstead(MeasureUnit::createTerabyte(status));
724     measureUnit.adoptInstead(MeasureUnit::createCentury(status));
725     measureUnit.adoptInstead(MeasureUnit::createDay(status));
726     measureUnit.adoptInstead(MeasureUnit::createHour(status));
727     measureUnit.adoptInstead(MeasureUnit::createMicrosecond(status));
728     measureUnit.adoptInstead(MeasureUnit::createMillisecond(status));
729     measureUnit.adoptInstead(MeasureUnit::createMinute(status));
730     measureUnit.adoptInstead(MeasureUnit::createMonth(status));
731     measureUnit.adoptInstead(MeasureUnit::createNanosecond(status));
732     measureUnit.adoptInstead(MeasureUnit::createSecond(status));
733     measureUnit.adoptInstead(MeasureUnit::createWeek(status));
734     measureUnit.adoptInstead(MeasureUnit::createYear(status));
735     measureUnit.adoptInstead(MeasureUnit::createAmpere(status));
736     measureUnit.adoptInstead(MeasureUnit::createMilliampere(status));
737     measureUnit.adoptInstead(MeasureUnit::createOhm(status));
738     measureUnit.adoptInstead(MeasureUnit::createVolt(status));
739     measureUnit.adoptInstead(MeasureUnit::createCalorie(status));
740     measureUnit.adoptInstead(MeasureUnit::createFoodcalorie(status));
741     measureUnit.adoptInstead(MeasureUnit::createJoule(status));
742     measureUnit.adoptInstead(MeasureUnit::createKilocalorie(status));
743     measureUnit.adoptInstead(MeasureUnit::createKilojoule(status));
744     measureUnit.adoptInstead(MeasureUnit::createKilowattHour(status));
745     measureUnit.adoptInstead(MeasureUnit::createGigahertz(status));
746     measureUnit.adoptInstead(MeasureUnit::createHertz(status));
747     measureUnit.adoptInstead(MeasureUnit::createKilohertz(status));
748     measureUnit.adoptInstead(MeasureUnit::createMegahertz(status));
749     measureUnit.adoptInstead(MeasureUnit::createAstronomicalUnit(status));
750     measureUnit.adoptInstead(MeasureUnit::createCentimeter(status));
751     measureUnit.adoptInstead(MeasureUnit::createDecimeter(status));
752     measureUnit.adoptInstead(MeasureUnit::createFathom(status));
753     measureUnit.adoptInstead(MeasureUnit::createFoot(status));
754     measureUnit.adoptInstead(MeasureUnit::createFurlong(status));
755     measureUnit.adoptInstead(MeasureUnit::createInch(status));
756     measureUnit.adoptInstead(MeasureUnit::createKilometer(status));
757     measureUnit.adoptInstead(MeasureUnit::createLightYear(status));
758     measureUnit.adoptInstead(MeasureUnit::createMeter(status));
759     measureUnit.adoptInstead(MeasureUnit::createMicrometer(status));
760     measureUnit.adoptInstead(MeasureUnit::createMile(status));
761     measureUnit.adoptInstead(MeasureUnit::createMileScandinavian(status));
762     measureUnit.adoptInstead(MeasureUnit::createMillimeter(status));
763     measureUnit.adoptInstead(MeasureUnit::createNanometer(status));
764     measureUnit.adoptInstead(MeasureUnit::createNauticalMile(status));
765     measureUnit.adoptInstead(MeasureUnit::createParsec(status));
766     measureUnit.adoptInstead(MeasureUnit::createPicometer(status));
767     measureUnit.adoptInstead(MeasureUnit::createYard(status));
768     measureUnit.adoptInstead(MeasureUnit::createLux(status));
769     measureUnit.adoptInstead(MeasureUnit::createCarat(status));
770     measureUnit.adoptInstead(MeasureUnit::createGram(status));
771     measureUnit.adoptInstead(MeasureUnit::createKilogram(status));
772     measureUnit.adoptInstead(MeasureUnit::createMetricTon(status));
773     measureUnit.adoptInstead(MeasureUnit::createMicrogram(status));
774     measureUnit.adoptInstead(MeasureUnit::createMilligram(status));
775     measureUnit.adoptInstead(MeasureUnit::createOunce(status));
776     measureUnit.adoptInstead(MeasureUnit::createOunceTroy(status));
777     measureUnit.adoptInstead(MeasureUnit::createPound(status));
778     measureUnit.adoptInstead(MeasureUnit::createStone(status));
779     measureUnit.adoptInstead(MeasureUnit::createTon(status));
780     measureUnit.adoptInstead(MeasureUnit::createGigawatt(status));
781     measureUnit.adoptInstead(MeasureUnit::createHorsepower(status));
782     measureUnit.adoptInstead(MeasureUnit::createKilowatt(status));
783     measureUnit.adoptInstead(MeasureUnit::createMegawatt(status));
784     measureUnit.adoptInstead(MeasureUnit::createMilliwatt(status));
785     measureUnit.adoptInstead(MeasureUnit::createWatt(status));
786     measureUnit.adoptInstead(MeasureUnit::createHectopascal(status));
787     measureUnit.adoptInstead(MeasureUnit::createInchHg(status));
788     measureUnit.adoptInstead(MeasureUnit::createMillibar(status));
789     measureUnit.adoptInstead(MeasureUnit::createMillimeterOfMercury(status));
790     measureUnit.adoptInstead(MeasureUnit::createPoundPerSquareInch(status));
791     measureUnit.adoptInstead(MeasureUnit::createKilometerPerHour(status));
792     measureUnit.adoptInstead(MeasureUnit::createKnot(status));
793     measureUnit.adoptInstead(MeasureUnit::createMeterPerSecond(status));
794     measureUnit.adoptInstead(MeasureUnit::createMilePerHour(status));
795     measureUnit.adoptInstead(MeasureUnit::createCelsius(status));
796     measureUnit.adoptInstead(MeasureUnit::createFahrenheit(status));
797     measureUnit.adoptInstead(MeasureUnit::createGenericTemperature(status));
798     measureUnit.adoptInstead(MeasureUnit::createKelvin(status));
799     measureUnit.adoptInstead(MeasureUnit::createAcreFoot(status));
800     measureUnit.adoptInstead(MeasureUnit::createBushel(status));
801     measureUnit.adoptInstead(MeasureUnit::createCentiliter(status));
802     measureUnit.adoptInstead(MeasureUnit::createCubicCentimeter(status));
803     measureUnit.adoptInstead(MeasureUnit::createCubicFoot(status));
804     measureUnit.adoptInstead(MeasureUnit::createCubicInch(status));
805     measureUnit.adoptInstead(MeasureUnit::createCubicKilometer(status));
806     measureUnit.adoptInstead(MeasureUnit::createCubicMeter(status));
807     measureUnit.adoptInstead(MeasureUnit::createCubicMile(status));
808     measureUnit.adoptInstead(MeasureUnit::createCubicYard(status));
809     measureUnit.adoptInstead(MeasureUnit::createCup(status));
810     measureUnit.adoptInstead(MeasureUnit::createCupMetric(status));
811     measureUnit.adoptInstead(MeasureUnit::createDeciliter(status));
812     measureUnit.adoptInstead(MeasureUnit::createFluidOunce(status));
813     measureUnit.adoptInstead(MeasureUnit::createGallon(status));
814     measureUnit.adoptInstead(MeasureUnit::createGallonImperial(status));
815     measureUnit.adoptInstead(MeasureUnit::createHectoliter(status));
816     measureUnit.adoptInstead(MeasureUnit::createLiter(status));
817     measureUnit.adoptInstead(MeasureUnit::createMegaliter(status));
818     measureUnit.adoptInstead(MeasureUnit::createMilliliter(status));
819     measureUnit.adoptInstead(MeasureUnit::createPint(status));
820     measureUnit.adoptInstead(MeasureUnit::createPintMetric(status));
821     measureUnit.adoptInstead(MeasureUnit::createQuart(status));
822     measureUnit.adoptInstead(MeasureUnit::createTablespoon(status));
823     measureUnit.adoptInstead(MeasureUnit::createTeaspoon(status));
824     assertSuccess("", status);
825 }
826 
TestCompatible58()827 void MeasureFormatTest::TestCompatible58() {
828     UErrorCode status = U_ZERO_ERROR;
829     LocalPointer<MeasureUnit> measureUnit;
830     measureUnit.adoptInstead(MeasureUnit::createGForce(status));
831     measureUnit.adoptInstead(MeasureUnit::createMeterPerSecondSquared(status));
832     measureUnit.adoptInstead(MeasureUnit::createArcMinute(status));
833     measureUnit.adoptInstead(MeasureUnit::createArcSecond(status));
834     measureUnit.adoptInstead(MeasureUnit::createDegree(status));
835     measureUnit.adoptInstead(MeasureUnit::createRadian(status));
836     measureUnit.adoptInstead(MeasureUnit::createRevolutionAngle(status));
837     measureUnit.adoptInstead(MeasureUnit::createAcre(status));
838     measureUnit.adoptInstead(MeasureUnit::createHectare(status));
839     measureUnit.adoptInstead(MeasureUnit::createSquareCentimeter(status));
840     measureUnit.adoptInstead(MeasureUnit::createSquareFoot(status));
841     measureUnit.adoptInstead(MeasureUnit::createSquareInch(status));
842     measureUnit.adoptInstead(MeasureUnit::createSquareKilometer(status));
843     measureUnit.adoptInstead(MeasureUnit::createSquareMeter(status));
844     measureUnit.adoptInstead(MeasureUnit::createSquareMile(status));
845     measureUnit.adoptInstead(MeasureUnit::createSquareYard(status));
846     measureUnit.adoptInstead(MeasureUnit::createKarat(status));
847     measureUnit.adoptInstead(MeasureUnit::createMilligramPerDeciliter(status));
848     measureUnit.adoptInstead(MeasureUnit::createMillimolePerLiter(status));
849     measureUnit.adoptInstead(MeasureUnit::createPartPerMillion(status));
850     measureUnit.adoptInstead(MeasureUnit::createLiterPer100Kilometers(status));
851     measureUnit.adoptInstead(MeasureUnit::createLiterPerKilometer(status));
852     measureUnit.adoptInstead(MeasureUnit::createMilePerGallon(status));
853     measureUnit.adoptInstead(MeasureUnit::createMilePerGallonImperial(status));
854     // measureUnit.adoptInstead(MeasureUnit::createEast(status));
855     // measureUnit.adoptInstead(MeasureUnit::createNorth(status));
856     // measureUnit.adoptInstead(MeasureUnit::createSouth(status));
857     // measureUnit.adoptInstead(MeasureUnit::createWest(status));
858     measureUnit.adoptInstead(MeasureUnit::createBit(status));
859     measureUnit.adoptInstead(MeasureUnit::createByte(status));
860     measureUnit.adoptInstead(MeasureUnit::createGigabit(status));
861     measureUnit.adoptInstead(MeasureUnit::createGigabyte(status));
862     measureUnit.adoptInstead(MeasureUnit::createKilobit(status));
863     measureUnit.adoptInstead(MeasureUnit::createKilobyte(status));
864     measureUnit.adoptInstead(MeasureUnit::createMegabit(status));
865     measureUnit.adoptInstead(MeasureUnit::createMegabyte(status));
866     measureUnit.adoptInstead(MeasureUnit::createTerabit(status));
867     measureUnit.adoptInstead(MeasureUnit::createTerabyte(status));
868     measureUnit.adoptInstead(MeasureUnit::createCentury(status));
869     measureUnit.adoptInstead(MeasureUnit::createDay(status));
870     measureUnit.adoptInstead(MeasureUnit::createHour(status));
871     measureUnit.adoptInstead(MeasureUnit::createMicrosecond(status));
872     measureUnit.adoptInstead(MeasureUnit::createMillisecond(status));
873     measureUnit.adoptInstead(MeasureUnit::createMinute(status));
874     measureUnit.adoptInstead(MeasureUnit::createMonth(status));
875     measureUnit.adoptInstead(MeasureUnit::createNanosecond(status));
876     measureUnit.adoptInstead(MeasureUnit::createSecond(status));
877     measureUnit.adoptInstead(MeasureUnit::createWeek(status));
878     measureUnit.adoptInstead(MeasureUnit::createYear(status));
879     measureUnit.adoptInstead(MeasureUnit::createAmpere(status));
880     measureUnit.adoptInstead(MeasureUnit::createMilliampere(status));
881     measureUnit.adoptInstead(MeasureUnit::createOhm(status));
882     measureUnit.adoptInstead(MeasureUnit::createVolt(status));
883     measureUnit.adoptInstead(MeasureUnit::createCalorie(status));
884     measureUnit.adoptInstead(MeasureUnit::createFoodcalorie(status));
885     measureUnit.adoptInstead(MeasureUnit::createJoule(status));
886     measureUnit.adoptInstead(MeasureUnit::createKilocalorie(status));
887     measureUnit.adoptInstead(MeasureUnit::createKilojoule(status));
888     measureUnit.adoptInstead(MeasureUnit::createKilowattHour(status));
889     measureUnit.adoptInstead(MeasureUnit::createGigahertz(status));
890     measureUnit.adoptInstead(MeasureUnit::createHertz(status));
891     measureUnit.adoptInstead(MeasureUnit::createKilohertz(status));
892     measureUnit.adoptInstead(MeasureUnit::createMegahertz(status));
893     measureUnit.adoptInstead(MeasureUnit::createAstronomicalUnit(status));
894     measureUnit.adoptInstead(MeasureUnit::createCentimeter(status));
895     measureUnit.adoptInstead(MeasureUnit::createDecimeter(status));
896     measureUnit.adoptInstead(MeasureUnit::createFathom(status));
897     measureUnit.adoptInstead(MeasureUnit::createFoot(status));
898     measureUnit.adoptInstead(MeasureUnit::createFurlong(status));
899     measureUnit.adoptInstead(MeasureUnit::createInch(status));
900     measureUnit.adoptInstead(MeasureUnit::createKilometer(status));
901     measureUnit.adoptInstead(MeasureUnit::createLightYear(status));
902     measureUnit.adoptInstead(MeasureUnit::createMeter(status));
903     measureUnit.adoptInstead(MeasureUnit::createMicrometer(status));
904     measureUnit.adoptInstead(MeasureUnit::createMile(status));
905     measureUnit.adoptInstead(MeasureUnit::createMileScandinavian(status));
906     measureUnit.adoptInstead(MeasureUnit::createMillimeter(status));
907     measureUnit.adoptInstead(MeasureUnit::createNanometer(status));
908     measureUnit.adoptInstead(MeasureUnit::createNauticalMile(status));
909     measureUnit.adoptInstead(MeasureUnit::createParsec(status));
910     measureUnit.adoptInstead(MeasureUnit::createPicometer(status));
911     measureUnit.adoptInstead(MeasureUnit::createYard(status));
912     measureUnit.adoptInstead(MeasureUnit::createLux(status));
913     measureUnit.adoptInstead(MeasureUnit::createCarat(status));
914     measureUnit.adoptInstead(MeasureUnit::createGram(status));
915     measureUnit.adoptInstead(MeasureUnit::createKilogram(status));
916     measureUnit.adoptInstead(MeasureUnit::createMetricTon(status));
917     measureUnit.adoptInstead(MeasureUnit::createMicrogram(status));
918     measureUnit.adoptInstead(MeasureUnit::createMilligram(status));
919     measureUnit.adoptInstead(MeasureUnit::createOunce(status));
920     measureUnit.adoptInstead(MeasureUnit::createOunceTroy(status));
921     measureUnit.adoptInstead(MeasureUnit::createPound(status));
922     measureUnit.adoptInstead(MeasureUnit::createStone(status));
923     measureUnit.adoptInstead(MeasureUnit::createTon(status));
924     measureUnit.adoptInstead(MeasureUnit::createGigawatt(status));
925     measureUnit.adoptInstead(MeasureUnit::createHorsepower(status));
926     measureUnit.adoptInstead(MeasureUnit::createKilowatt(status));
927     measureUnit.adoptInstead(MeasureUnit::createMegawatt(status));
928     measureUnit.adoptInstead(MeasureUnit::createMilliwatt(status));
929     measureUnit.adoptInstead(MeasureUnit::createWatt(status));
930     measureUnit.adoptInstead(MeasureUnit::createHectopascal(status));
931     measureUnit.adoptInstead(MeasureUnit::createInchHg(status));
932     measureUnit.adoptInstead(MeasureUnit::createMillibar(status));
933     measureUnit.adoptInstead(MeasureUnit::createMillimeterOfMercury(status));
934     measureUnit.adoptInstead(MeasureUnit::createPoundPerSquareInch(status));
935     measureUnit.adoptInstead(MeasureUnit::createKilometerPerHour(status));
936     measureUnit.adoptInstead(MeasureUnit::createKnot(status));
937     measureUnit.adoptInstead(MeasureUnit::createMeterPerSecond(status));
938     measureUnit.adoptInstead(MeasureUnit::createMilePerHour(status));
939     measureUnit.adoptInstead(MeasureUnit::createCelsius(status));
940     measureUnit.adoptInstead(MeasureUnit::createFahrenheit(status));
941     measureUnit.adoptInstead(MeasureUnit::createGenericTemperature(status));
942     measureUnit.adoptInstead(MeasureUnit::createKelvin(status));
943     measureUnit.adoptInstead(MeasureUnit::createAcreFoot(status));
944     measureUnit.adoptInstead(MeasureUnit::createBushel(status));
945     measureUnit.adoptInstead(MeasureUnit::createCentiliter(status));
946     measureUnit.adoptInstead(MeasureUnit::createCubicCentimeter(status));
947     measureUnit.adoptInstead(MeasureUnit::createCubicFoot(status));
948     measureUnit.adoptInstead(MeasureUnit::createCubicInch(status));
949     measureUnit.adoptInstead(MeasureUnit::createCubicKilometer(status));
950     measureUnit.adoptInstead(MeasureUnit::createCubicMeter(status));
951     measureUnit.adoptInstead(MeasureUnit::createCubicMile(status));
952     measureUnit.adoptInstead(MeasureUnit::createCubicYard(status));
953     measureUnit.adoptInstead(MeasureUnit::createCup(status));
954     measureUnit.adoptInstead(MeasureUnit::createCupMetric(status));
955     measureUnit.adoptInstead(MeasureUnit::createDeciliter(status));
956     measureUnit.adoptInstead(MeasureUnit::createFluidOunce(status));
957     measureUnit.adoptInstead(MeasureUnit::createGallon(status));
958     measureUnit.adoptInstead(MeasureUnit::createGallonImperial(status));
959     measureUnit.adoptInstead(MeasureUnit::createHectoliter(status));
960     measureUnit.adoptInstead(MeasureUnit::createLiter(status));
961     measureUnit.adoptInstead(MeasureUnit::createMegaliter(status));
962     measureUnit.adoptInstead(MeasureUnit::createMilliliter(status));
963     measureUnit.adoptInstead(MeasureUnit::createPint(status));
964     measureUnit.adoptInstead(MeasureUnit::createPintMetric(status));
965     measureUnit.adoptInstead(MeasureUnit::createQuart(status));
966     measureUnit.adoptInstead(MeasureUnit::createTablespoon(status));
967     measureUnit.adoptInstead(MeasureUnit::createTeaspoon(status));
968     assertSuccess("", status);
969 }
970 
TestCompatible59()971 void MeasureFormatTest::TestCompatible59() {
972     UErrorCode status = U_ZERO_ERROR;
973     LocalPointer<MeasureUnit> measureUnit;
974     measureUnit.adoptInstead(MeasureUnit::createGForce(status));
975     measureUnit.adoptInstead(MeasureUnit::createMeterPerSecondSquared(status));
976     measureUnit.adoptInstead(MeasureUnit::createArcMinute(status));
977     measureUnit.adoptInstead(MeasureUnit::createArcSecond(status));
978     measureUnit.adoptInstead(MeasureUnit::createDegree(status));
979     measureUnit.adoptInstead(MeasureUnit::createRadian(status));
980     measureUnit.adoptInstead(MeasureUnit::createRevolutionAngle(status));
981     measureUnit.adoptInstead(MeasureUnit::createAcre(status));
982     measureUnit.adoptInstead(MeasureUnit::createHectare(status));
983     measureUnit.adoptInstead(MeasureUnit::createSquareCentimeter(status));
984     measureUnit.adoptInstead(MeasureUnit::createSquareFoot(status));
985     measureUnit.adoptInstead(MeasureUnit::createSquareInch(status));
986     measureUnit.adoptInstead(MeasureUnit::createSquareKilometer(status));
987     measureUnit.adoptInstead(MeasureUnit::createSquareMeter(status));
988     measureUnit.adoptInstead(MeasureUnit::createSquareMile(status));
989     measureUnit.adoptInstead(MeasureUnit::createSquareYard(status));
990     measureUnit.adoptInstead(MeasureUnit::createKarat(status));
991     measureUnit.adoptInstead(MeasureUnit::createMilligramPerDeciliter(status));
992     measureUnit.adoptInstead(MeasureUnit::createMillimolePerLiter(status));
993     measureUnit.adoptInstead(MeasureUnit::createPartPerMillion(status));
994     measureUnit.adoptInstead(MeasureUnit::createLiterPer100Kilometers(status));
995     measureUnit.adoptInstead(MeasureUnit::createLiterPerKilometer(status));
996     measureUnit.adoptInstead(MeasureUnit::createMilePerGallon(status));
997     measureUnit.adoptInstead(MeasureUnit::createMilePerGallonImperial(status));
998     measureUnit.adoptInstead(MeasureUnit::createBit(status));
999     measureUnit.adoptInstead(MeasureUnit::createByte(status));
1000     measureUnit.adoptInstead(MeasureUnit::createGigabit(status));
1001     measureUnit.adoptInstead(MeasureUnit::createGigabyte(status));
1002     measureUnit.adoptInstead(MeasureUnit::createKilobit(status));
1003     measureUnit.adoptInstead(MeasureUnit::createKilobyte(status));
1004     measureUnit.adoptInstead(MeasureUnit::createMegabit(status));
1005     measureUnit.adoptInstead(MeasureUnit::createMegabyte(status));
1006     measureUnit.adoptInstead(MeasureUnit::createTerabit(status));
1007     measureUnit.adoptInstead(MeasureUnit::createTerabyte(status));
1008     measureUnit.adoptInstead(MeasureUnit::createCentury(status));
1009     measureUnit.adoptInstead(MeasureUnit::createDay(status));
1010     measureUnit.adoptInstead(MeasureUnit::createHour(status));
1011     measureUnit.adoptInstead(MeasureUnit::createMicrosecond(status));
1012     measureUnit.adoptInstead(MeasureUnit::createMillisecond(status));
1013     measureUnit.adoptInstead(MeasureUnit::createMinute(status));
1014     measureUnit.adoptInstead(MeasureUnit::createMonth(status));
1015     measureUnit.adoptInstead(MeasureUnit::createNanosecond(status));
1016     measureUnit.adoptInstead(MeasureUnit::createSecond(status));
1017     measureUnit.adoptInstead(MeasureUnit::createWeek(status));
1018     measureUnit.adoptInstead(MeasureUnit::createYear(status));
1019     measureUnit.adoptInstead(MeasureUnit::createAmpere(status));
1020     measureUnit.adoptInstead(MeasureUnit::createMilliampere(status));
1021     measureUnit.adoptInstead(MeasureUnit::createOhm(status));
1022     measureUnit.adoptInstead(MeasureUnit::createVolt(status));
1023     measureUnit.adoptInstead(MeasureUnit::createCalorie(status));
1024     measureUnit.adoptInstead(MeasureUnit::createFoodcalorie(status));
1025     measureUnit.adoptInstead(MeasureUnit::createJoule(status));
1026     measureUnit.adoptInstead(MeasureUnit::createKilocalorie(status));
1027     measureUnit.adoptInstead(MeasureUnit::createKilojoule(status));
1028     measureUnit.adoptInstead(MeasureUnit::createKilowattHour(status));
1029     measureUnit.adoptInstead(MeasureUnit::createGigahertz(status));
1030     measureUnit.adoptInstead(MeasureUnit::createHertz(status));
1031     measureUnit.adoptInstead(MeasureUnit::createKilohertz(status));
1032     measureUnit.adoptInstead(MeasureUnit::createMegahertz(status));
1033     measureUnit.adoptInstead(MeasureUnit::createAstronomicalUnit(status));
1034     measureUnit.adoptInstead(MeasureUnit::createCentimeter(status));
1035     measureUnit.adoptInstead(MeasureUnit::createDecimeter(status));
1036     measureUnit.adoptInstead(MeasureUnit::createFathom(status));
1037     measureUnit.adoptInstead(MeasureUnit::createFoot(status));
1038     measureUnit.adoptInstead(MeasureUnit::createFurlong(status));
1039     measureUnit.adoptInstead(MeasureUnit::createInch(status));
1040     measureUnit.adoptInstead(MeasureUnit::createKilometer(status));
1041     measureUnit.adoptInstead(MeasureUnit::createLightYear(status));
1042     measureUnit.adoptInstead(MeasureUnit::createMeter(status));
1043     measureUnit.adoptInstead(MeasureUnit::createMicrometer(status));
1044     measureUnit.adoptInstead(MeasureUnit::createMile(status));
1045     measureUnit.adoptInstead(MeasureUnit::createMileScandinavian(status));
1046     measureUnit.adoptInstead(MeasureUnit::createMillimeter(status));
1047     measureUnit.adoptInstead(MeasureUnit::createNanometer(status));
1048     measureUnit.adoptInstead(MeasureUnit::createNauticalMile(status));
1049     measureUnit.adoptInstead(MeasureUnit::createParsec(status));
1050     measureUnit.adoptInstead(MeasureUnit::createPicometer(status));
1051     measureUnit.adoptInstead(MeasureUnit::createPoint(status));
1052     measureUnit.adoptInstead(MeasureUnit::createYard(status));
1053     measureUnit.adoptInstead(MeasureUnit::createLux(status));
1054     measureUnit.adoptInstead(MeasureUnit::createCarat(status));
1055     measureUnit.adoptInstead(MeasureUnit::createGram(status));
1056     measureUnit.adoptInstead(MeasureUnit::createKilogram(status));
1057     measureUnit.adoptInstead(MeasureUnit::createMetricTon(status));
1058     measureUnit.adoptInstead(MeasureUnit::createMicrogram(status));
1059     measureUnit.adoptInstead(MeasureUnit::createMilligram(status));
1060     measureUnit.adoptInstead(MeasureUnit::createOunce(status));
1061     measureUnit.adoptInstead(MeasureUnit::createOunceTroy(status));
1062     measureUnit.adoptInstead(MeasureUnit::createPound(status));
1063     measureUnit.adoptInstead(MeasureUnit::createStone(status));
1064     measureUnit.adoptInstead(MeasureUnit::createTon(status));
1065     measureUnit.adoptInstead(MeasureUnit::createGigawatt(status));
1066     measureUnit.adoptInstead(MeasureUnit::createHorsepower(status));
1067     measureUnit.adoptInstead(MeasureUnit::createKilowatt(status));
1068     measureUnit.adoptInstead(MeasureUnit::createMegawatt(status));
1069     measureUnit.adoptInstead(MeasureUnit::createMilliwatt(status));
1070     measureUnit.adoptInstead(MeasureUnit::createWatt(status));
1071     measureUnit.adoptInstead(MeasureUnit::createHectopascal(status));
1072     measureUnit.adoptInstead(MeasureUnit::createInchHg(status));
1073     measureUnit.adoptInstead(MeasureUnit::createMillibar(status));
1074     measureUnit.adoptInstead(MeasureUnit::createMillimeterOfMercury(status));
1075     measureUnit.adoptInstead(MeasureUnit::createPoundPerSquareInch(status));
1076     measureUnit.adoptInstead(MeasureUnit::createKilometerPerHour(status));
1077     measureUnit.adoptInstead(MeasureUnit::createKnot(status));
1078     measureUnit.adoptInstead(MeasureUnit::createMeterPerSecond(status));
1079     measureUnit.adoptInstead(MeasureUnit::createMilePerHour(status));
1080     measureUnit.adoptInstead(MeasureUnit::createCelsius(status));
1081     measureUnit.adoptInstead(MeasureUnit::createFahrenheit(status));
1082     measureUnit.adoptInstead(MeasureUnit::createGenericTemperature(status));
1083     measureUnit.adoptInstead(MeasureUnit::createKelvin(status));
1084     measureUnit.adoptInstead(MeasureUnit::createAcreFoot(status));
1085     measureUnit.adoptInstead(MeasureUnit::createBushel(status));
1086     measureUnit.adoptInstead(MeasureUnit::createCentiliter(status));
1087     measureUnit.adoptInstead(MeasureUnit::createCubicCentimeter(status));
1088     measureUnit.adoptInstead(MeasureUnit::createCubicFoot(status));
1089     measureUnit.adoptInstead(MeasureUnit::createCubicInch(status));
1090     measureUnit.adoptInstead(MeasureUnit::createCubicKilometer(status));
1091     measureUnit.adoptInstead(MeasureUnit::createCubicMeter(status));
1092     measureUnit.adoptInstead(MeasureUnit::createCubicMile(status));
1093     measureUnit.adoptInstead(MeasureUnit::createCubicYard(status));
1094     measureUnit.adoptInstead(MeasureUnit::createCup(status));
1095     measureUnit.adoptInstead(MeasureUnit::createCupMetric(status));
1096     measureUnit.adoptInstead(MeasureUnit::createDeciliter(status));
1097     measureUnit.adoptInstead(MeasureUnit::createFluidOunce(status));
1098     measureUnit.adoptInstead(MeasureUnit::createGallon(status));
1099     measureUnit.adoptInstead(MeasureUnit::createGallonImperial(status));
1100     measureUnit.adoptInstead(MeasureUnit::createHectoliter(status));
1101     measureUnit.adoptInstead(MeasureUnit::createLiter(status));
1102     measureUnit.adoptInstead(MeasureUnit::createMegaliter(status));
1103     measureUnit.adoptInstead(MeasureUnit::createMilliliter(status));
1104     measureUnit.adoptInstead(MeasureUnit::createPint(status));
1105     measureUnit.adoptInstead(MeasureUnit::createPintMetric(status));
1106     measureUnit.adoptInstead(MeasureUnit::createQuart(status));
1107     measureUnit.adoptInstead(MeasureUnit::createTablespoon(status));
1108     measureUnit.adoptInstead(MeasureUnit::createTeaspoon(status));
1109     assertSuccess("", status);
1110 }
1111 
1112 // Note that TestCompatible60(), TestCompatible61(), TestCompatible62()
1113 // would be the same as TestCompatible59(), no need to add them.
1114 
TestCompatible63()1115 void MeasureFormatTest::TestCompatible63() {
1116     UErrorCode status = U_ZERO_ERROR;
1117     LocalPointer<MeasureUnit> measureUnit;
1118     measureUnit.adoptInstead(MeasureUnit::createGForce(status));
1119     measureUnit.adoptInstead(MeasureUnit::createMeterPerSecondSquared(status));
1120     measureUnit.adoptInstead(MeasureUnit::createArcMinute(status));
1121     measureUnit.adoptInstead(MeasureUnit::createArcSecond(status));
1122     measureUnit.adoptInstead(MeasureUnit::createDegree(status));
1123     measureUnit.adoptInstead(MeasureUnit::createRadian(status));
1124     measureUnit.adoptInstead(MeasureUnit::createRevolutionAngle(status));
1125     measureUnit.adoptInstead(MeasureUnit::createAcre(status));
1126     measureUnit.adoptInstead(MeasureUnit::createHectare(status));
1127     measureUnit.adoptInstead(MeasureUnit::createSquareCentimeter(status));
1128     measureUnit.adoptInstead(MeasureUnit::createSquareFoot(status));
1129     measureUnit.adoptInstead(MeasureUnit::createSquareInch(status));
1130     measureUnit.adoptInstead(MeasureUnit::createSquareKilometer(status));
1131     measureUnit.adoptInstead(MeasureUnit::createSquareMeter(status));
1132     measureUnit.adoptInstead(MeasureUnit::createSquareMile(status));
1133     measureUnit.adoptInstead(MeasureUnit::createSquareYard(status));
1134     measureUnit.adoptInstead(MeasureUnit::createKarat(status));
1135     measureUnit.adoptInstead(MeasureUnit::createMilligramPerDeciliter(status));
1136     measureUnit.adoptInstead(MeasureUnit::createMillimolePerLiter(status));
1137     measureUnit.adoptInstead(MeasureUnit::createPartPerMillion(status));
1138     measureUnit.adoptInstead(MeasureUnit::createPercent(status));
1139     measureUnit.adoptInstead(MeasureUnit::createPermille(status));
1140     measureUnit.adoptInstead(MeasureUnit::createLiterPer100Kilometers(status));
1141     measureUnit.adoptInstead(MeasureUnit::createLiterPerKilometer(status));
1142     measureUnit.adoptInstead(MeasureUnit::createMilePerGallon(status));
1143     measureUnit.adoptInstead(MeasureUnit::createMilePerGallonImperial(status));
1144     measureUnit.adoptInstead(MeasureUnit::createBit(status));
1145     measureUnit.adoptInstead(MeasureUnit::createByte(status));
1146     measureUnit.adoptInstead(MeasureUnit::createGigabit(status));
1147     measureUnit.adoptInstead(MeasureUnit::createGigabyte(status));
1148     measureUnit.adoptInstead(MeasureUnit::createKilobit(status));
1149     measureUnit.adoptInstead(MeasureUnit::createKilobyte(status));
1150     measureUnit.adoptInstead(MeasureUnit::createMegabit(status));
1151     measureUnit.adoptInstead(MeasureUnit::createMegabyte(status));
1152     measureUnit.adoptInstead(MeasureUnit::createPetabyte(status));
1153     measureUnit.adoptInstead(MeasureUnit::createTerabit(status));
1154     measureUnit.adoptInstead(MeasureUnit::createTerabyte(status));
1155     measureUnit.adoptInstead(MeasureUnit::createCentury(status));
1156     measureUnit.adoptInstead(MeasureUnit::createDay(status));
1157     measureUnit.adoptInstead(MeasureUnit::createHour(status));
1158     measureUnit.adoptInstead(MeasureUnit::createMicrosecond(status));
1159     measureUnit.adoptInstead(MeasureUnit::createMillisecond(status));
1160     measureUnit.adoptInstead(MeasureUnit::createMinute(status));
1161     measureUnit.adoptInstead(MeasureUnit::createMonth(status));
1162     measureUnit.adoptInstead(MeasureUnit::createNanosecond(status));
1163     measureUnit.adoptInstead(MeasureUnit::createSecond(status));
1164     measureUnit.adoptInstead(MeasureUnit::createWeek(status));
1165     measureUnit.adoptInstead(MeasureUnit::createYear(status));
1166     measureUnit.adoptInstead(MeasureUnit::createAmpere(status));
1167     measureUnit.adoptInstead(MeasureUnit::createMilliampere(status));
1168     measureUnit.adoptInstead(MeasureUnit::createOhm(status));
1169     measureUnit.adoptInstead(MeasureUnit::createVolt(status));
1170     measureUnit.adoptInstead(MeasureUnit::createCalorie(status));
1171     measureUnit.adoptInstead(MeasureUnit::createFoodcalorie(status));
1172     measureUnit.adoptInstead(MeasureUnit::createJoule(status));
1173     measureUnit.adoptInstead(MeasureUnit::createKilocalorie(status));
1174     measureUnit.adoptInstead(MeasureUnit::createKilojoule(status));
1175     measureUnit.adoptInstead(MeasureUnit::createKilowattHour(status));
1176     measureUnit.adoptInstead(MeasureUnit::createGigahertz(status));
1177     measureUnit.adoptInstead(MeasureUnit::createHertz(status));
1178     measureUnit.adoptInstead(MeasureUnit::createKilohertz(status));
1179     measureUnit.adoptInstead(MeasureUnit::createMegahertz(status));
1180     measureUnit.adoptInstead(MeasureUnit::createAstronomicalUnit(status));
1181     measureUnit.adoptInstead(MeasureUnit::createCentimeter(status));
1182     measureUnit.adoptInstead(MeasureUnit::createDecimeter(status));
1183     measureUnit.adoptInstead(MeasureUnit::createFathom(status));
1184     measureUnit.adoptInstead(MeasureUnit::createFoot(status));
1185     measureUnit.adoptInstead(MeasureUnit::createFurlong(status));
1186     measureUnit.adoptInstead(MeasureUnit::createInch(status));
1187     measureUnit.adoptInstead(MeasureUnit::createKilometer(status));
1188     measureUnit.adoptInstead(MeasureUnit::createLightYear(status));
1189     measureUnit.adoptInstead(MeasureUnit::createMeter(status));
1190     measureUnit.adoptInstead(MeasureUnit::createMicrometer(status));
1191     measureUnit.adoptInstead(MeasureUnit::createMile(status));
1192     measureUnit.adoptInstead(MeasureUnit::createMileScandinavian(status));
1193     measureUnit.adoptInstead(MeasureUnit::createMillimeter(status));
1194     measureUnit.adoptInstead(MeasureUnit::createNanometer(status));
1195     measureUnit.adoptInstead(MeasureUnit::createNauticalMile(status));
1196     measureUnit.adoptInstead(MeasureUnit::createParsec(status));
1197     measureUnit.adoptInstead(MeasureUnit::createPicometer(status));
1198     measureUnit.adoptInstead(MeasureUnit::createPoint(status));
1199     measureUnit.adoptInstead(MeasureUnit::createYard(status));
1200     measureUnit.adoptInstead(MeasureUnit::createLux(status));
1201     measureUnit.adoptInstead(MeasureUnit::createCarat(status));
1202     measureUnit.adoptInstead(MeasureUnit::createGram(status));
1203     measureUnit.adoptInstead(MeasureUnit::createKilogram(status));
1204     measureUnit.adoptInstead(MeasureUnit::createMetricTon(status));
1205     measureUnit.adoptInstead(MeasureUnit::createMicrogram(status));
1206     measureUnit.adoptInstead(MeasureUnit::createMilligram(status));
1207     measureUnit.adoptInstead(MeasureUnit::createOunce(status));
1208     measureUnit.adoptInstead(MeasureUnit::createOunceTroy(status));
1209     measureUnit.adoptInstead(MeasureUnit::createPound(status));
1210     measureUnit.adoptInstead(MeasureUnit::createStone(status));
1211     measureUnit.adoptInstead(MeasureUnit::createTon(status));
1212     measureUnit.adoptInstead(MeasureUnit::createGigawatt(status));
1213     measureUnit.adoptInstead(MeasureUnit::createHorsepower(status));
1214     measureUnit.adoptInstead(MeasureUnit::createKilowatt(status));
1215     measureUnit.adoptInstead(MeasureUnit::createMegawatt(status));
1216     measureUnit.adoptInstead(MeasureUnit::createMilliwatt(status));
1217     measureUnit.adoptInstead(MeasureUnit::createWatt(status));
1218     measureUnit.adoptInstead(MeasureUnit::createAtmosphere(status));
1219     measureUnit.adoptInstead(MeasureUnit::createHectopascal(status));
1220     measureUnit.adoptInstead(MeasureUnit::createInchHg(status));
1221     measureUnit.adoptInstead(MeasureUnit::createMillibar(status));
1222     measureUnit.adoptInstead(MeasureUnit::createMillimeterOfMercury(status));
1223     measureUnit.adoptInstead(MeasureUnit::createPoundPerSquareInch(status));
1224     measureUnit.adoptInstead(MeasureUnit::createKilometerPerHour(status));
1225     measureUnit.adoptInstead(MeasureUnit::createKnot(status));
1226     measureUnit.adoptInstead(MeasureUnit::createMeterPerSecond(status));
1227     measureUnit.adoptInstead(MeasureUnit::createMilePerHour(status));
1228     measureUnit.adoptInstead(MeasureUnit::createCelsius(status));
1229     measureUnit.adoptInstead(MeasureUnit::createFahrenheit(status));
1230     measureUnit.adoptInstead(MeasureUnit::createGenericTemperature(status));
1231     measureUnit.adoptInstead(MeasureUnit::createKelvin(status));
1232     measureUnit.adoptInstead(MeasureUnit::createAcreFoot(status));
1233     measureUnit.adoptInstead(MeasureUnit::createBushel(status));
1234     measureUnit.adoptInstead(MeasureUnit::createCentiliter(status));
1235     measureUnit.adoptInstead(MeasureUnit::createCubicCentimeter(status));
1236     measureUnit.adoptInstead(MeasureUnit::createCubicFoot(status));
1237     measureUnit.adoptInstead(MeasureUnit::createCubicInch(status));
1238     measureUnit.adoptInstead(MeasureUnit::createCubicKilometer(status));
1239     measureUnit.adoptInstead(MeasureUnit::createCubicMeter(status));
1240     measureUnit.adoptInstead(MeasureUnit::createCubicMile(status));
1241     measureUnit.adoptInstead(MeasureUnit::createCubicYard(status));
1242     measureUnit.adoptInstead(MeasureUnit::createCup(status));
1243     measureUnit.adoptInstead(MeasureUnit::createCupMetric(status));
1244     measureUnit.adoptInstead(MeasureUnit::createDeciliter(status));
1245     measureUnit.adoptInstead(MeasureUnit::createFluidOunce(status));
1246     measureUnit.adoptInstead(MeasureUnit::createGallon(status));
1247     measureUnit.adoptInstead(MeasureUnit::createGallonImperial(status));
1248     measureUnit.adoptInstead(MeasureUnit::createHectoliter(status));
1249     measureUnit.adoptInstead(MeasureUnit::createLiter(status));
1250     measureUnit.adoptInstead(MeasureUnit::createMegaliter(status));
1251     measureUnit.adoptInstead(MeasureUnit::createMilliliter(status));
1252     measureUnit.adoptInstead(MeasureUnit::createPint(status));
1253     measureUnit.adoptInstead(MeasureUnit::createPintMetric(status));
1254     measureUnit.adoptInstead(MeasureUnit::createQuart(status));
1255     measureUnit.adoptInstead(MeasureUnit::createTablespoon(status));
1256     measureUnit.adoptInstead(MeasureUnit::createTeaspoon(status));
1257     assertSuccess("", status);
1258 }
1259 
TestCompatible64()1260 void MeasureFormatTest::TestCompatible64() {
1261     UErrorCode status = U_ZERO_ERROR;
1262     LocalPointer<MeasureUnit> measureUnit;
1263     MeasureUnit measureUnitValue;
1264     measureUnit.adoptInstead(MeasureUnit::createGForce(status));
1265     measureUnitValue = MeasureUnit::getGForce();
1266     measureUnit.adoptInstead(MeasureUnit::createMeterPerSecondSquared(status));
1267     measureUnitValue = MeasureUnit::getMeterPerSecondSquared();
1268     measureUnit.adoptInstead(MeasureUnit::createArcMinute(status));
1269     measureUnitValue = MeasureUnit::getArcMinute();
1270     measureUnit.adoptInstead(MeasureUnit::createArcSecond(status));
1271     measureUnitValue = MeasureUnit::getArcSecond();
1272     measureUnit.adoptInstead(MeasureUnit::createDegree(status));
1273     measureUnitValue = MeasureUnit::getDegree();
1274     measureUnit.adoptInstead(MeasureUnit::createRadian(status));
1275     measureUnitValue = MeasureUnit::getRadian();
1276     measureUnit.adoptInstead(MeasureUnit::createRevolutionAngle(status));
1277     measureUnitValue = MeasureUnit::getRevolutionAngle();
1278     measureUnit.adoptInstead(MeasureUnit::createAcre(status));
1279     measureUnitValue = MeasureUnit::getAcre();
1280     measureUnit.adoptInstead(MeasureUnit::createDunam(status));
1281     measureUnitValue = MeasureUnit::getDunam();
1282     measureUnit.adoptInstead(MeasureUnit::createHectare(status));
1283     measureUnitValue = MeasureUnit::getHectare();
1284     measureUnit.adoptInstead(MeasureUnit::createSquareCentimeter(status));
1285     measureUnitValue = MeasureUnit::getSquareCentimeter();
1286     measureUnit.adoptInstead(MeasureUnit::createSquareFoot(status));
1287     measureUnitValue = MeasureUnit::getSquareFoot();
1288     measureUnit.adoptInstead(MeasureUnit::createSquareInch(status));
1289     measureUnitValue = MeasureUnit::getSquareInch();
1290     measureUnit.adoptInstead(MeasureUnit::createSquareKilometer(status));
1291     measureUnitValue = MeasureUnit::getSquareKilometer();
1292     measureUnit.adoptInstead(MeasureUnit::createSquareMeter(status));
1293     measureUnitValue = MeasureUnit::getSquareMeter();
1294     measureUnit.adoptInstead(MeasureUnit::createSquareMile(status));
1295     measureUnitValue = MeasureUnit::getSquareMile();
1296     measureUnit.adoptInstead(MeasureUnit::createSquareYard(status));
1297     measureUnitValue = MeasureUnit::getSquareYard();
1298     measureUnit.adoptInstead(MeasureUnit::createKarat(status));
1299     measureUnitValue = MeasureUnit::getKarat();
1300     measureUnit.adoptInstead(MeasureUnit::createMilligramPerDeciliter(status));
1301     measureUnitValue = MeasureUnit::getMilligramPerDeciliter();
1302     measureUnit.adoptInstead(MeasureUnit::createMillimolePerLiter(status));
1303     measureUnitValue = MeasureUnit::getMillimolePerLiter();
1304     measureUnit.adoptInstead(MeasureUnit::createMole(status));
1305     measureUnitValue = MeasureUnit::getMole();
1306     measureUnit.adoptInstead(MeasureUnit::createPartPerMillion(status));
1307     measureUnitValue = MeasureUnit::getPartPerMillion();
1308     measureUnit.adoptInstead(MeasureUnit::createPercent(status));
1309     measureUnitValue = MeasureUnit::getPercent();
1310     measureUnit.adoptInstead(MeasureUnit::createPermille(status));
1311     measureUnitValue = MeasureUnit::getPermille();
1312     measureUnit.adoptInstead(MeasureUnit::createPermyriad(status));
1313     measureUnitValue = MeasureUnit::getPermyriad();
1314     measureUnit.adoptInstead(MeasureUnit::createLiterPer100Kilometers(status));
1315     measureUnitValue = MeasureUnit::getLiterPer100Kilometers();
1316     measureUnit.adoptInstead(MeasureUnit::createLiterPerKilometer(status));
1317     measureUnitValue = MeasureUnit::getLiterPerKilometer();
1318     measureUnit.adoptInstead(MeasureUnit::createMilePerGallon(status));
1319     measureUnitValue = MeasureUnit::getMilePerGallon();
1320     measureUnit.adoptInstead(MeasureUnit::createMilePerGallonImperial(status));
1321     measureUnitValue = MeasureUnit::getMilePerGallonImperial();
1322     measureUnit.adoptInstead(MeasureUnit::createBit(status));
1323     measureUnitValue = MeasureUnit::getBit();
1324     measureUnit.adoptInstead(MeasureUnit::createByte(status));
1325     measureUnitValue = MeasureUnit::getByte();
1326     measureUnit.adoptInstead(MeasureUnit::createGigabit(status));
1327     measureUnitValue = MeasureUnit::getGigabit();
1328     measureUnit.adoptInstead(MeasureUnit::createGigabyte(status));
1329     measureUnitValue = MeasureUnit::getGigabyte();
1330     measureUnit.adoptInstead(MeasureUnit::createKilobit(status));
1331     measureUnitValue = MeasureUnit::getKilobit();
1332     measureUnit.adoptInstead(MeasureUnit::createKilobyte(status));
1333     measureUnitValue = MeasureUnit::getKilobyte();
1334     measureUnit.adoptInstead(MeasureUnit::createMegabit(status));
1335     measureUnitValue = MeasureUnit::getMegabit();
1336     measureUnit.adoptInstead(MeasureUnit::createMegabyte(status));
1337     measureUnitValue = MeasureUnit::getMegabyte();
1338     measureUnit.adoptInstead(MeasureUnit::createPetabyte(status));
1339     measureUnitValue = MeasureUnit::getPetabyte();
1340     measureUnit.adoptInstead(MeasureUnit::createTerabit(status));
1341     measureUnitValue = MeasureUnit::getTerabit();
1342     measureUnit.adoptInstead(MeasureUnit::createTerabyte(status));
1343     measureUnitValue = MeasureUnit::getTerabyte();
1344     measureUnit.adoptInstead(MeasureUnit::createCentury(status));
1345     measureUnitValue = MeasureUnit::getCentury();
1346     measureUnit.adoptInstead(MeasureUnit::createDay(status));
1347     measureUnitValue = MeasureUnit::getDay();
1348     measureUnit.adoptInstead(MeasureUnit::createDayPerson(status));
1349     measureUnitValue = MeasureUnit::getDayPerson();
1350     measureUnit.adoptInstead(MeasureUnit::createHour(status));
1351     measureUnitValue = MeasureUnit::getHour();
1352     measureUnit.adoptInstead(MeasureUnit::createMicrosecond(status));
1353     measureUnitValue = MeasureUnit::getMicrosecond();
1354     measureUnit.adoptInstead(MeasureUnit::createMillisecond(status));
1355     measureUnitValue = MeasureUnit::getMillisecond();
1356     measureUnit.adoptInstead(MeasureUnit::createMinute(status));
1357     measureUnitValue = MeasureUnit::getMinute();
1358     measureUnit.adoptInstead(MeasureUnit::createMonth(status));
1359     measureUnitValue = MeasureUnit::getMonth();
1360     measureUnit.adoptInstead(MeasureUnit::createMonthPerson(status));
1361     measureUnitValue = MeasureUnit::getMonthPerson();
1362     measureUnit.adoptInstead(MeasureUnit::createNanosecond(status));
1363     measureUnitValue = MeasureUnit::getNanosecond();
1364     measureUnit.adoptInstead(MeasureUnit::createSecond(status));
1365     measureUnitValue = MeasureUnit::getSecond();
1366     measureUnit.adoptInstead(MeasureUnit::createWeek(status));
1367     measureUnitValue = MeasureUnit::getWeek();
1368     measureUnit.adoptInstead(MeasureUnit::createWeekPerson(status));
1369     measureUnitValue = MeasureUnit::getWeekPerson();
1370     measureUnit.adoptInstead(MeasureUnit::createYear(status));
1371     measureUnitValue = MeasureUnit::getYear();
1372     measureUnit.adoptInstead(MeasureUnit::createYearPerson(status));
1373     measureUnitValue = MeasureUnit::getYearPerson();
1374     measureUnit.adoptInstead(MeasureUnit::createAmpere(status));
1375     measureUnitValue = MeasureUnit::getAmpere();
1376     measureUnit.adoptInstead(MeasureUnit::createMilliampere(status));
1377     measureUnitValue = MeasureUnit::getMilliampere();
1378     measureUnit.adoptInstead(MeasureUnit::createOhm(status));
1379     measureUnitValue = MeasureUnit::getOhm();
1380     measureUnit.adoptInstead(MeasureUnit::createVolt(status));
1381     measureUnitValue = MeasureUnit::getVolt();
1382     measureUnit.adoptInstead(MeasureUnit::createBritishThermalUnit(status));
1383     measureUnitValue = MeasureUnit::getBritishThermalUnit();
1384     measureUnit.adoptInstead(MeasureUnit::createCalorie(status));
1385     measureUnitValue = MeasureUnit::getCalorie();
1386     measureUnit.adoptInstead(MeasureUnit::createElectronvolt(status));
1387     measureUnitValue = MeasureUnit::getElectronvolt();
1388     measureUnit.adoptInstead(MeasureUnit::createFoodcalorie(status));
1389     measureUnitValue = MeasureUnit::getFoodcalorie();
1390     measureUnit.adoptInstead(MeasureUnit::createJoule(status));
1391     measureUnitValue = MeasureUnit::getJoule();
1392     measureUnit.adoptInstead(MeasureUnit::createKilocalorie(status));
1393     measureUnitValue = MeasureUnit::getKilocalorie();
1394     measureUnit.adoptInstead(MeasureUnit::createKilojoule(status));
1395     measureUnitValue = MeasureUnit::getKilojoule();
1396     measureUnit.adoptInstead(MeasureUnit::createKilowattHour(status));
1397     measureUnitValue = MeasureUnit::getKilowattHour();
1398     measureUnit.adoptInstead(MeasureUnit::createNewton(status));
1399     measureUnitValue = MeasureUnit::getNewton();
1400     measureUnit.adoptInstead(MeasureUnit::createPoundForce(status));
1401     measureUnitValue = MeasureUnit::getPoundForce();
1402     measureUnit.adoptInstead(MeasureUnit::createGigahertz(status));
1403     measureUnitValue = MeasureUnit::getGigahertz();
1404     measureUnit.adoptInstead(MeasureUnit::createHertz(status));
1405     measureUnitValue = MeasureUnit::getHertz();
1406     measureUnit.adoptInstead(MeasureUnit::createKilohertz(status));
1407     measureUnitValue = MeasureUnit::getKilohertz();
1408     measureUnit.adoptInstead(MeasureUnit::createMegahertz(status));
1409     measureUnitValue = MeasureUnit::getMegahertz();
1410     measureUnit.adoptInstead(MeasureUnit::createAstronomicalUnit(status));
1411     measureUnitValue = MeasureUnit::getAstronomicalUnit();
1412     measureUnit.adoptInstead(MeasureUnit::createCentimeter(status));
1413     measureUnitValue = MeasureUnit::getCentimeter();
1414     measureUnit.adoptInstead(MeasureUnit::createDecimeter(status));
1415     measureUnitValue = MeasureUnit::getDecimeter();
1416     measureUnit.adoptInstead(MeasureUnit::createFathom(status));
1417     measureUnitValue = MeasureUnit::getFathom();
1418     measureUnit.adoptInstead(MeasureUnit::createFoot(status));
1419     measureUnitValue = MeasureUnit::getFoot();
1420     measureUnit.adoptInstead(MeasureUnit::createFurlong(status));
1421     measureUnitValue = MeasureUnit::getFurlong();
1422     measureUnit.adoptInstead(MeasureUnit::createInch(status));
1423     measureUnitValue = MeasureUnit::getInch();
1424     measureUnit.adoptInstead(MeasureUnit::createKilometer(status));
1425     measureUnitValue = MeasureUnit::getKilometer();
1426     measureUnit.adoptInstead(MeasureUnit::createLightYear(status));
1427     measureUnitValue = MeasureUnit::getLightYear();
1428     measureUnit.adoptInstead(MeasureUnit::createMeter(status));
1429     measureUnitValue = MeasureUnit::getMeter();
1430     measureUnit.adoptInstead(MeasureUnit::createMicrometer(status));
1431     measureUnitValue = MeasureUnit::getMicrometer();
1432     measureUnit.adoptInstead(MeasureUnit::createMile(status));
1433     measureUnitValue = MeasureUnit::getMile();
1434     measureUnit.adoptInstead(MeasureUnit::createMileScandinavian(status));
1435     measureUnitValue = MeasureUnit::getMileScandinavian();
1436     measureUnit.adoptInstead(MeasureUnit::createMillimeter(status));
1437     measureUnitValue = MeasureUnit::getMillimeter();
1438     measureUnit.adoptInstead(MeasureUnit::createNanometer(status));
1439     measureUnitValue = MeasureUnit::getNanometer();
1440     measureUnit.adoptInstead(MeasureUnit::createNauticalMile(status));
1441     measureUnitValue = MeasureUnit::getNauticalMile();
1442     measureUnit.adoptInstead(MeasureUnit::createParsec(status));
1443     measureUnitValue = MeasureUnit::getParsec();
1444     measureUnit.adoptInstead(MeasureUnit::createPicometer(status));
1445     measureUnitValue = MeasureUnit::getPicometer();
1446     measureUnit.adoptInstead(MeasureUnit::createPoint(status));
1447     measureUnitValue = MeasureUnit::getPoint();
1448     measureUnit.adoptInstead(MeasureUnit::createSolarRadius(status));
1449     measureUnitValue = MeasureUnit::getSolarRadius();
1450     measureUnit.adoptInstead(MeasureUnit::createYard(status));
1451     measureUnitValue = MeasureUnit::getYard();
1452     measureUnit.adoptInstead(MeasureUnit::createLux(status));
1453     measureUnitValue = MeasureUnit::getLux();
1454     measureUnit.adoptInstead(MeasureUnit::createSolarLuminosity(status));
1455     measureUnitValue = MeasureUnit::getSolarLuminosity();
1456     measureUnit.adoptInstead(MeasureUnit::createCarat(status));
1457     measureUnitValue = MeasureUnit::getCarat();
1458     measureUnit.adoptInstead(MeasureUnit::createDalton(status));
1459     measureUnitValue = MeasureUnit::getDalton();
1460     measureUnit.adoptInstead(MeasureUnit::createEarthMass(status));
1461     measureUnitValue = MeasureUnit::getEarthMass();
1462     measureUnit.adoptInstead(MeasureUnit::createGram(status));
1463     measureUnitValue = MeasureUnit::getGram();
1464     measureUnit.adoptInstead(MeasureUnit::createKilogram(status));
1465     measureUnitValue = MeasureUnit::getKilogram();
1466     measureUnit.adoptInstead(MeasureUnit::createMetricTon(status));
1467     measureUnitValue = MeasureUnit::getMetricTon();
1468     measureUnit.adoptInstead(MeasureUnit::createMicrogram(status));
1469     measureUnitValue = MeasureUnit::getMicrogram();
1470     measureUnit.adoptInstead(MeasureUnit::createMilligram(status));
1471     measureUnitValue = MeasureUnit::getMilligram();
1472     measureUnit.adoptInstead(MeasureUnit::createOunce(status));
1473     measureUnitValue = MeasureUnit::getOunce();
1474     measureUnit.adoptInstead(MeasureUnit::createOunceTroy(status));
1475     measureUnitValue = MeasureUnit::getOunceTroy();
1476     measureUnit.adoptInstead(MeasureUnit::createPound(status));
1477     measureUnitValue = MeasureUnit::getPound();
1478     measureUnit.adoptInstead(MeasureUnit::createSolarMass(status));
1479     measureUnitValue = MeasureUnit::getSolarMass();
1480     measureUnit.adoptInstead(MeasureUnit::createStone(status));
1481     measureUnitValue = MeasureUnit::getStone();
1482     measureUnit.adoptInstead(MeasureUnit::createTon(status));
1483     measureUnitValue = MeasureUnit::getTon();
1484     measureUnit.adoptInstead(MeasureUnit::createGigawatt(status));
1485     measureUnitValue = MeasureUnit::getGigawatt();
1486     measureUnit.adoptInstead(MeasureUnit::createHorsepower(status));
1487     measureUnitValue = MeasureUnit::getHorsepower();
1488     measureUnit.adoptInstead(MeasureUnit::createKilowatt(status));
1489     measureUnitValue = MeasureUnit::getKilowatt();
1490     measureUnit.adoptInstead(MeasureUnit::createMegawatt(status));
1491     measureUnitValue = MeasureUnit::getMegawatt();
1492     measureUnit.adoptInstead(MeasureUnit::createMilliwatt(status));
1493     measureUnitValue = MeasureUnit::getMilliwatt();
1494     measureUnit.adoptInstead(MeasureUnit::createWatt(status));
1495     measureUnitValue = MeasureUnit::getWatt();
1496     measureUnit.adoptInstead(MeasureUnit::createAtmosphere(status));
1497     measureUnitValue = MeasureUnit::getAtmosphere();
1498     measureUnit.adoptInstead(MeasureUnit::createHectopascal(status));
1499     measureUnitValue = MeasureUnit::getHectopascal();
1500     measureUnit.adoptInstead(MeasureUnit::createInchHg(status));
1501     measureUnitValue = MeasureUnit::getInchHg();
1502     measureUnit.adoptInstead(MeasureUnit::createKilopascal(status));
1503     measureUnitValue = MeasureUnit::getKilopascal();
1504     measureUnit.adoptInstead(MeasureUnit::createMegapascal(status));
1505     measureUnitValue = MeasureUnit::getMegapascal();
1506     measureUnit.adoptInstead(MeasureUnit::createMillibar(status));
1507     measureUnitValue = MeasureUnit::getMillibar();
1508     measureUnit.adoptInstead(MeasureUnit::createMillimeterOfMercury(status));
1509     measureUnitValue = MeasureUnit::getMillimeterOfMercury();
1510     measureUnit.adoptInstead(MeasureUnit::createPoundPerSquareInch(status));
1511     measureUnitValue = MeasureUnit::getPoundPerSquareInch();
1512     measureUnit.adoptInstead(MeasureUnit::createKilometerPerHour(status));
1513     measureUnitValue = MeasureUnit::getKilometerPerHour();
1514     measureUnit.adoptInstead(MeasureUnit::createKnot(status));
1515     measureUnitValue = MeasureUnit::getKnot();
1516     measureUnit.adoptInstead(MeasureUnit::createMeterPerSecond(status));
1517     measureUnitValue = MeasureUnit::getMeterPerSecond();
1518     measureUnit.adoptInstead(MeasureUnit::createMilePerHour(status));
1519     measureUnitValue = MeasureUnit::getMilePerHour();
1520     measureUnit.adoptInstead(MeasureUnit::createCelsius(status));
1521     measureUnitValue = MeasureUnit::getCelsius();
1522     measureUnit.adoptInstead(MeasureUnit::createFahrenheit(status));
1523     measureUnitValue = MeasureUnit::getFahrenheit();
1524     measureUnit.adoptInstead(MeasureUnit::createGenericTemperature(status));
1525     measureUnitValue = MeasureUnit::getGenericTemperature();
1526     measureUnit.adoptInstead(MeasureUnit::createKelvin(status));
1527     measureUnitValue = MeasureUnit::getKelvin();
1528     measureUnit.adoptInstead(MeasureUnit::createNewtonMeter(status));
1529     measureUnitValue = MeasureUnit::getNewtonMeter();
1530     measureUnit.adoptInstead(MeasureUnit::createPoundFoot(status));
1531     measureUnitValue = MeasureUnit::getPoundFoot();
1532     measureUnit.adoptInstead(MeasureUnit::createAcreFoot(status));
1533     measureUnitValue = MeasureUnit::getAcreFoot();
1534     measureUnit.adoptInstead(MeasureUnit::createBarrel(status));
1535     measureUnitValue = MeasureUnit::getBarrel();
1536     measureUnit.adoptInstead(MeasureUnit::createBushel(status));
1537     measureUnitValue = MeasureUnit::getBushel();
1538     measureUnit.adoptInstead(MeasureUnit::createCentiliter(status));
1539     measureUnitValue = MeasureUnit::getCentiliter();
1540     measureUnit.adoptInstead(MeasureUnit::createCubicCentimeter(status));
1541     measureUnitValue = MeasureUnit::getCubicCentimeter();
1542     measureUnit.adoptInstead(MeasureUnit::createCubicFoot(status));
1543     measureUnitValue = MeasureUnit::getCubicFoot();
1544     measureUnit.adoptInstead(MeasureUnit::createCubicInch(status));
1545     measureUnitValue = MeasureUnit::getCubicInch();
1546     measureUnit.adoptInstead(MeasureUnit::createCubicKilometer(status));
1547     measureUnitValue = MeasureUnit::getCubicKilometer();
1548     measureUnit.adoptInstead(MeasureUnit::createCubicMeter(status));
1549     measureUnitValue = MeasureUnit::getCubicMeter();
1550     measureUnit.adoptInstead(MeasureUnit::createCubicMile(status));
1551     measureUnitValue = MeasureUnit::getCubicMile();
1552     measureUnit.adoptInstead(MeasureUnit::createCubicYard(status));
1553     measureUnitValue = MeasureUnit::getCubicYard();
1554     measureUnit.adoptInstead(MeasureUnit::createCup(status));
1555     measureUnitValue = MeasureUnit::getCup();
1556     measureUnit.adoptInstead(MeasureUnit::createCupMetric(status));
1557     measureUnitValue = MeasureUnit::getCupMetric();
1558     measureUnit.adoptInstead(MeasureUnit::createDeciliter(status));
1559     measureUnitValue = MeasureUnit::getDeciliter();
1560     measureUnit.adoptInstead(MeasureUnit::createFluidOunce(status));
1561     measureUnitValue = MeasureUnit::getFluidOunce();
1562     measureUnit.adoptInstead(MeasureUnit::createFluidOunceImperial(status));
1563     measureUnitValue = MeasureUnit::getFluidOunceImperial();
1564     measureUnit.adoptInstead(MeasureUnit::createGallon(status));
1565     measureUnitValue = MeasureUnit::getGallon();
1566     measureUnit.adoptInstead(MeasureUnit::createGallonImperial(status));
1567     measureUnitValue = MeasureUnit::getGallonImperial();
1568     measureUnit.adoptInstead(MeasureUnit::createHectoliter(status));
1569     measureUnitValue = MeasureUnit::getHectoliter();
1570     measureUnit.adoptInstead(MeasureUnit::createLiter(status));
1571     measureUnitValue = MeasureUnit::getLiter();
1572     measureUnit.adoptInstead(MeasureUnit::createMegaliter(status));
1573     measureUnitValue = MeasureUnit::getMegaliter();
1574     measureUnit.adoptInstead(MeasureUnit::createMilliliter(status));
1575     measureUnitValue = MeasureUnit::getMilliliter();
1576     measureUnit.adoptInstead(MeasureUnit::createPint(status));
1577     measureUnitValue = MeasureUnit::getPint();
1578     measureUnit.adoptInstead(MeasureUnit::createPintMetric(status));
1579     measureUnitValue = MeasureUnit::getPintMetric();
1580     measureUnit.adoptInstead(MeasureUnit::createQuart(status));
1581     measureUnitValue = MeasureUnit::getQuart();
1582     measureUnit.adoptInstead(MeasureUnit::createTablespoon(status));
1583     measureUnitValue = MeasureUnit::getTablespoon();
1584     measureUnit.adoptInstead(MeasureUnit::createTeaspoon(status));
1585     measureUnitValue = MeasureUnit::getTeaspoon();
1586     assertSuccess("", status);
1587 }
1588 
TestCompatible65()1589 void MeasureFormatTest::TestCompatible65() {
1590     UErrorCode status = U_ZERO_ERROR;
1591     LocalPointer<MeasureUnit> measureUnit;
1592     MeasureUnit measureUnitValue;
1593     measureUnit.adoptInstead(MeasureUnit::createGForce(status));
1594     measureUnitValue = MeasureUnit::getGForce();
1595     measureUnit.adoptInstead(MeasureUnit::createMeterPerSecondSquared(status));
1596     measureUnitValue = MeasureUnit::getMeterPerSecondSquared();
1597     measureUnit.adoptInstead(MeasureUnit::createArcMinute(status));
1598     measureUnitValue = MeasureUnit::getArcMinute();
1599     measureUnit.adoptInstead(MeasureUnit::createArcSecond(status));
1600     measureUnitValue = MeasureUnit::getArcSecond();
1601     measureUnit.adoptInstead(MeasureUnit::createDegree(status));
1602     measureUnitValue = MeasureUnit::getDegree();
1603     measureUnit.adoptInstead(MeasureUnit::createRadian(status));
1604     measureUnitValue = MeasureUnit::getRadian();
1605     measureUnit.adoptInstead(MeasureUnit::createRevolutionAngle(status));
1606     measureUnitValue = MeasureUnit::getRevolutionAngle();
1607     measureUnit.adoptInstead(MeasureUnit::createAcre(status));
1608     measureUnitValue = MeasureUnit::getAcre();
1609     measureUnit.adoptInstead(MeasureUnit::createDunam(status));
1610     measureUnitValue = MeasureUnit::getDunam();
1611     measureUnit.adoptInstead(MeasureUnit::createHectare(status));
1612     measureUnitValue = MeasureUnit::getHectare();
1613     measureUnit.adoptInstead(MeasureUnit::createSquareCentimeter(status));
1614     measureUnitValue = MeasureUnit::getSquareCentimeter();
1615     measureUnit.adoptInstead(MeasureUnit::createSquareFoot(status));
1616     measureUnitValue = MeasureUnit::getSquareFoot();
1617     measureUnit.adoptInstead(MeasureUnit::createSquareInch(status));
1618     measureUnitValue = MeasureUnit::getSquareInch();
1619     measureUnit.adoptInstead(MeasureUnit::createSquareKilometer(status));
1620     measureUnitValue = MeasureUnit::getSquareKilometer();
1621     measureUnit.adoptInstead(MeasureUnit::createSquareMeter(status));
1622     measureUnitValue = MeasureUnit::getSquareMeter();
1623     measureUnit.adoptInstead(MeasureUnit::createSquareMile(status));
1624     measureUnitValue = MeasureUnit::getSquareMile();
1625     measureUnit.adoptInstead(MeasureUnit::createSquareYard(status));
1626     measureUnitValue = MeasureUnit::getSquareYard();
1627     measureUnit.adoptInstead(MeasureUnit::createKarat(status));
1628     measureUnitValue = MeasureUnit::getKarat();
1629     measureUnit.adoptInstead(MeasureUnit::createMilligramPerDeciliter(status));
1630     measureUnitValue = MeasureUnit::getMilligramPerDeciliter();
1631     measureUnit.adoptInstead(MeasureUnit::createMillimolePerLiter(status));
1632     measureUnitValue = MeasureUnit::getMillimolePerLiter();
1633     measureUnit.adoptInstead(MeasureUnit::createMole(status));
1634     measureUnitValue = MeasureUnit::getMole();
1635     measureUnit.adoptInstead(MeasureUnit::createPartPerMillion(status));
1636     measureUnitValue = MeasureUnit::getPartPerMillion();
1637     measureUnit.adoptInstead(MeasureUnit::createPercent(status));
1638     measureUnitValue = MeasureUnit::getPercent();
1639     measureUnit.adoptInstead(MeasureUnit::createPermille(status));
1640     measureUnitValue = MeasureUnit::getPermille();
1641     measureUnit.adoptInstead(MeasureUnit::createPermyriad(status));
1642     measureUnitValue = MeasureUnit::getPermyriad();
1643     measureUnit.adoptInstead(MeasureUnit::createLiterPer100Kilometers(status));
1644     measureUnitValue = MeasureUnit::getLiterPer100Kilometers();
1645     measureUnit.adoptInstead(MeasureUnit::createLiterPerKilometer(status));
1646     measureUnitValue = MeasureUnit::getLiterPerKilometer();
1647     measureUnit.adoptInstead(MeasureUnit::createMilePerGallon(status));
1648     measureUnitValue = MeasureUnit::getMilePerGallon();
1649     measureUnit.adoptInstead(MeasureUnit::createMilePerGallonImperial(status));
1650     measureUnitValue = MeasureUnit::getMilePerGallonImperial();
1651     measureUnit.adoptInstead(MeasureUnit::createBit(status));
1652     measureUnitValue = MeasureUnit::getBit();
1653     measureUnit.adoptInstead(MeasureUnit::createByte(status));
1654     measureUnitValue = MeasureUnit::getByte();
1655     measureUnit.adoptInstead(MeasureUnit::createGigabit(status));
1656     measureUnitValue = MeasureUnit::getGigabit();
1657     measureUnit.adoptInstead(MeasureUnit::createGigabyte(status));
1658     measureUnitValue = MeasureUnit::getGigabyte();
1659     measureUnit.adoptInstead(MeasureUnit::createKilobit(status));
1660     measureUnitValue = MeasureUnit::getKilobit();
1661     measureUnit.adoptInstead(MeasureUnit::createKilobyte(status));
1662     measureUnitValue = MeasureUnit::getKilobyte();
1663     measureUnit.adoptInstead(MeasureUnit::createMegabit(status));
1664     measureUnitValue = MeasureUnit::getMegabit();
1665     measureUnit.adoptInstead(MeasureUnit::createMegabyte(status));
1666     measureUnitValue = MeasureUnit::getMegabyte();
1667     measureUnit.adoptInstead(MeasureUnit::createPetabyte(status));
1668     measureUnitValue = MeasureUnit::getPetabyte();
1669     measureUnit.adoptInstead(MeasureUnit::createTerabit(status));
1670     measureUnitValue = MeasureUnit::getTerabit();
1671     measureUnit.adoptInstead(MeasureUnit::createTerabyte(status));
1672     measureUnitValue = MeasureUnit::getTerabyte();
1673     measureUnit.adoptInstead(MeasureUnit::createCentury(status));
1674     measureUnitValue = MeasureUnit::getCentury();
1675     measureUnit.adoptInstead(MeasureUnit::createDay(status));
1676     measureUnitValue = MeasureUnit::getDay();
1677     measureUnit.adoptInstead(MeasureUnit::createDayPerson(status));
1678     measureUnitValue = MeasureUnit::getDayPerson();
1679     measureUnit.adoptInstead(MeasureUnit::createDecade(status));
1680     measureUnitValue = MeasureUnit::getDecade();
1681     measureUnit.adoptInstead(MeasureUnit::createHour(status));
1682     measureUnitValue = MeasureUnit::getHour();
1683     measureUnit.adoptInstead(MeasureUnit::createMicrosecond(status));
1684     measureUnitValue = MeasureUnit::getMicrosecond();
1685     measureUnit.adoptInstead(MeasureUnit::createMillisecond(status));
1686     measureUnitValue = MeasureUnit::getMillisecond();
1687     measureUnit.adoptInstead(MeasureUnit::createMinute(status));
1688     measureUnitValue = MeasureUnit::getMinute();
1689     measureUnit.adoptInstead(MeasureUnit::createMonth(status));
1690     measureUnitValue = MeasureUnit::getMonth();
1691     measureUnit.adoptInstead(MeasureUnit::createMonthPerson(status));
1692     measureUnitValue = MeasureUnit::getMonthPerson();
1693     measureUnit.adoptInstead(MeasureUnit::createNanosecond(status));
1694     measureUnitValue = MeasureUnit::getNanosecond();
1695     measureUnit.adoptInstead(MeasureUnit::createSecond(status));
1696     measureUnitValue = MeasureUnit::getSecond();
1697     measureUnit.adoptInstead(MeasureUnit::createWeek(status));
1698     measureUnitValue = MeasureUnit::getWeek();
1699     measureUnit.adoptInstead(MeasureUnit::createWeekPerson(status));
1700     measureUnitValue = MeasureUnit::getWeekPerson();
1701     measureUnit.adoptInstead(MeasureUnit::createYear(status));
1702     measureUnitValue = MeasureUnit::getYear();
1703     measureUnit.adoptInstead(MeasureUnit::createYearPerson(status));
1704     measureUnitValue = MeasureUnit::getYearPerson();
1705     measureUnit.adoptInstead(MeasureUnit::createAmpere(status));
1706     measureUnitValue = MeasureUnit::getAmpere();
1707     measureUnit.adoptInstead(MeasureUnit::createMilliampere(status));
1708     measureUnitValue = MeasureUnit::getMilliampere();
1709     measureUnit.adoptInstead(MeasureUnit::createOhm(status));
1710     measureUnitValue = MeasureUnit::getOhm();
1711     measureUnit.adoptInstead(MeasureUnit::createVolt(status));
1712     measureUnitValue = MeasureUnit::getVolt();
1713     measureUnit.adoptInstead(MeasureUnit::createBritishThermalUnit(status));
1714     measureUnitValue = MeasureUnit::getBritishThermalUnit();
1715     measureUnit.adoptInstead(MeasureUnit::createCalorie(status));
1716     measureUnitValue = MeasureUnit::getCalorie();
1717     measureUnit.adoptInstead(MeasureUnit::createElectronvolt(status));
1718     measureUnitValue = MeasureUnit::getElectronvolt();
1719     measureUnit.adoptInstead(MeasureUnit::createFoodcalorie(status));
1720     measureUnitValue = MeasureUnit::getFoodcalorie();
1721     measureUnit.adoptInstead(MeasureUnit::createJoule(status));
1722     measureUnitValue = MeasureUnit::getJoule();
1723     measureUnit.adoptInstead(MeasureUnit::createKilocalorie(status));
1724     measureUnitValue = MeasureUnit::getKilocalorie();
1725     measureUnit.adoptInstead(MeasureUnit::createKilojoule(status));
1726     measureUnitValue = MeasureUnit::getKilojoule();
1727     measureUnit.adoptInstead(MeasureUnit::createKilowattHour(status));
1728     measureUnitValue = MeasureUnit::getKilowattHour();
1729     measureUnit.adoptInstead(MeasureUnit::createThermUs(status));
1730     measureUnitValue = MeasureUnit::getThermUs();
1731     measureUnit.adoptInstead(MeasureUnit::createNewton(status));
1732     measureUnitValue = MeasureUnit::getNewton();
1733     measureUnit.adoptInstead(MeasureUnit::createPoundForce(status));
1734     measureUnitValue = MeasureUnit::getPoundForce();
1735     measureUnit.adoptInstead(MeasureUnit::createGigahertz(status));
1736     measureUnitValue = MeasureUnit::getGigahertz();
1737     measureUnit.adoptInstead(MeasureUnit::createHertz(status));
1738     measureUnitValue = MeasureUnit::getHertz();
1739     measureUnit.adoptInstead(MeasureUnit::createKilohertz(status));
1740     measureUnitValue = MeasureUnit::getKilohertz();
1741     measureUnit.adoptInstead(MeasureUnit::createMegahertz(status));
1742     measureUnitValue = MeasureUnit::getMegahertz();
1743     measureUnit.adoptInstead(MeasureUnit::createDotPerCentimeter(status));
1744     measureUnitValue = MeasureUnit::getDotPerCentimeter();
1745     measureUnit.adoptInstead(MeasureUnit::createDotPerInch(status));
1746     measureUnitValue = MeasureUnit::getDotPerInch();
1747     measureUnit.adoptInstead(MeasureUnit::createEm(status));
1748     measureUnitValue = MeasureUnit::getEm();
1749     measureUnit.adoptInstead(MeasureUnit::createMegapixel(status));
1750     measureUnitValue = MeasureUnit::getMegapixel();
1751     measureUnit.adoptInstead(MeasureUnit::createPixel(status));
1752     measureUnitValue = MeasureUnit::getPixel();
1753     measureUnit.adoptInstead(MeasureUnit::createPixelPerCentimeter(status));
1754     measureUnitValue = MeasureUnit::getPixelPerCentimeter();
1755     measureUnit.adoptInstead(MeasureUnit::createPixelPerInch(status));
1756     measureUnitValue = MeasureUnit::getPixelPerInch();
1757     measureUnit.adoptInstead(MeasureUnit::createAstronomicalUnit(status));
1758     measureUnitValue = MeasureUnit::getAstronomicalUnit();
1759     measureUnit.adoptInstead(MeasureUnit::createCentimeter(status));
1760     measureUnitValue = MeasureUnit::getCentimeter();
1761     measureUnit.adoptInstead(MeasureUnit::createDecimeter(status));
1762     measureUnitValue = MeasureUnit::getDecimeter();
1763     measureUnit.adoptInstead(MeasureUnit::createFathom(status));
1764     measureUnitValue = MeasureUnit::getFathom();
1765     measureUnit.adoptInstead(MeasureUnit::createFoot(status));
1766     measureUnitValue = MeasureUnit::getFoot();
1767     measureUnit.adoptInstead(MeasureUnit::createFurlong(status));
1768     measureUnitValue = MeasureUnit::getFurlong();
1769     measureUnit.adoptInstead(MeasureUnit::createInch(status));
1770     measureUnitValue = MeasureUnit::getInch();
1771     measureUnit.adoptInstead(MeasureUnit::createKilometer(status));
1772     measureUnitValue = MeasureUnit::getKilometer();
1773     measureUnit.adoptInstead(MeasureUnit::createLightYear(status));
1774     measureUnitValue = MeasureUnit::getLightYear();
1775     measureUnit.adoptInstead(MeasureUnit::createMeter(status));
1776     measureUnitValue = MeasureUnit::getMeter();
1777     measureUnit.adoptInstead(MeasureUnit::createMicrometer(status));
1778     measureUnitValue = MeasureUnit::getMicrometer();
1779     measureUnit.adoptInstead(MeasureUnit::createMile(status));
1780     measureUnitValue = MeasureUnit::getMile();
1781     measureUnit.adoptInstead(MeasureUnit::createMileScandinavian(status));
1782     measureUnitValue = MeasureUnit::getMileScandinavian();
1783     measureUnit.adoptInstead(MeasureUnit::createMillimeter(status));
1784     measureUnitValue = MeasureUnit::getMillimeter();
1785     measureUnit.adoptInstead(MeasureUnit::createNanometer(status));
1786     measureUnitValue = MeasureUnit::getNanometer();
1787     measureUnit.adoptInstead(MeasureUnit::createNauticalMile(status));
1788     measureUnitValue = MeasureUnit::getNauticalMile();
1789     measureUnit.adoptInstead(MeasureUnit::createParsec(status));
1790     measureUnitValue = MeasureUnit::getParsec();
1791     measureUnit.adoptInstead(MeasureUnit::createPicometer(status));
1792     measureUnitValue = MeasureUnit::getPicometer();
1793     measureUnit.adoptInstead(MeasureUnit::createPoint(status));
1794     measureUnitValue = MeasureUnit::getPoint();
1795     measureUnit.adoptInstead(MeasureUnit::createSolarRadius(status));
1796     measureUnitValue = MeasureUnit::getSolarRadius();
1797     measureUnit.adoptInstead(MeasureUnit::createYard(status));
1798     measureUnitValue = MeasureUnit::getYard();
1799     measureUnit.adoptInstead(MeasureUnit::createLux(status));
1800     measureUnitValue = MeasureUnit::getLux();
1801     measureUnit.adoptInstead(MeasureUnit::createSolarLuminosity(status));
1802     measureUnitValue = MeasureUnit::getSolarLuminosity();
1803     measureUnit.adoptInstead(MeasureUnit::createCarat(status));
1804     measureUnitValue = MeasureUnit::getCarat();
1805     measureUnit.adoptInstead(MeasureUnit::createDalton(status));
1806     measureUnitValue = MeasureUnit::getDalton();
1807     measureUnit.adoptInstead(MeasureUnit::createEarthMass(status));
1808     measureUnitValue = MeasureUnit::getEarthMass();
1809     measureUnit.adoptInstead(MeasureUnit::createGram(status));
1810     measureUnitValue = MeasureUnit::getGram();
1811     measureUnit.adoptInstead(MeasureUnit::createKilogram(status));
1812     measureUnitValue = MeasureUnit::getKilogram();
1813     measureUnit.adoptInstead(MeasureUnit::createMetricTon(status));
1814     measureUnitValue = MeasureUnit::getMetricTon();
1815     measureUnit.adoptInstead(MeasureUnit::createMicrogram(status));
1816     measureUnitValue = MeasureUnit::getMicrogram();
1817     measureUnit.adoptInstead(MeasureUnit::createMilligram(status));
1818     measureUnitValue = MeasureUnit::getMilligram();
1819     measureUnit.adoptInstead(MeasureUnit::createOunce(status));
1820     measureUnitValue = MeasureUnit::getOunce();
1821     measureUnit.adoptInstead(MeasureUnit::createOunceTroy(status));
1822     measureUnitValue = MeasureUnit::getOunceTroy();
1823     measureUnit.adoptInstead(MeasureUnit::createPound(status));
1824     measureUnitValue = MeasureUnit::getPound();
1825     measureUnit.adoptInstead(MeasureUnit::createSolarMass(status));
1826     measureUnitValue = MeasureUnit::getSolarMass();
1827     measureUnit.adoptInstead(MeasureUnit::createStone(status));
1828     measureUnitValue = MeasureUnit::getStone();
1829     measureUnit.adoptInstead(MeasureUnit::createTon(status));
1830     measureUnitValue = MeasureUnit::getTon();
1831     measureUnit.adoptInstead(MeasureUnit::createGigawatt(status));
1832     measureUnitValue = MeasureUnit::getGigawatt();
1833     measureUnit.adoptInstead(MeasureUnit::createHorsepower(status));
1834     measureUnitValue = MeasureUnit::getHorsepower();
1835     measureUnit.adoptInstead(MeasureUnit::createKilowatt(status));
1836     measureUnitValue = MeasureUnit::getKilowatt();
1837     measureUnit.adoptInstead(MeasureUnit::createMegawatt(status));
1838     measureUnitValue = MeasureUnit::getMegawatt();
1839     measureUnit.adoptInstead(MeasureUnit::createMilliwatt(status));
1840     measureUnitValue = MeasureUnit::getMilliwatt();
1841     measureUnit.adoptInstead(MeasureUnit::createWatt(status));
1842     measureUnitValue = MeasureUnit::getWatt();
1843     measureUnit.adoptInstead(MeasureUnit::createAtmosphere(status));
1844     measureUnitValue = MeasureUnit::getAtmosphere();
1845     measureUnit.adoptInstead(MeasureUnit::createBar(status));
1846     measureUnitValue = MeasureUnit::getBar();
1847     measureUnit.adoptInstead(MeasureUnit::createHectopascal(status));
1848     measureUnitValue = MeasureUnit::getHectopascal();
1849     measureUnit.adoptInstead(MeasureUnit::createInchHg(status));
1850     measureUnitValue = MeasureUnit::getInchHg();
1851     measureUnit.adoptInstead(MeasureUnit::createKilopascal(status));
1852     measureUnitValue = MeasureUnit::getKilopascal();
1853     measureUnit.adoptInstead(MeasureUnit::createMegapascal(status));
1854     measureUnitValue = MeasureUnit::getMegapascal();
1855     measureUnit.adoptInstead(MeasureUnit::createMillibar(status));
1856     measureUnitValue = MeasureUnit::getMillibar();
1857     measureUnit.adoptInstead(MeasureUnit::createMillimeterOfMercury(status));
1858     measureUnitValue = MeasureUnit::getMillimeterOfMercury();
1859     measureUnit.adoptInstead(MeasureUnit::createPascal(status));
1860     measureUnitValue = MeasureUnit::getPascal();
1861     measureUnit.adoptInstead(MeasureUnit::createPoundPerSquareInch(status));
1862     measureUnitValue = MeasureUnit::getPoundPerSquareInch();
1863     measureUnit.adoptInstead(MeasureUnit::createKilometerPerHour(status));
1864     measureUnitValue = MeasureUnit::getKilometerPerHour();
1865     measureUnit.adoptInstead(MeasureUnit::createKnot(status));
1866     measureUnitValue = MeasureUnit::getKnot();
1867     measureUnit.adoptInstead(MeasureUnit::createMeterPerSecond(status));
1868     measureUnitValue = MeasureUnit::getMeterPerSecond();
1869     measureUnit.adoptInstead(MeasureUnit::createMilePerHour(status));
1870     measureUnitValue = MeasureUnit::getMilePerHour();
1871     measureUnit.adoptInstead(MeasureUnit::createCelsius(status));
1872     measureUnitValue = MeasureUnit::getCelsius();
1873     measureUnit.adoptInstead(MeasureUnit::createFahrenheit(status));
1874     measureUnitValue = MeasureUnit::getFahrenheit();
1875     measureUnit.adoptInstead(MeasureUnit::createGenericTemperature(status));
1876     measureUnitValue = MeasureUnit::getGenericTemperature();
1877     measureUnit.adoptInstead(MeasureUnit::createKelvin(status));
1878     measureUnitValue = MeasureUnit::getKelvin();
1879     measureUnit.adoptInstead(MeasureUnit::createNewtonMeter(status));
1880     measureUnitValue = MeasureUnit::getNewtonMeter();
1881     measureUnit.adoptInstead(MeasureUnit::createPoundFoot(status));
1882     measureUnitValue = MeasureUnit::getPoundFoot();
1883     measureUnit.adoptInstead(MeasureUnit::createAcreFoot(status));
1884     measureUnitValue = MeasureUnit::getAcreFoot();
1885     measureUnit.adoptInstead(MeasureUnit::createBarrel(status));
1886     measureUnitValue = MeasureUnit::getBarrel();
1887     measureUnit.adoptInstead(MeasureUnit::createBushel(status));
1888     measureUnitValue = MeasureUnit::getBushel();
1889     measureUnit.adoptInstead(MeasureUnit::createCentiliter(status));
1890     measureUnitValue = MeasureUnit::getCentiliter();
1891     measureUnit.adoptInstead(MeasureUnit::createCubicCentimeter(status));
1892     measureUnitValue = MeasureUnit::getCubicCentimeter();
1893     measureUnit.adoptInstead(MeasureUnit::createCubicFoot(status));
1894     measureUnitValue = MeasureUnit::getCubicFoot();
1895     measureUnit.adoptInstead(MeasureUnit::createCubicInch(status));
1896     measureUnitValue = MeasureUnit::getCubicInch();
1897     measureUnit.adoptInstead(MeasureUnit::createCubicKilometer(status));
1898     measureUnitValue = MeasureUnit::getCubicKilometer();
1899     measureUnit.adoptInstead(MeasureUnit::createCubicMeter(status));
1900     measureUnitValue = MeasureUnit::getCubicMeter();
1901     measureUnit.adoptInstead(MeasureUnit::createCubicMile(status));
1902     measureUnitValue = MeasureUnit::getCubicMile();
1903     measureUnit.adoptInstead(MeasureUnit::createCubicYard(status));
1904     measureUnitValue = MeasureUnit::getCubicYard();
1905     measureUnit.adoptInstead(MeasureUnit::createCup(status));
1906     measureUnitValue = MeasureUnit::getCup();
1907     measureUnit.adoptInstead(MeasureUnit::createCupMetric(status));
1908     measureUnitValue = MeasureUnit::getCupMetric();
1909     measureUnit.adoptInstead(MeasureUnit::createDeciliter(status));
1910     measureUnitValue = MeasureUnit::getDeciliter();
1911     measureUnit.adoptInstead(MeasureUnit::createFluidOunce(status));
1912     measureUnitValue = MeasureUnit::getFluidOunce();
1913     measureUnit.adoptInstead(MeasureUnit::createFluidOunceImperial(status));
1914     measureUnitValue = MeasureUnit::getFluidOunceImperial();
1915     measureUnit.adoptInstead(MeasureUnit::createGallon(status));
1916     measureUnitValue = MeasureUnit::getGallon();
1917     measureUnit.adoptInstead(MeasureUnit::createGallonImperial(status));
1918     measureUnitValue = MeasureUnit::getGallonImperial();
1919     measureUnit.adoptInstead(MeasureUnit::createHectoliter(status));
1920     measureUnitValue = MeasureUnit::getHectoliter();
1921     measureUnit.adoptInstead(MeasureUnit::createLiter(status));
1922     measureUnitValue = MeasureUnit::getLiter();
1923     measureUnit.adoptInstead(MeasureUnit::createMegaliter(status));
1924     measureUnitValue = MeasureUnit::getMegaliter();
1925     measureUnit.adoptInstead(MeasureUnit::createMilliliter(status));
1926     measureUnitValue = MeasureUnit::getMilliliter();
1927     measureUnit.adoptInstead(MeasureUnit::createPint(status));
1928     measureUnitValue = MeasureUnit::getPint();
1929     measureUnit.adoptInstead(MeasureUnit::createPintMetric(status));
1930     measureUnitValue = MeasureUnit::getPintMetric();
1931     measureUnit.adoptInstead(MeasureUnit::createQuart(status));
1932     measureUnitValue = MeasureUnit::getQuart();
1933     measureUnit.adoptInstead(MeasureUnit::createTablespoon(status));
1934     measureUnitValue = MeasureUnit::getTablespoon();
1935     measureUnit.adoptInstead(MeasureUnit::createTeaspoon(status));
1936     measureUnitValue = MeasureUnit::getTeaspoon();
1937     assertSuccess("", status);
1938 }
1939 
1940 // Note that TestCompatible66(), TestCompatible67()
1941 // would be the same as TestCompatible65(), no need to add them.
1942 
TestCompatible68()1943 void MeasureFormatTest::TestCompatible68() {
1944     UErrorCode status = U_ZERO_ERROR;
1945     LocalPointer<MeasureUnit> measureUnit;
1946     MeasureUnit measureUnitValue;
1947     measureUnit.adoptInstead(MeasureUnit::createGForce(status));
1948     measureUnitValue = MeasureUnit::getGForce();
1949     measureUnit.adoptInstead(MeasureUnit::createMeterPerSecondSquared(status));
1950     measureUnitValue = MeasureUnit::getMeterPerSecondSquared();
1951     measureUnit.adoptInstead(MeasureUnit::createArcMinute(status));
1952     measureUnitValue = MeasureUnit::getArcMinute();
1953     measureUnit.adoptInstead(MeasureUnit::createArcSecond(status));
1954     measureUnitValue = MeasureUnit::getArcSecond();
1955     measureUnit.adoptInstead(MeasureUnit::createDegree(status));
1956     measureUnitValue = MeasureUnit::getDegree();
1957     measureUnit.adoptInstead(MeasureUnit::createRadian(status));
1958     measureUnitValue = MeasureUnit::getRadian();
1959     measureUnit.adoptInstead(MeasureUnit::createRevolutionAngle(status));
1960     measureUnitValue = MeasureUnit::getRevolutionAngle();
1961     measureUnit.adoptInstead(MeasureUnit::createAcre(status));
1962     measureUnitValue = MeasureUnit::getAcre();
1963     measureUnit.adoptInstead(MeasureUnit::createDunam(status));
1964     measureUnitValue = MeasureUnit::getDunam();
1965     measureUnit.adoptInstead(MeasureUnit::createHectare(status));
1966     measureUnitValue = MeasureUnit::getHectare();
1967     measureUnit.adoptInstead(MeasureUnit::createSquareCentimeter(status));
1968     measureUnitValue = MeasureUnit::getSquareCentimeter();
1969     measureUnit.adoptInstead(MeasureUnit::createSquareFoot(status));
1970     measureUnitValue = MeasureUnit::getSquareFoot();
1971     measureUnit.adoptInstead(MeasureUnit::createSquareInch(status));
1972     measureUnitValue = MeasureUnit::getSquareInch();
1973     measureUnit.adoptInstead(MeasureUnit::createSquareKilometer(status));
1974     measureUnitValue = MeasureUnit::getSquareKilometer();
1975     measureUnit.adoptInstead(MeasureUnit::createSquareMeter(status));
1976     measureUnitValue = MeasureUnit::getSquareMeter();
1977     measureUnit.adoptInstead(MeasureUnit::createSquareMile(status));
1978     measureUnitValue = MeasureUnit::getSquareMile();
1979     measureUnit.adoptInstead(MeasureUnit::createSquareYard(status));
1980     measureUnitValue = MeasureUnit::getSquareYard();
1981     measureUnit.adoptInstead(MeasureUnit::createKarat(status));
1982     measureUnitValue = MeasureUnit::getKarat();
1983     measureUnit.adoptInstead(MeasureUnit::createMilligramPerDeciliter(status));
1984     measureUnitValue = MeasureUnit::getMilligramPerDeciliter();
1985     measureUnit.adoptInstead(MeasureUnit::createMillimolePerLiter(status));
1986     measureUnitValue = MeasureUnit::getMillimolePerLiter();
1987     measureUnit.adoptInstead(MeasureUnit::createMole(status));
1988     measureUnitValue = MeasureUnit::getMole();
1989     measureUnit.adoptInstead(MeasureUnit::createPercent(status));
1990     measureUnitValue = MeasureUnit::getPercent();
1991     measureUnit.adoptInstead(MeasureUnit::createPermille(status));
1992     measureUnitValue = MeasureUnit::getPermille();
1993     measureUnit.adoptInstead(MeasureUnit::createPartPerMillion(status));
1994     measureUnitValue = MeasureUnit::getPartPerMillion();
1995     measureUnit.adoptInstead(MeasureUnit::createPermyriad(status));
1996     measureUnitValue = MeasureUnit::getPermyriad();
1997     measureUnit.adoptInstead(MeasureUnit::createLiterPer100Kilometers(status));
1998     measureUnitValue = MeasureUnit::getLiterPer100Kilometers();
1999     measureUnit.adoptInstead(MeasureUnit::createLiterPerKilometer(status));
2000     measureUnitValue = MeasureUnit::getLiterPerKilometer();
2001     measureUnit.adoptInstead(MeasureUnit::createMilePerGallon(status));
2002     measureUnitValue = MeasureUnit::getMilePerGallon();
2003     measureUnit.adoptInstead(MeasureUnit::createMilePerGallonImperial(status));
2004     measureUnitValue = MeasureUnit::getMilePerGallonImperial();
2005     measureUnit.adoptInstead(MeasureUnit::createBit(status));
2006     measureUnitValue = MeasureUnit::getBit();
2007     measureUnit.adoptInstead(MeasureUnit::createByte(status));
2008     measureUnitValue = MeasureUnit::getByte();
2009     measureUnit.adoptInstead(MeasureUnit::createGigabit(status));
2010     measureUnitValue = MeasureUnit::getGigabit();
2011     measureUnit.adoptInstead(MeasureUnit::createGigabyte(status));
2012     measureUnitValue = MeasureUnit::getGigabyte();
2013     measureUnit.adoptInstead(MeasureUnit::createKilobit(status));
2014     measureUnitValue = MeasureUnit::getKilobit();
2015     measureUnit.adoptInstead(MeasureUnit::createKilobyte(status));
2016     measureUnitValue = MeasureUnit::getKilobyte();
2017     measureUnit.adoptInstead(MeasureUnit::createMegabit(status));
2018     measureUnitValue = MeasureUnit::getMegabit();
2019     measureUnit.adoptInstead(MeasureUnit::createMegabyte(status));
2020     measureUnitValue = MeasureUnit::getMegabyte();
2021     measureUnit.adoptInstead(MeasureUnit::createPetabyte(status));
2022     measureUnitValue = MeasureUnit::getPetabyte();
2023     measureUnit.adoptInstead(MeasureUnit::createTerabit(status));
2024     measureUnitValue = MeasureUnit::getTerabit();
2025     measureUnit.adoptInstead(MeasureUnit::createTerabyte(status));
2026     measureUnitValue = MeasureUnit::getTerabyte();
2027     measureUnit.adoptInstead(MeasureUnit::createCentury(status));
2028     measureUnitValue = MeasureUnit::getCentury();
2029     measureUnit.adoptInstead(MeasureUnit::createDay(status));
2030     measureUnitValue = MeasureUnit::getDay();
2031     measureUnit.adoptInstead(MeasureUnit::createDayPerson(status));
2032     measureUnitValue = MeasureUnit::getDayPerson();
2033     measureUnit.adoptInstead(MeasureUnit::createDecade(status));
2034     measureUnitValue = MeasureUnit::getDecade();
2035     measureUnit.adoptInstead(MeasureUnit::createHour(status));
2036     measureUnitValue = MeasureUnit::getHour();
2037     measureUnit.adoptInstead(MeasureUnit::createMicrosecond(status));
2038     measureUnitValue = MeasureUnit::getMicrosecond();
2039     measureUnit.adoptInstead(MeasureUnit::createMillisecond(status));
2040     measureUnitValue = MeasureUnit::getMillisecond();
2041     measureUnit.adoptInstead(MeasureUnit::createMinute(status));
2042     measureUnitValue = MeasureUnit::getMinute();
2043     measureUnit.adoptInstead(MeasureUnit::createMonth(status));
2044     measureUnitValue = MeasureUnit::getMonth();
2045     measureUnit.adoptInstead(MeasureUnit::createMonthPerson(status));
2046     measureUnitValue = MeasureUnit::getMonthPerson();
2047     measureUnit.adoptInstead(MeasureUnit::createNanosecond(status));
2048     measureUnitValue = MeasureUnit::getNanosecond();
2049     measureUnit.adoptInstead(MeasureUnit::createSecond(status));
2050     measureUnitValue = MeasureUnit::getSecond();
2051     measureUnit.adoptInstead(MeasureUnit::createWeek(status));
2052     measureUnitValue = MeasureUnit::getWeek();
2053     measureUnit.adoptInstead(MeasureUnit::createWeekPerson(status));
2054     measureUnitValue = MeasureUnit::getWeekPerson();
2055     measureUnit.adoptInstead(MeasureUnit::createYear(status));
2056     measureUnitValue = MeasureUnit::getYear();
2057     measureUnit.adoptInstead(MeasureUnit::createYearPerson(status));
2058     measureUnitValue = MeasureUnit::getYearPerson();
2059     measureUnit.adoptInstead(MeasureUnit::createAmpere(status));
2060     measureUnitValue = MeasureUnit::getAmpere();
2061     measureUnit.adoptInstead(MeasureUnit::createMilliampere(status));
2062     measureUnitValue = MeasureUnit::getMilliampere();
2063     measureUnit.adoptInstead(MeasureUnit::createOhm(status));
2064     measureUnitValue = MeasureUnit::getOhm();
2065     measureUnit.adoptInstead(MeasureUnit::createVolt(status));
2066     measureUnitValue = MeasureUnit::getVolt();
2067     measureUnit.adoptInstead(MeasureUnit::createBritishThermalUnit(status));
2068     measureUnitValue = MeasureUnit::getBritishThermalUnit();
2069     measureUnit.adoptInstead(MeasureUnit::createCalorie(status));
2070     measureUnitValue = MeasureUnit::getCalorie();
2071     measureUnit.adoptInstead(MeasureUnit::createElectronvolt(status));
2072     measureUnitValue = MeasureUnit::getElectronvolt();
2073     measureUnit.adoptInstead(MeasureUnit::createFoodcalorie(status));
2074     measureUnitValue = MeasureUnit::getFoodcalorie();
2075     measureUnit.adoptInstead(MeasureUnit::createJoule(status));
2076     measureUnitValue = MeasureUnit::getJoule();
2077     measureUnit.adoptInstead(MeasureUnit::createKilocalorie(status));
2078     measureUnitValue = MeasureUnit::getKilocalorie();
2079     measureUnit.adoptInstead(MeasureUnit::createKilojoule(status));
2080     measureUnitValue = MeasureUnit::getKilojoule();
2081     measureUnit.adoptInstead(MeasureUnit::createKilowattHour(status));
2082     measureUnitValue = MeasureUnit::getKilowattHour();
2083     measureUnit.adoptInstead(MeasureUnit::createThermUs(status));
2084     measureUnitValue = MeasureUnit::getThermUs();
2085     measureUnit.adoptInstead(MeasureUnit::createNewton(status));
2086     measureUnitValue = MeasureUnit::getNewton();
2087     measureUnit.adoptInstead(MeasureUnit::createPoundForce(status));
2088     measureUnitValue = MeasureUnit::getPoundForce();
2089     measureUnit.adoptInstead(MeasureUnit::createGigahertz(status));
2090     measureUnitValue = MeasureUnit::getGigahertz();
2091     measureUnit.adoptInstead(MeasureUnit::createHertz(status));
2092     measureUnitValue = MeasureUnit::getHertz();
2093     measureUnit.adoptInstead(MeasureUnit::createKilohertz(status));
2094     measureUnitValue = MeasureUnit::getKilohertz();
2095     measureUnit.adoptInstead(MeasureUnit::createMegahertz(status));
2096     measureUnitValue = MeasureUnit::getMegahertz();
2097     measureUnit.adoptInstead(MeasureUnit::createDot(status));
2098     measureUnitValue = MeasureUnit::getDot();
2099     measureUnit.adoptInstead(MeasureUnit::createDotPerCentimeter(status));
2100     measureUnitValue = MeasureUnit::getDotPerCentimeter();
2101     measureUnit.adoptInstead(MeasureUnit::createDotPerInch(status));
2102     measureUnitValue = MeasureUnit::getDotPerInch();
2103     measureUnit.adoptInstead(MeasureUnit::createEm(status));
2104     measureUnitValue = MeasureUnit::getEm();
2105     measureUnit.adoptInstead(MeasureUnit::createMegapixel(status));
2106     measureUnitValue = MeasureUnit::getMegapixel();
2107     measureUnit.adoptInstead(MeasureUnit::createPixel(status));
2108     measureUnitValue = MeasureUnit::getPixel();
2109     measureUnit.adoptInstead(MeasureUnit::createPixelPerCentimeter(status));
2110     measureUnitValue = MeasureUnit::getPixelPerCentimeter();
2111     measureUnit.adoptInstead(MeasureUnit::createPixelPerInch(status));
2112     measureUnitValue = MeasureUnit::getPixelPerInch();
2113     measureUnit.adoptInstead(MeasureUnit::createAstronomicalUnit(status));
2114     measureUnitValue = MeasureUnit::getAstronomicalUnit();
2115     measureUnit.adoptInstead(MeasureUnit::createCentimeter(status));
2116     measureUnitValue = MeasureUnit::getCentimeter();
2117     measureUnit.adoptInstead(MeasureUnit::createDecimeter(status));
2118     measureUnitValue = MeasureUnit::getDecimeter();
2119     measureUnit.adoptInstead(MeasureUnit::createEarthRadius(status));
2120     measureUnitValue = MeasureUnit::getEarthRadius();
2121     measureUnit.adoptInstead(MeasureUnit::createFathom(status));
2122     measureUnitValue = MeasureUnit::getFathom();
2123     measureUnit.adoptInstead(MeasureUnit::createFoot(status));
2124     measureUnitValue = MeasureUnit::getFoot();
2125     measureUnit.adoptInstead(MeasureUnit::createFurlong(status));
2126     measureUnitValue = MeasureUnit::getFurlong();
2127     measureUnit.adoptInstead(MeasureUnit::createInch(status));
2128     measureUnitValue = MeasureUnit::getInch();
2129     measureUnit.adoptInstead(MeasureUnit::createKilometer(status));
2130     measureUnitValue = MeasureUnit::getKilometer();
2131     measureUnit.adoptInstead(MeasureUnit::createLightYear(status));
2132     measureUnitValue = MeasureUnit::getLightYear();
2133     measureUnit.adoptInstead(MeasureUnit::createMeter(status));
2134     measureUnitValue = MeasureUnit::getMeter();
2135     measureUnit.adoptInstead(MeasureUnit::createMicrometer(status));
2136     measureUnitValue = MeasureUnit::getMicrometer();
2137     measureUnit.adoptInstead(MeasureUnit::createMile(status));
2138     measureUnitValue = MeasureUnit::getMile();
2139     measureUnit.adoptInstead(MeasureUnit::createMileScandinavian(status));
2140     measureUnitValue = MeasureUnit::getMileScandinavian();
2141     measureUnit.adoptInstead(MeasureUnit::createMillimeter(status));
2142     measureUnitValue = MeasureUnit::getMillimeter();
2143     measureUnit.adoptInstead(MeasureUnit::createNanometer(status));
2144     measureUnitValue = MeasureUnit::getNanometer();
2145     measureUnit.adoptInstead(MeasureUnit::createNauticalMile(status));
2146     measureUnitValue = MeasureUnit::getNauticalMile();
2147     measureUnit.adoptInstead(MeasureUnit::createParsec(status));
2148     measureUnitValue = MeasureUnit::getParsec();
2149     measureUnit.adoptInstead(MeasureUnit::createPicometer(status));
2150     measureUnitValue = MeasureUnit::getPicometer();
2151     measureUnit.adoptInstead(MeasureUnit::createPoint(status));
2152     measureUnitValue = MeasureUnit::getPoint();
2153     measureUnit.adoptInstead(MeasureUnit::createSolarRadius(status));
2154     measureUnitValue = MeasureUnit::getSolarRadius();
2155     measureUnit.adoptInstead(MeasureUnit::createYard(status));
2156     measureUnitValue = MeasureUnit::getYard();
2157     measureUnit.adoptInstead(MeasureUnit::createCandela(status));
2158     measureUnitValue = MeasureUnit::getCandela();
2159     measureUnit.adoptInstead(MeasureUnit::createLumen(status));
2160     measureUnitValue = MeasureUnit::getLumen();
2161     measureUnit.adoptInstead(MeasureUnit::createLux(status));
2162     measureUnitValue = MeasureUnit::getLux();
2163     measureUnit.adoptInstead(MeasureUnit::createSolarLuminosity(status));
2164     measureUnitValue = MeasureUnit::getSolarLuminosity();
2165     measureUnit.adoptInstead(MeasureUnit::createCarat(status));
2166     measureUnitValue = MeasureUnit::getCarat();
2167     measureUnit.adoptInstead(MeasureUnit::createDalton(status));
2168     measureUnitValue = MeasureUnit::getDalton();
2169     measureUnit.adoptInstead(MeasureUnit::createEarthMass(status));
2170     measureUnitValue = MeasureUnit::getEarthMass();
2171     measureUnit.adoptInstead(MeasureUnit::createGrain(status));
2172     measureUnitValue = MeasureUnit::getGrain();
2173     measureUnit.adoptInstead(MeasureUnit::createGram(status));
2174     measureUnitValue = MeasureUnit::getGram();
2175     measureUnit.adoptInstead(MeasureUnit::createKilogram(status));
2176     measureUnitValue = MeasureUnit::getKilogram();
2177     measureUnit.adoptInstead(MeasureUnit::createMetricTon(status));
2178     measureUnitValue = MeasureUnit::getMetricTon();
2179     measureUnit.adoptInstead(MeasureUnit::createMicrogram(status));
2180     measureUnitValue = MeasureUnit::getMicrogram();
2181     measureUnit.adoptInstead(MeasureUnit::createMilligram(status));
2182     measureUnitValue = MeasureUnit::getMilligram();
2183     measureUnit.adoptInstead(MeasureUnit::createOunce(status));
2184     measureUnitValue = MeasureUnit::getOunce();
2185     measureUnit.adoptInstead(MeasureUnit::createOunceTroy(status));
2186     measureUnitValue = MeasureUnit::getOunceTroy();
2187     measureUnit.adoptInstead(MeasureUnit::createPound(status));
2188     measureUnitValue = MeasureUnit::getPound();
2189     measureUnit.adoptInstead(MeasureUnit::createSolarMass(status));
2190     measureUnitValue = MeasureUnit::getSolarMass();
2191     measureUnit.adoptInstead(MeasureUnit::createStone(status));
2192     measureUnitValue = MeasureUnit::getStone();
2193     measureUnit.adoptInstead(MeasureUnit::createTon(status));
2194     measureUnitValue = MeasureUnit::getTon();
2195     measureUnit.adoptInstead(MeasureUnit::createGigawatt(status));
2196     measureUnitValue = MeasureUnit::getGigawatt();
2197     measureUnit.adoptInstead(MeasureUnit::createHorsepower(status));
2198     measureUnitValue = MeasureUnit::getHorsepower();
2199     measureUnit.adoptInstead(MeasureUnit::createKilowatt(status));
2200     measureUnitValue = MeasureUnit::getKilowatt();
2201     measureUnit.adoptInstead(MeasureUnit::createMegawatt(status));
2202     measureUnitValue = MeasureUnit::getMegawatt();
2203     measureUnit.adoptInstead(MeasureUnit::createMilliwatt(status));
2204     measureUnitValue = MeasureUnit::getMilliwatt();
2205     measureUnit.adoptInstead(MeasureUnit::createWatt(status));
2206     measureUnitValue = MeasureUnit::getWatt();
2207     measureUnit.adoptInstead(MeasureUnit::createAtmosphere(status));
2208     measureUnitValue = MeasureUnit::getAtmosphere();
2209     measureUnit.adoptInstead(MeasureUnit::createBar(status));
2210     measureUnitValue = MeasureUnit::getBar();
2211     measureUnit.adoptInstead(MeasureUnit::createHectopascal(status));
2212     measureUnitValue = MeasureUnit::getHectopascal();
2213     measureUnit.adoptInstead(MeasureUnit::createInchHg(status));
2214     measureUnitValue = MeasureUnit::getInchHg();
2215     measureUnit.adoptInstead(MeasureUnit::createKilopascal(status));
2216     measureUnitValue = MeasureUnit::getKilopascal();
2217     measureUnit.adoptInstead(MeasureUnit::createMegapascal(status));
2218     measureUnitValue = MeasureUnit::getMegapascal();
2219     measureUnit.adoptInstead(MeasureUnit::createMillibar(status));
2220     measureUnitValue = MeasureUnit::getMillibar();
2221     measureUnit.adoptInstead(MeasureUnit::createMillimeterOfMercury(status));
2222     measureUnitValue = MeasureUnit::getMillimeterOfMercury();
2223     measureUnit.adoptInstead(MeasureUnit::createPascal(status));
2224     measureUnitValue = MeasureUnit::getPascal();
2225     measureUnit.adoptInstead(MeasureUnit::createPoundPerSquareInch(status));
2226     measureUnitValue = MeasureUnit::getPoundPerSquareInch();
2227     measureUnit.adoptInstead(MeasureUnit::createKilometerPerHour(status));
2228     measureUnitValue = MeasureUnit::getKilometerPerHour();
2229     measureUnit.adoptInstead(MeasureUnit::createKnot(status));
2230     measureUnitValue = MeasureUnit::getKnot();
2231     measureUnit.adoptInstead(MeasureUnit::createMeterPerSecond(status));
2232     measureUnitValue = MeasureUnit::getMeterPerSecond();
2233     measureUnit.adoptInstead(MeasureUnit::createMilePerHour(status));
2234     measureUnitValue = MeasureUnit::getMilePerHour();
2235     measureUnit.adoptInstead(MeasureUnit::createCelsius(status));
2236     measureUnitValue = MeasureUnit::getCelsius();
2237     measureUnit.adoptInstead(MeasureUnit::createFahrenheit(status));
2238     measureUnitValue = MeasureUnit::getFahrenheit();
2239     measureUnit.adoptInstead(MeasureUnit::createGenericTemperature(status));
2240     measureUnitValue = MeasureUnit::getGenericTemperature();
2241     measureUnit.adoptInstead(MeasureUnit::createKelvin(status));
2242     measureUnitValue = MeasureUnit::getKelvin();
2243     measureUnit.adoptInstead(MeasureUnit::createNewtonMeter(status));
2244     measureUnitValue = MeasureUnit::getNewtonMeter();
2245     measureUnit.adoptInstead(MeasureUnit::createPoundFoot(status));
2246     measureUnitValue = MeasureUnit::getPoundFoot();
2247     measureUnit.adoptInstead(MeasureUnit::createAcreFoot(status));
2248     measureUnitValue = MeasureUnit::getAcreFoot();
2249     measureUnit.adoptInstead(MeasureUnit::createBarrel(status));
2250     measureUnitValue = MeasureUnit::getBarrel();
2251     measureUnit.adoptInstead(MeasureUnit::createBushel(status));
2252     measureUnitValue = MeasureUnit::getBushel();
2253     measureUnit.adoptInstead(MeasureUnit::createCentiliter(status));
2254     measureUnitValue = MeasureUnit::getCentiliter();
2255     measureUnit.adoptInstead(MeasureUnit::createCubicCentimeter(status));
2256     measureUnitValue = MeasureUnit::getCubicCentimeter();
2257     measureUnit.adoptInstead(MeasureUnit::createCubicFoot(status));
2258     measureUnitValue = MeasureUnit::getCubicFoot();
2259     measureUnit.adoptInstead(MeasureUnit::createCubicInch(status));
2260     measureUnitValue = MeasureUnit::getCubicInch();
2261     measureUnit.adoptInstead(MeasureUnit::createCubicKilometer(status));
2262     measureUnitValue = MeasureUnit::getCubicKilometer();
2263     measureUnit.adoptInstead(MeasureUnit::createCubicMeter(status));
2264     measureUnitValue = MeasureUnit::getCubicMeter();
2265     measureUnit.adoptInstead(MeasureUnit::createCubicMile(status));
2266     measureUnitValue = MeasureUnit::getCubicMile();
2267     measureUnit.adoptInstead(MeasureUnit::createCubicYard(status));
2268     measureUnitValue = MeasureUnit::getCubicYard();
2269     measureUnit.adoptInstead(MeasureUnit::createCup(status));
2270     measureUnitValue = MeasureUnit::getCup();
2271     measureUnit.adoptInstead(MeasureUnit::createCupMetric(status));
2272     measureUnitValue = MeasureUnit::getCupMetric();
2273     measureUnit.adoptInstead(MeasureUnit::createDeciliter(status));
2274     measureUnitValue = MeasureUnit::getDeciliter();
2275     measureUnit.adoptInstead(MeasureUnit::createDessertSpoon(status));
2276     measureUnitValue = MeasureUnit::getDessertSpoon();
2277     measureUnit.adoptInstead(MeasureUnit::createDessertSpoonImperial(status));
2278     measureUnitValue = MeasureUnit::getDessertSpoonImperial();
2279     measureUnit.adoptInstead(MeasureUnit::createDram(status));
2280     measureUnitValue = MeasureUnit::getDram();
2281     measureUnit.adoptInstead(MeasureUnit::createDrop(status));
2282     measureUnitValue = MeasureUnit::getDrop();
2283     measureUnit.adoptInstead(MeasureUnit::createFluidOunce(status));
2284     measureUnitValue = MeasureUnit::getFluidOunce();
2285     measureUnit.adoptInstead(MeasureUnit::createFluidOunceImperial(status));
2286     measureUnitValue = MeasureUnit::getFluidOunceImperial();
2287     measureUnit.adoptInstead(MeasureUnit::createGallon(status));
2288     measureUnitValue = MeasureUnit::getGallon();
2289     measureUnit.adoptInstead(MeasureUnit::createGallonImperial(status));
2290     measureUnitValue = MeasureUnit::getGallonImperial();
2291     measureUnit.adoptInstead(MeasureUnit::createHectoliter(status));
2292     measureUnitValue = MeasureUnit::getHectoliter();
2293     measureUnit.adoptInstead(MeasureUnit::createJigger(status));
2294     measureUnitValue = MeasureUnit::getJigger();
2295     measureUnit.adoptInstead(MeasureUnit::createLiter(status));
2296     measureUnitValue = MeasureUnit::getLiter();
2297     measureUnit.adoptInstead(MeasureUnit::createMegaliter(status));
2298     measureUnitValue = MeasureUnit::getMegaliter();
2299     measureUnit.adoptInstead(MeasureUnit::createMilliliter(status));
2300     measureUnitValue = MeasureUnit::getMilliliter();
2301     measureUnit.adoptInstead(MeasureUnit::createPinch(status));
2302     measureUnitValue = MeasureUnit::getPinch();
2303     measureUnit.adoptInstead(MeasureUnit::createPint(status));
2304     measureUnitValue = MeasureUnit::getPint();
2305     measureUnit.adoptInstead(MeasureUnit::createPintMetric(status));
2306     measureUnitValue = MeasureUnit::getPintMetric();
2307     measureUnit.adoptInstead(MeasureUnit::createQuart(status));
2308     measureUnitValue = MeasureUnit::getQuart();
2309     measureUnit.adoptInstead(MeasureUnit::createQuartImperial(status));
2310     measureUnitValue = MeasureUnit::getQuartImperial();
2311     measureUnit.adoptInstead(MeasureUnit::createTablespoon(status));
2312     measureUnitValue = MeasureUnit::getTablespoon();
2313     measureUnit.adoptInstead(MeasureUnit::createTeaspoon(status));
2314     measureUnitValue = MeasureUnit::getTeaspoon();
2315     assertSuccess("", status);
2316 }
2317 
TestCompatible69()2318 void MeasureFormatTest::TestCompatible69() {
2319     UErrorCode status = U_ZERO_ERROR;
2320     LocalPointer<MeasureUnit> measureUnit;
2321     MeasureUnit measureUnitValue;
2322     measureUnit.adoptInstead(MeasureUnit::createGForce(status));
2323     measureUnitValue = MeasureUnit::getGForce();
2324     measureUnit.adoptInstead(MeasureUnit::createMeterPerSecondSquared(status));
2325     measureUnitValue = MeasureUnit::getMeterPerSecondSquared();
2326     measureUnit.adoptInstead(MeasureUnit::createArcMinute(status));
2327     measureUnitValue = MeasureUnit::getArcMinute();
2328     measureUnit.adoptInstead(MeasureUnit::createArcSecond(status));
2329     measureUnitValue = MeasureUnit::getArcSecond();
2330     measureUnit.adoptInstead(MeasureUnit::createDegree(status));
2331     measureUnitValue = MeasureUnit::getDegree();
2332     measureUnit.adoptInstead(MeasureUnit::createRadian(status));
2333     measureUnitValue = MeasureUnit::getRadian();
2334     measureUnit.adoptInstead(MeasureUnit::createRevolutionAngle(status));
2335     measureUnitValue = MeasureUnit::getRevolutionAngle();
2336     measureUnit.adoptInstead(MeasureUnit::createAcre(status));
2337     measureUnitValue = MeasureUnit::getAcre();
2338     measureUnit.adoptInstead(MeasureUnit::createDunam(status));
2339     measureUnitValue = MeasureUnit::getDunam();
2340     measureUnit.adoptInstead(MeasureUnit::createHectare(status));
2341     measureUnitValue = MeasureUnit::getHectare();
2342     measureUnit.adoptInstead(MeasureUnit::createSquareCentimeter(status));
2343     measureUnitValue = MeasureUnit::getSquareCentimeter();
2344     measureUnit.adoptInstead(MeasureUnit::createSquareFoot(status));
2345     measureUnitValue = MeasureUnit::getSquareFoot();
2346     measureUnit.adoptInstead(MeasureUnit::createSquareInch(status));
2347     measureUnitValue = MeasureUnit::getSquareInch();
2348     measureUnit.adoptInstead(MeasureUnit::createSquareKilometer(status));
2349     measureUnitValue = MeasureUnit::getSquareKilometer();
2350     measureUnit.adoptInstead(MeasureUnit::createSquareMeter(status));
2351     measureUnitValue = MeasureUnit::getSquareMeter();
2352     measureUnit.adoptInstead(MeasureUnit::createSquareMile(status));
2353     measureUnitValue = MeasureUnit::getSquareMile();
2354     measureUnit.adoptInstead(MeasureUnit::createSquareYard(status));
2355     measureUnitValue = MeasureUnit::getSquareYard();
2356     measureUnit.adoptInstead(MeasureUnit::createKarat(status));
2357     measureUnitValue = MeasureUnit::getKarat();
2358     measureUnit.adoptInstead(MeasureUnit::createMilligramOfglucosePerDeciliter(status));
2359     measureUnitValue = MeasureUnit::getMilligramOfglucosePerDeciliter();
2360     measureUnit.adoptInstead(MeasureUnit::createMilligramPerDeciliter(status));
2361     measureUnitValue = MeasureUnit::getMilligramPerDeciliter();
2362     measureUnit.adoptInstead(MeasureUnit::createMillimolePerLiter(status));
2363     measureUnitValue = MeasureUnit::getMillimolePerLiter();
2364     measureUnit.adoptInstead(MeasureUnit::createMole(status));
2365     measureUnitValue = MeasureUnit::getMole();
2366     measureUnit.adoptInstead(MeasureUnit::createPercent(status));
2367     measureUnitValue = MeasureUnit::getPercent();
2368     measureUnit.adoptInstead(MeasureUnit::createPermille(status));
2369     measureUnitValue = MeasureUnit::getPermille();
2370     measureUnit.adoptInstead(MeasureUnit::createPartPerMillion(status));
2371     measureUnitValue = MeasureUnit::getPartPerMillion();
2372     measureUnit.adoptInstead(MeasureUnit::createPermyriad(status));
2373     measureUnitValue = MeasureUnit::getPermyriad();
2374     measureUnit.adoptInstead(MeasureUnit::createLiterPer100Kilometers(status));
2375     measureUnitValue = MeasureUnit::getLiterPer100Kilometers();
2376     measureUnit.adoptInstead(MeasureUnit::createLiterPerKilometer(status));
2377     measureUnitValue = MeasureUnit::getLiterPerKilometer();
2378     measureUnit.adoptInstead(MeasureUnit::createMilePerGallon(status));
2379     measureUnitValue = MeasureUnit::getMilePerGallon();
2380     measureUnit.adoptInstead(MeasureUnit::createMilePerGallonImperial(status));
2381     measureUnitValue = MeasureUnit::getMilePerGallonImperial();
2382     measureUnit.adoptInstead(MeasureUnit::createBit(status));
2383     measureUnitValue = MeasureUnit::getBit();
2384     measureUnit.adoptInstead(MeasureUnit::createByte(status));
2385     measureUnitValue = MeasureUnit::getByte();
2386     measureUnit.adoptInstead(MeasureUnit::createGigabit(status));
2387     measureUnitValue = MeasureUnit::getGigabit();
2388     measureUnit.adoptInstead(MeasureUnit::createGigabyte(status));
2389     measureUnitValue = MeasureUnit::getGigabyte();
2390     measureUnit.adoptInstead(MeasureUnit::createKilobit(status));
2391     measureUnitValue = MeasureUnit::getKilobit();
2392     measureUnit.adoptInstead(MeasureUnit::createKilobyte(status));
2393     measureUnitValue = MeasureUnit::getKilobyte();
2394     measureUnit.adoptInstead(MeasureUnit::createMegabit(status));
2395     measureUnitValue = MeasureUnit::getMegabit();
2396     measureUnit.adoptInstead(MeasureUnit::createMegabyte(status));
2397     measureUnitValue = MeasureUnit::getMegabyte();
2398     measureUnit.adoptInstead(MeasureUnit::createPetabyte(status));
2399     measureUnitValue = MeasureUnit::getPetabyte();
2400     measureUnit.adoptInstead(MeasureUnit::createTerabit(status));
2401     measureUnitValue = MeasureUnit::getTerabit();
2402     measureUnit.adoptInstead(MeasureUnit::createTerabyte(status));
2403     measureUnitValue = MeasureUnit::getTerabyte();
2404     measureUnit.adoptInstead(MeasureUnit::createCentury(status));
2405     measureUnitValue = MeasureUnit::getCentury();
2406     measureUnit.adoptInstead(MeasureUnit::createDay(status));
2407     measureUnitValue = MeasureUnit::getDay();
2408     measureUnit.adoptInstead(MeasureUnit::createDayPerson(status));
2409     measureUnitValue = MeasureUnit::getDayPerson();
2410     measureUnit.adoptInstead(MeasureUnit::createDecade(status));
2411     measureUnitValue = MeasureUnit::getDecade();
2412     measureUnit.adoptInstead(MeasureUnit::createHour(status));
2413     measureUnitValue = MeasureUnit::getHour();
2414     measureUnit.adoptInstead(MeasureUnit::createMicrosecond(status));
2415     measureUnitValue = MeasureUnit::getMicrosecond();
2416     measureUnit.adoptInstead(MeasureUnit::createMillisecond(status));
2417     measureUnitValue = MeasureUnit::getMillisecond();
2418     measureUnit.adoptInstead(MeasureUnit::createMinute(status));
2419     measureUnitValue = MeasureUnit::getMinute();
2420     measureUnit.adoptInstead(MeasureUnit::createMonth(status));
2421     measureUnitValue = MeasureUnit::getMonth();
2422     measureUnit.adoptInstead(MeasureUnit::createMonthPerson(status));
2423     measureUnitValue = MeasureUnit::getMonthPerson();
2424     measureUnit.adoptInstead(MeasureUnit::createNanosecond(status));
2425     measureUnitValue = MeasureUnit::getNanosecond();
2426     measureUnit.adoptInstead(MeasureUnit::createSecond(status));
2427     measureUnitValue = MeasureUnit::getSecond();
2428     measureUnit.adoptInstead(MeasureUnit::createWeek(status));
2429     measureUnitValue = MeasureUnit::getWeek();
2430     measureUnit.adoptInstead(MeasureUnit::createWeekPerson(status));
2431     measureUnitValue = MeasureUnit::getWeekPerson();
2432     measureUnit.adoptInstead(MeasureUnit::createYear(status));
2433     measureUnitValue = MeasureUnit::getYear();
2434     measureUnit.adoptInstead(MeasureUnit::createYearPerson(status));
2435     measureUnitValue = MeasureUnit::getYearPerson();
2436     measureUnit.adoptInstead(MeasureUnit::createAmpere(status));
2437     measureUnitValue = MeasureUnit::getAmpere();
2438     measureUnit.adoptInstead(MeasureUnit::createMilliampere(status));
2439     measureUnitValue = MeasureUnit::getMilliampere();
2440     measureUnit.adoptInstead(MeasureUnit::createOhm(status));
2441     measureUnitValue = MeasureUnit::getOhm();
2442     measureUnit.adoptInstead(MeasureUnit::createVolt(status));
2443     measureUnitValue = MeasureUnit::getVolt();
2444     measureUnit.adoptInstead(MeasureUnit::createBritishThermalUnit(status));
2445     measureUnitValue = MeasureUnit::getBritishThermalUnit();
2446     measureUnit.adoptInstead(MeasureUnit::createCalorie(status));
2447     measureUnitValue = MeasureUnit::getCalorie();
2448     measureUnit.adoptInstead(MeasureUnit::createElectronvolt(status));
2449     measureUnitValue = MeasureUnit::getElectronvolt();
2450     measureUnit.adoptInstead(MeasureUnit::createFoodcalorie(status));
2451     measureUnitValue = MeasureUnit::getFoodcalorie();
2452     measureUnit.adoptInstead(MeasureUnit::createJoule(status));
2453     measureUnitValue = MeasureUnit::getJoule();
2454     measureUnit.adoptInstead(MeasureUnit::createKilocalorie(status));
2455     measureUnitValue = MeasureUnit::getKilocalorie();
2456     measureUnit.adoptInstead(MeasureUnit::createKilojoule(status));
2457     measureUnitValue = MeasureUnit::getKilojoule();
2458     measureUnit.adoptInstead(MeasureUnit::createKilowattHour(status));
2459     measureUnitValue = MeasureUnit::getKilowattHour();
2460     measureUnit.adoptInstead(MeasureUnit::createThermUs(status));
2461     measureUnitValue = MeasureUnit::getThermUs();
2462     measureUnit.adoptInstead(MeasureUnit::createNewton(status));
2463     measureUnitValue = MeasureUnit::getNewton();
2464     measureUnit.adoptInstead(MeasureUnit::createPoundForce(status));
2465     measureUnitValue = MeasureUnit::getPoundForce();
2466     measureUnit.adoptInstead(MeasureUnit::createGigahertz(status));
2467     measureUnitValue = MeasureUnit::getGigahertz();
2468     measureUnit.adoptInstead(MeasureUnit::createHertz(status));
2469     measureUnitValue = MeasureUnit::getHertz();
2470     measureUnit.adoptInstead(MeasureUnit::createKilohertz(status));
2471     measureUnitValue = MeasureUnit::getKilohertz();
2472     measureUnit.adoptInstead(MeasureUnit::createMegahertz(status));
2473     measureUnitValue = MeasureUnit::getMegahertz();
2474     measureUnit.adoptInstead(MeasureUnit::createDot(status));
2475     measureUnitValue = MeasureUnit::getDot();
2476     measureUnit.adoptInstead(MeasureUnit::createDotPerCentimeter(status));
2477     measureUnitValue = MeasureUnit::getDotPerCentimeter();
2478     measureUnit.adoptInstead(MeasureUnit::createDotPerInch(status));
2479     measureUnitValue = MeasureUnit::getDotPerInch();
2480     measureUnit.adoptInstead(MeasureUnit::createEm(status));
2481     measureUnitValue = MeasureUnit::getEm();
2482     measureUnit.adoptInstead(MeasureUnit::createMegapixel(status));
2483     measureUnitValue = MeasureUnit::getMegapixel();
2484     measureUnit.adoptInstead(MeasureUnit::createPixel(status));
2485     measureUnitValue = MeasureUnit::getPixel();
2486     measureUnit.adoptInstead(MeasureUnit::createPixelPerCentimeter(status));
2487     measureUnitValue = MeasureUnit::getPixelPerCentimeter();
2488     measureUnit.adoptInstead(MeasureUnit::createPixelPerInch(status));
2489     measureUnitValue = MeasureUnit::getPixelPerInch();
2490     measureUnit.adoptInstead(MeasureUnit::createAstronomicalUnit(status));
2491     measureUnitValue = MeasureUnit::getAstronomicalUnit();
2492     measureUnit.adoptInstead(MeasureUnit::createCentimeter(status));
2493     measureUnitValue = MeasureUnit::getCentimeter();
2494     measureUnit.adoptInstead(MeasureUnit::createDecimeter(status));
2495     measureUnitValue = MeasureUnit::getDecimeter();
2496     measureUnit.adoptInstead(MeasureUnit::createEarthRadius(status));
2497     measureUnitValue = MeasureUnit::getEarthRadius();
2498     measureUnit.adoptInstead(MeasureUnit::createFathom(status));
2499     measureUnitValue = MeasureUnit::getFathom();
2500     measureUnit.adoptInstead(MeasureUnit::createFoot(status));
2501     measureUnitValue = MeasureUnit::getFoot();
2502     measureUnit.adoptInstead(MeasureUnit::createFurlong(status));
2503     measureUnitValue = MeasureUnit::getFurlong();
2504     measureUnit.adoptInstead(MeasureUnit::createInch(status));
2505     measureUnitValue = MeasureUnit::getInch();
2506     measureUnit.adoptInstead(MeasureUnit::createKilometer(status));
2507     measureUnitValue = MeasureUnit::getKilometer();
2508     measureUnit.adoptInstead(MeasureUnit::createLightYear(status));
2509     measureUnitValue = MeasureUnit::getLightYear();
2510     measureUnit.adoptInstead(MeasureUnit::createMeter(status));
2511     measureUnitValue = MeasureUnit::getMeter();
2512     measureUnit.adoptInstead(MeasureUnit::createMicrometer(status));
2513     measureUnitValue = MeasureUnit::getMicrometer();
2514     measureUnit.adoptInstead(MeasureUnit::createMile(status));
2515     measureUnitValue = MeasureUnit::getMile();
2516     measureUnit.adoptInstead(MeasureUnit::createMileScandinavian(status));
2517     measureUnitValue = MeasureUnit::getMileScandinavian();
2518     measureUnit.adoptInstead(MeasureUnit::createMillimeter(status));
2519     measureUnitValue = MeasureUnit::getMillimeter();
2520     measureUnit.adoptInstead(MeasureUnit::createNanometer(status));
2521     measureUnitValue = MeasureUnit::getNanometer();
2522     measureUnit.adoptInstead(MeasureUnit::createNauticalMile(status));
2523     measureUnitValue = MeasureUnit::getNauticalMile();
2524     measureUnit.adoptInstead(MeasureUnit::createParsec(status));
2525     measureUnitValue = MeasureUnit::getParsec();
2526     measureUnit.adoptInstead(MeasureUnit::createPicometer(status));
2527     measureUnitValue = MeasureUnit::getPicometer();
2528     measureUnit.adoptInstead(MeasureUnit::createPoint(status));
2529     measureUnitValue = MeasureUnit::getPoint();
2530     measureUnit.adoptInstead(MeasureUnit::createSolarRadius(status));
2531     measureUnitValue = MeasureUnit::getSolarRadius();
2532     measureUnit.adoptInstead(MeasureUnit::createYard(status));
2533     measureUnitValue = MeasureUnit::getYard();
2534     measureUnit.adoptInstead(MeasureUnit::createCandela(status));
2535     measureUnitValue = MeasureUnit::getCandela();
2536     measureUnit.adoptInstead(MeasureUnit::createLumen(status));
2537     measureUnitValue = MeasureUnit::getLumen();
2538     measureUnit.adoptInstead(MeasureUnit::createLux(status));
2539     measureUnitValue = MeasureUnit::getLux();
2540     measureUnit.adoptInstead(MeasureUnit::createSolarLuminosity(status));
2541     measureUnitValue = MeasureUnit::getSolarLuminosity();
2542     measureUnit.adoptInstead(MeasureUnit::createCarat(status));
2543     measureUnitValue = MeasureUnit::getCarat();
2544     measureUnit.adoptInstead(MeasureUnit::createDalton(status));
2545     measureUnitValue = MeasureUnit::getDalton();
2546     measureUnit.adoptInstead(MeasureUnit::createEarthMass(status));
2547     measureUnitValue = MeasureUnit::getEarthMass();
2548     measureUnit.adoptInstead(MeasureUnit::createGrain(status));
2549     measureUnitValue = MeasureUnit::getGrain();
2550     measureUnit.adoptInstead(MeasureUnit::createGram(status));
2551     measureUnitValue = MeasureUnit::getGram();
2552     measureUnit.adoptInstead(MeasureUnit::createKilogram(status));
2553     measureUnitValue = MeasureUnit::getKilogram();
2554     measureUnit.adoptInstead(MeasureUnit::createMetricTon(status));
2555     measureUnitValue = MeasureUnit::getMetricTon();
2556     measureUnit.adoptInstead(MeasureUnit::createMicrogram(status));
2557     measureUnitValue = MeasureUnit::getMicrogram();
2558     measureUnit.adoptInstead(MeasureUnit::createMilligram(status));
2559     measureUnitValue = MeasureUnit::getMilligram();
2560     measureUnit.adoptInstead(MeasureUnit::createOunce(status));
2561     measureUnitValue = MeasureUnit::getOunce();
2562     measureUnit.adoptInstead(MeasureUnit::createOunceTroy(status));
2563     measureUnitValue = MeasureUnit::getOunceTroy();
2564     measureUnit.adoptInstead(MeasureUnit::createPound(status));
2565     measureUnitValue = MeasureUnit::getPound();
2566     measureUnit.adoptInstead(MeasureUnit::createSolarMass(status));
2567     measureUnitValue = MeasureUnit::getSolarMass();
2568     measureUnit.adoptInstead(MeasureUnit::createStone(status));
2569     measureUnitValue = MeasureUnit::getStone();
2570     measureUnit.adoptInstead(MeasureUnit::createTon(status));
2571     measureUnitValue = MeasureUnit::getTon();
2572     measureUnit.adoptInstead(MeasureUnit::createGigawatt(status));
2573     measureUnitValue = MeasureUnit::getGigawatt();
2574     measureUnit.adoptInstead(MeasureUnit::createHorsepower(status));
2575     measureUnitValue = MeasureUnit::getHorsepower();
2576     measureUnit.adoptInstead(MeasureUnit::createKilowatt(status));
2577     measureUnitValue = MeasureUnit::getKilowatt();
2578     measureUnit.adoptInstead(MeasureUnit::createMegawatt(status));
2579     measureUnitValue = MeasureUnit::getMegawatt();
2580     measureUnit.adoptInstead(MeasureUnit::createMilliwatt(status));
2581     measureUnitValue = MeasureUnit::getMilliwatt();
2582     measureUnit.adoptInstead(MeasureUnit::createWatt(status));
2583     measureUnitValue = MeasureUnit::getWatt();
2584     measureUnit.adoptInstead(MeasureUnit::createAtmosphere(status));
2585     measureUnitValue = MeasureUnit::getAtmosphere();
2586     measureUnit.adoptInstead(MeasureUnit::createBar(status));
2587     measureUnitValue = MeasureUnit::getBar();
2588     measureUnit.adoptInstead(MeasureUnit::createHectopascal(status));
2589     measureUnitValue = MeasureUnit::getHectopascal();
2590     measureUnit.adoptInstead(MeasureUnit::createInchHg(status));
2591     measureUnitValue = MeasureUnit::getInchHg();
2592     measureUnit.adoptInstead(MeasureUnit::createKilopascal(status));
2593     measureUnitValue = MeasureUnit::getKilopascal();
2594     measureUnit.adoptInstead(MeasureUnit::createMegapascal(status));
2595     measureUnitValue = MeasureUnit::getMegapascal();
2596     measureUnit.adoptInstead(MeasureUnit::createMillibar(status));
2597     measureUnitValue = MeasureUnit::getMillibar();
2598     measureUnit.adoptInstead(MeasureUnit::createMillimeterOfMercury(status));
2599     measureUnitValue = MeasureUnit::getMillimeterOfMercury();
2600     measureUnit.adoptInstead(MeasureUnit::createPascal(status));
2601     measureUnitValue = MeasureUnit::getPascal();
2602     measureUnit.adoptInstead(MeasureUnit::createPoundPerSquareInch(status));
2603     measureUnitValue = MeasureUnit::getPoundPerSquareInch();
2604     measureUnit.adoptInstead(MeasureUnit::createKilometerPerHour(status));
2605     measureUnitValue = MeasureUnit::getKilometerPerHour();
2606     measureUnit.adoptInstead(MeasureUnit::createKnot(status));
2607     measureUnitValue = MeasureUnit::getKnot();
2608     measureUnit.adoptInstead(MeasureUnit::createMeterPerSecond(status));
2609     measureUnitValue = MeasureUnit::getMeterPerSecond();
2610     measureUnit.adoptInstead(MeasureUnit::createMilePerHour(status));
2611     measureUnitValue = MeasureUnit::getMilePerHour();
2612     measureUnit.adoptInstead(MeasureUnit::createCelsius(status));
2613     measureUnitValue = MeasureUnit::getCelsius();
2614     measureUnit.adoptInstead(MeasureUnit::createFahrenheit(status));
2615     measureUnitValue = MeasureUnit::getFahrenheit();
2616     measureUnit.adoptInstead(MeasureUnit::createGenericTemperature(status));
2617     measureUnitValue = MeasureUnit::getGenericTemperature();
2618     measureUnit.adoptInstead(MeasureUnit::createKelvin(status));
2619     measureUnitValue = MeasureUnit::getKelvin();
2620     measureUnit.adoptInstead(MeasureUnit::createNewtonMeter(status));
2621     measureUnitValue = MeasureUnit::getNewtonMeter();
2622     measureUnit.adoptInstead(MeasureUnit::createPoundFoot(status));
2623     measureUnitValue = MeasureUnit::getPoundFoot();
2624     measureUnit.adoptInstead(MeasureUnit::createAcreFoot(status));
2625     measureUnitValue = MeasureUnit::getAcreFoot();
2626     measureUnit.adoptInstead(MeasureUnit::createBarrel(status));
2627     measureUnitValue = MeasureUnit::getBarrel();
2628     measureUnit.adoptInstead(MeasureUnit::createBushel(status));
2629     measureUnitValue = MeasureUnit::getBushel();
2630     measureUnit.adoptInstead(MeasureUnit::createCentiliter(status));
2631     measureUnitValue = MeasureUnit::getCentiliter();
2632     measureUnit.adoptInstead(MeasureUnit::createCubicCentimeter(status));
2633     measureUnitValue = MeasureUnit::getCubicCentimeter();
2634     measureUnit.adoptInstead(MeasureUnit::createCubicFoot(status));
2635     measureUnitValue = MeasureUnit::getCubicFoot();
2636     measureUnit.adoptInstead(MeasureUnit::createCubicInch(status));
2637     measureUnitValue = MeasureUnit::getCubicInch();
2638     measureUnit.adoptInstead(MeasureUnit::createCubicKilometer(status));
2639     measureUnitValue = MeasureUnit::getCubicKilometer();
2640     measureUnit.adoptInstead(MeasureUnit::createCubicMeter(status));
2641     measureUnitValue = MeasureUnit::getCubicMeter();
2642     measureUnit.adoptInstead(MeasureUnit::createCubicMile(status));
2643     measureUnitValue = MeasureUnit::getCubicMile();
2644     measureUnit.adoptInstead(MeasureUnit::createCubicYard(status));
2645     measureUnitValue = MeasureUnit::getCubicYard();
2646     measureUnit.adoptInstead(MeasureUnit::createCup(status));
2647     measureUnitValue = MeasureUnit::getCup();
2648     measureUnit.adoptInstead(MeasureUnit::createCupMetric(status));
2649     measureUnitValue = MeasureUnit::getCupMetric();
2650     measureUnit.adoptInstead(MeasureUnit::createDeciliter(status));
2651     measureUnitValue = MeasureUnit::getDeciliter();
2652     measureUnit.adoptInstead(MeasureUnit::createDessertSpoon(status));
2653     measureUnitValue = MeasureUnit::getDessertSpoon();
2654     measureUnit.adoptInstead(MeasureUnit::createDessertSpoonImperial(status));
2655     measureUnitValue = MeasureUnit::getDessertSpoonImperial();
2656     measureUnit.adoptInstead(MeasureUnit::createDram(status));
2657     measureUnitValue = MeasureUnit::getDram();
2658     measureUnit.adoptInstead(MeasureUnit::createDrop(status));
2659     measureUnitValue = MeasureUnit::getDrop();
2660     measureUnit.adoptInstead(MeasureUnit::createFluidOunce(status));
2661     measureUnitValue = MeasureUnit::getFluidOunce();
2662     measureUnit.adoptInstead(MeasureUnit::createFluidOunceImperial(status));
2663     measureUnitValue = MeasureUnit::getFluidOunceImperial();
2664     measureUnit.adoptInstead(MeasureUnit::createGallon(status));
2665     measureUnitValue = MeasureUnit::getGallon();
2666     measureUnit.adoptInstead(MeasureUnit::createGallonImperial(status));
2667     measureUnitValue = MeasureUnit::getGallonImperial();
2668     measureUnit.adoptInstead(MeasureUnit::createHectoliter(status));
2669     measureUnitValue = MeasureUnit::getHectoliter();
2670     measureUnit.adoptInstead(MeasureUnit::createJigger(status));
2671     measureUnitValue = MeasureUnit::getJigger();
2672     measureUnit.adoptInstead(MeasureUnit::createLiter(status));
2673     measureUnitValue = MeasureUnit::getLiter();
2674     measureUnit.adoptInstead(MeasureUnit::createMegaliter(status));
2675     measureUnitValue = MeasureUnit::getMegaliter();
2676     measureUnit.adoptInstead(MeasureUnit::createMilliliter(status));
2677     measureUnitValue = MeasureUnit::getMilliliter();
2678     measureUnit.adoptInstead(MeasureUnit::createPinch(status));
2679     measureUnitValue = MeasureUnit::getPinch();
2680     measureUnit.adoptInstead(MeasureUnit::createPint(status));
2681     measureUnitValue = MeasureUnit::getPint();
2682     measureUnit.adoptInstead(MeasureUnit::createPintMetric(status));
2683     measureUnitValue = MeasureUnit::getPintMetric();
2684     measureUnit.adoptInstead(MeasureUnit::createQuart(status));
2685     measureUnitValue = MeasureUnit::getQuart();
2686     measureUnit.adoptInstead(MeasureUnit::createQuartImperial(status));
2687     measureUnitValue = MeasureUnit::getQuartImperial();
2688     measureUnit.adoptInstead(MeasureUnit::createTablespoon(status));
2689     measureUnitValue = MeasureUnit::getTablespoon();
2690     measureUnit.adoptInstead(MeasureUnit::createTeaspoon(status));
2691     measureUnitValue = MeasureUnit::getTeaspoon();
2692     assertSuccess("", status);
2693 }
2694 
TestCompatible70()2695 void MeasureFormatTest::TestCompatible70() { // TestCompatible71 would be identical
2696     UErrorCode status = U_ZERO_ERROR;
2697     LocalPointer<MeasureUnit> measureUnit;
2698     MeasureUnit measureUnitValue;
2699     measureUnit.adoptInstead(MeasureUnit::createGForce(status));
2700     measureUnitValue = MeasureUnit::getGForce();
2701     measureUnit.adoptInstead(MeasureUnit::createMeterPerSecondSquared(status));
2702     measureUnitValue = MeasureUnit::getMeterPerSecondSquared();
2703     measureUnit.adoptInstead(MeasureUnit::createArcMinute(status));
2704     measureUnitValue = MeasureUnit::getArcMinute();
2705     measureUnit.adoptInstead(MeasureUnit::createArcSecond(status));
2706     measureUnitValue = MeasureUnit::getArcSecond();
2707     measureUnit.adoptInstead(MeasureUnit::createDegree(status));
2708     measureUnitValue = MeasureUnit::getDegree();
2709     measureUnit.adoptInstead(MeasureUnit::createRadian(status));
2710     measureUnitValue = MeasureUnit::getRadian();
2711     measureUnit.adoptInstead(MeasureUnit::createRevolutionAngle(status));
2712     measureUnitValue = MeasureUnit::getRevolutionAngle();
2713     measureUnit.adoptInstead(MeasureUnit::createAcre(status));
2714     measureUnitValue = MeasureUnit::getAcre();
2715     measureUnit.adoptInstead(MeasureUnit::createDunam(status));
2716     measureUnitValue = MeasureUnit::getDunam();
2717     measureUnit.adoptInstead(MeasureUnit::createHectare(status));
2718     measureUnitValue = MeasureUnit::getHectare();
2719     measureUnit.adoptInstead(MeasureUnit::createSquareCentimeter(status));
2720     measureUnitValue = MeasureUnit::getSquareCentimeter();
2721     measureUnit.adoptInstead(MeasureUnit::createSquareFoot(status));
2722     measureUnitValue = MeasureUnit::getSquareFoot();
2723     measureUnit.adoptInstead(MeasureUnit::createSquareInch(status));
2724     measureUnitValue = MeasureUnit::getSquareInch();
2725     measureUnit.adoptInstead(MeasureUnit::createSquareKilometer(status));
2726     measureUnitValue = MeasureUnit::getSquareKilometer();
2727     measureUnit.adoptInstead(MeasureUnit::createSquareMeter(status));
2728     measureUnitValue = MeasureUnit::getSquareMeter();
2729     measureUnit.adoptInstead(MeasureUnit::createSquareMile(status));
2730     measureUnitValue = MeasureUnit::getSquareMile();
2731     measureUnit.adoptInstead(MeasureUnit::createSquareYard(status));
2732     measureUnitValue = MeasureUnit::getSquareYard();
2733     measureUnit.adoptInstead(MeasureUnit::createItem(status));
2734     measureUnitValue = MeasureUnit::getItem();
2735     measureUnit.adoptInstead(MeasureUnit::createKarat(status));
2736     measureUnitValue = MeasureUnit::getKarat();
2737     measureUnit.adoptInstead(MeasureUnit::createMilligramOfglucosePerDeciliter(status));
2738     measureUnitValue = MeasureUnit::getMilligramOfglucosePerDeciliter();
2739     measureUnit.adoptInstead(MeasureUnit::createMilligramPerDeciliter(status));
2740     measureUnitValue = MeasureUnit::getMilligramPerDeciliter();
2741     measureUnit.adoptInstead(MeasureUnit::createMillimolePerLiter(status));
2742     measureUnitValue = MeasureUnit::getMillimolePerLiter();
2743     measureUnit.adoptInstead(MeasureUnit::createMole(status));
2744     measureUnitValue = MeasureUnit::getMole();
2745     measureUnit.adoptInstead(MeasureUnit::createPercent(status));
2746     measureUnitValue = MeasureUnit::getPercent();
2747     measureUnit.adoptInstead(MeasureUnit::createPermille(status));
2748     measureUnitValue = MeasureUnit::getPermille();
2749     measureUnit.adoptInstead(MeasureUnit::createPartPerMillion(status));
2750     measureUnitValue = MeasureUnit::getPartPerMillion();
2751     measureUnit.adoptInstead(MeasureUnit::createPermyriad(status));
2752     measureUnitValue = MeasureUnit::getPermyriad();
2753     measureUnit.adoptInstead(MeasureUnit::createLiterPer100Kilometers(status));
2754     measureUnitValue = MeasureUnit::getLiterPer100Kilometers();
2755     measureUnit.adoptInstead(MeasureUnit::createLiterPerKilometer(status));
2756     measureUnitValue = MeasureUnit::getLiterPerKilometer();
2757     measureUnit.adoptInstead(MeasureUnit::createMilePerGallon(status));
2758     measureUnitValue = MeasureUnit::getMilePerGallon();
2759     measureUnit.adoptInstead(MeasureUnit::createMilePerGallonImperial(status));
2760     measureUnitValue = MeasureUnit::getMilePerGallonImperial();
2761     measureUnit.adoptInstead(MeasureUnit::createBit(status));
2762     measureUnitValue = MeasureUnit::getBit();
2763     measureUnit.adoptInstead(MeasureUnit::createByte(status));
2764     measureUnitValue = MeasureUnit::getByte();
2765     measureUnit.adoptInstead(MeasureUnit::createGigabit(status));
2766     measureUnitValue = MeasureUnit::getGigabit();
2767     measureUnit.adoptInstead(MeasureUnit::createGigabyte(status));
2768     measureUnitValue = MeasureUnit::getGigabyte();
2769     measureUnit.adoptInstead(MeasureUnit::createKilobit(status));
2770     measureUnitValue = MeasureUnit::getKilobit();
2771     measureUnit.adoptInstead(MeasureUnit::createKilobyte(status));
2772     measureUnitValue = MeasureUnit::getKilobyte();
2773     measureUnit.adoptInstead(MeasureUnit::createMegabit(status));
2774     measureUnitValue = MeasureUnit::getMegabit();
2775     measureUnit.adoptInstead(MeasureUnit::createMegabyte(status));
2776     measureUnitValue = MeasureUnit::getMegabyte();
2777     measureUnit.adoptInstead(MeasureUnit::createPetabyte(status));
2778     measureUnitValue = MeasureUnit::getPetabyte();
2779     measureUnit.adoptInstead(MeasureUnit::createTerabit(status));
2780     measureUnitValue = MeasureUnit::getTerabit();
2781     measureUnit.adoptInstead(MeasureUnit::createTerabyte(status));
2782     measureUnitValue = MeasureUnit::getTerabyte();
2783     measureUnit.adoptInstead(MeasureUnit::createCentury(status));
2784     measureUnitValue = MeasureUnit::getCentury();
2785     measureUnit.adoptInstead(MeasureUnit::createDay(status));
2786     measureUnitValue = MeasureUnit::getDay();
2787     measureUnit.adoptInstead(MeasureUnit::createDayPerson(status));
2788     measureUnitValue = MeasureUnit::getDayPerson();
2789     measureUnit.adoptInstead(MeasureUnit::createDecade(status));
2790     measureUnitValue = MeasureUnit::getDecade();
2791     measureUnit.adoptInstead(MeasureUnit::createHour(status));
2792     measureUnitValue = MeasureUnit::getHour();
2793     measureUnit.adoptInstead(MeasureUnit::createMicrosecond(status));
2794     measureUnitValue = MeasureUnit::getMicrosecond();
2795     measureUnit.adoptInstead(MeasureUnit::createMillisecond(status));
2796     measureUnitValue = MeasureUnit::getMillisecond();
2797     measureUnit.adoptInstead(MeasureUnit::createMinute(status));
2798     measureUnitValue = MeasureUnit::getMinute();
2799     measureUnit.adoptInstead(MeasureUnit::createMonth(status));
2800     measureUnitValue = MeasureUnit::getMonth();
2801     measureUnit.adoptInstead(MeasureUnit::createMonthPerson(status));
2802     measureUnitValue = MeasureUnit::getMonthPerson();
2803     measureUnit.adoptInstead(MeasureUnit::createNanosecond(status));
2804     measureUnitValue = MeasureUnit::getNanosecond();
2805     measureUnit.adoptInstead(MeasureUnit::createSecond(status));
2806     measureUnitValue = MeasureUnit::getSecond();
2807     measureUnit.adoptInstead(MeasureUnit::createWeek(status));
2808     measureUnitValue = MeasureUnit::getWeek();
2809     measureUnit.adoptInstead(MeasureUnit::createWeekPerson(status));
2810     measureUnitValue = MeasureUnit::getWeekPerson();
2811     measureUnit.adoptInstead(MeasureUnit::createYear(status));
2812     measureUnitValue = MeasureUnit::getYear();
2813     measureUnit.adoptInstead(MeasureUnit::createYearPerson(status));
2814     measureUnitValue = MeasureUnit::getYearPerson();
2815     measureUnit.adoptInstead(MeasureUnit::createAmpere(status));
2816     measureUnitValue = MeasureUnit::getAmpere();
2817     measureUnit.adoptInstead(MeasureUnit::createMilliampere(status));
2818     measureUnitValue = MeasureUnit::getMilliampere();
2819     measureUnit.adoptInstead(MeasureUnit::createOhm(status));
2820     measureUnitValue = MeasureUnit::getOhm();
2821     measureUnit.adoptInstead(MeasureUnit::createVolt(status));
2822     measureUnitValue = MeasureUnit::getVolt();
2823     measureUnit.adoptInstead(MeasureUnit::createBritishThermalUnit(status));
2824     measureUnitValue = MeasureUnit::getBritishThermalUnit();
2825     measureUnit.adoptInstead(MeasureUnit::createCalorie(status));
2826     measureUnitValue = MeasureUnit::getCalorie();
2827     measureUnit.adoptInstead(MeasureUnit::createElectronvolt(status));
2828     measureUnitValue = MeasureUnit::getElectronvolt();
2829     measureUnit.adoptInstead(MeasureUnit::createFoodcalorie(status));
2830     measureUnitValue = MeasureUnit::getFoodcalorie();
2831     measureUnit.adoptInstead(MeasureUnit::createJoule(status));
2832     measureUnitValue = MeasureUnit::getJoule();
2833     measureUnit.adoptInstead(MeasureUnit::createKilocalorie(status));
2834     measureUnitValue = MeasureUnit::getKilocalorie();
2835     measureUnit.adoptInstead(MeasureUnit::createKilojoule(status));
2836     measureUnitValue = MeasureUnit::getKilojoule();
2837     measureUnit.adoptInstead(MeasureUnit::createKilowattHour(status));
2838     measureUnitValue = MeasureUnit::getKilowattHour();
2839     measureUnit.adoptInstead(MeasureUnit::createThermUs(status));
2840     measureUnitValue = MeasureUnit::getThermUs();
2841     measureUnit.adoptInstead(MeasureUnit::createKilowattHourPer100Kilometer(status));
2842     measureUnitValue = MeasureUnit::getKilowattHourPer100Kilometer();
2843     measureUnit.adoptInstead(MeasureUnit::createNewton(status));
2844     measureUnitValue = MeasureUnit::getNewton();
2845     measureUnit.adoptInstead(MeasureUnit::createPoundForce(status));
2846     measureUnitValue = MeasureUnit::getPoundForce();
2847     measureUnit.adoptInstead(MeasureUnit::createGigahertz(status));
2848     measureUnitValue = MeasureUnit::getGigahertz();
2849     measureUnit.adoptInstead(MeasureUnit::createHertz(status));
2850     measureUnitValue = MeasureUnit::getHertz();
2851     measureUnit.adoptInstead(MeasureUnit::createKilohertz(status));
2852     measureUnitValue = MeasureUnit::getKilohertz();
2853     measureUnit.adoptInstead(MeasureUnit::createMegahertz(status));
2854     measureUnitValue = MeasureUnit::getMegahertz();
2855     measureUnit.adoptInstead(MeasureUnit::createDot(status));
2856     measureUnitValue = MeasureUnit::getDot();
2857     measureUnit.adoptInstead(MeasureUnit::createDotPerCentimeter(status));
2858     measureUnitValue = MeasureUnit::getDotPerCentimeter();
2859     measureUnit.adoptInstead(MeasureUnit::createDotPerInch(status));
2860     measureUnitValue = MeasureUnit::getDotPerInch();
2861     measureUnit.adoptInstead(MeasureUnit::createEm(status));
2862     measureUnitValue = MeasureUnit::getEm();
2863     measureUnit.adoptInstead(MeasureUnit::createMegapixel(status));
2864     measureUnitValue = MeasureUnit::getMegapixel();
2865     measureUnit.adoptInstead(MeasureUnit::createPixel(status));
2866     measureUnitValue = MeasureUnit::getPixel();
2867     measureUnit.adoptInstead(MeasureUnit::createPixelPerCentimeter(status));
2868     measureUnitValue = MeasureUnit::getPixelPerCentimeter();
2869     measureUnit.adoptInstead(MeasureUnit::createPixelPerInch(status));
2870     measureUnitValue = MeasureUnit::getPixelPerInch();
2871     measureUnit.adoptInstead(MeasureUnit::createAstronomicalUnit(status));
2872     measureUnitValue = MeasureUnit::getAstronomicalUnit();
2873     measureUnit.adoptInstead(MeasureUnit::createCentimeter(status));
2874     measureUnitValue = MeasureUnit::getCentimeter();
2875     measureUnit.adoptInstead(MeasureUnit::createDecimeter(status));
2876     measureUnitValue = MeasureUnit::getDecimeter();
2877     measureUnit.adoptInstead(MeasureUnit::createEarthRadius(status));
2878     measureUnitValue = MeasureUnit::getEarthRadius();
2879     measureUnit.adoptInstead(MeasureUnit::createFathom(status));
2880     measureUnitValue = MeasureUnit::getFathom();
2881     measureUnit.adoptInstead(MeasureUnit::createFoot(status));
2882     measureUnitValue = MeasureUnit::getFoot();
2883     measureUnit.adoptInstead(MeasureUnit::createFurlong(status));
2884     measureUnitValue = MeasureUnit::getFurlong();
2885     measureUnit.adoptInstead(MeasureUnit::createInch(status));
2886     measureUnitValue = MeasureUnit::getInch();
2887     measureUnit.adoptInstead(MeasureUnit::createKilometer(status));
2888     measureUnitValue = MeasureUnit::getKilometer();
2889     measureUnit.adoptInstead(MeasureUnit::createLightYear(status));
2890     measureUnitValue = MeasureUnit::getLightYear();
2891     measureUnit.adoptInstead(MeasureUnit::createMeter(status));
2892     measureUnitValue = MeasureUnit::getMeter();
2893     measureUnit.adoptInstead(MeasureUnit::createMicrometer(status));
2894     measureUnitValue = MeasureUnit::getMicrometer();
2895     measureUnit.adoptInstead(MeasureUnit::createMile(status));
2896     measureUnitValue = MeasureUnit::getMile();
2897     measureUnit.adoptInstead(MeasureUnit::createMileScandinavian(status));
2898     measureUnitValue = MeasureUnit::getMileScandinavian();
2899     measureUnit.adoptInstead(MeasureUnit::createMillimeter(status));
2900     measureUnitValue = MeasureUnit::getMillimeter();
2901     measureUnit.adoptInstead(MeasureUnit::createNanometer(status));
2902     measureUnitValue = MeasureUnit::getNanometer();
2903     measureUnit.adoptInstead(MeasureUnit::createNauticalMile(status));
2904     measureUnitValue = MeasureUnit::getNauticalMile();
2905     measureUnit.adoptInstead(MeasureUnit::createParsec(status));
2906     measureUnitValue = MeasureUnit::getParsec();
2907     measureUnit.adoptInstead(MeasureUnit::createPicometer(status));
2908     measureUnitValue = MeasureUnit::getPicometer();
2909     measureUnit.adoptInstead(MeasureUnit::createPoint(status));
2910     measureUnitValue = MeasureUnit::getPoint();
2911     measureUnit.adoptInstead(MeasureUnit::createSolarRadius(status));
2912     measureUnitValue = MeasureUnit::getSolarRadius();
2913     measureUnit.adoptInstead(MeasureUnit::createYard(status));
2914     measureUnitValue = MeasureUnit::getYard();
2915     measureUnit.adoptInstead(MeasureUnit::createCandela(status));
2916     measureUnitValue = MeasureUnit::getCandela();
2917     measureUnit.adoptInstead(MeasureUnit::createLumen(status));
2918     measureUnitValue = MeasureUnit::getLumen();
2919     measureUnit.adoptInstead(MeasureUnit::createLux(status));
2920     measureUnitValue = MeasureUnit::getLux();
2921     measureUnit.adoptInstead(MeasureUnit::createSolarLuminosity(status));
2922     measureUnitValue = MeasureUnit::getSolarLuminosity();
2923     measureUnit.adoptInstead(MeasureUnit::createCarat(status));
2924     measureUnitValue = MeasureUnit::getCarat();
2925     measureUnit.adoptInstead(MeasureUnit::createDalton(status));
2926     measureUnitValue = MeasureUnit::getDalton();
2927     measureUnit.adoptInstead(MeasureUnit::createEarthMass(status));
2928     measureUnitValue = MeasureUnit::getEarthMass();
2929     measureUnit.adoptInstead(MeasureUnit::createGrain(status));
2930     measureUnitValue = MeasureUnit::getGrain();
2931     measureUnit.adoptInstead(MeasureUnit::createGram(status));
2932     measureUnitValue = MeasureUnit::getGram();
2933     measureUnit.adoptInstead(MeasureUnit::createKilogram(status));
2934     measureUnitValue = MeasureUnit::getKilogram();
2935     measureUnit.adoptInstead(MeasureUnit::createMetricTon(status));
2936     measureUnitValue = MeasureUnit::getMetricTon();
2937     measureUnit.adoptInstead(MeasureUnit::createMicrogram(status));
2938     measureUnitValue = MeasureUnit::getMicrogram();
2939     measureUnit.adoptInstead(MeasureUnit::createMilligram(status));
2940     measureUnitValue = MeasureUnit::getMilligram();
2941     measureUnit.adoptInstead(MeasureUnit::createOunce(status));
2942     measureUnitValue = MeasureUnit::getOunce();
2943     measureUnit.adoptInstead(MeasureUnit::createOunceTroy(status));
2944     measureUnitValue = MeasureUnit::getOunceTroy();
2945     measureUnit.adoptInstead(MeasureUnit::createPound(status));
2946     measureUnitValue = MeasureUnit::getPound();
2947     measureUnit.adoptInstead(MeasureUnit::createSolarMass(status));
2948     measureUnitValue = MeasureUnit::getSolarMass();
2949     measureUnit.adoptInstead(MeasureUnit::createStone(status));
2950     measureUnitValue = MeasureUnit::getStone();
2951     measureUnit.adoptInstead(MeasureUnit::createTon(status));
2952     measureUnitValue = MeasureUnit::getTon();
2953     measureUnit.adoptInstead(MeasureUnit::createGigawatt(status));
2954     measureUnitValue = MeasureUnit::getGigawatt();
2955     measureUnit.adoptInstead(MeasureUnit::createHorsepower(status));
2956     measureUnitValue = MeasureUnit::getHorsepower();
2957     measureUnit.adoptInstead(MeasureUnit::createKilowatt(status));
2958     measureUnitValue = MeasureUnit::getKilowatt();
2959     measureUnit.adoptInstead(MeasureUnit::createMegawatt(status));
2960     measureUnitValue = MeasureUnit::getMegawatt();
2961     measureUnit.adoptInstead(MeasureUnit::createMilliwatt(status));
2962     measureUnitValue = MeasureUnit::getMilliwatt();
2963     measureUnit.adoptInstead(MeasureUnit::createWatt(status));
2964     measureUnitValue = MeasureUnit::getWatt();
2965     measureUnit.adoptInstead(MeasureUnit::createAtmosphere(status));
2966     measureUnitValue = MeasureUnit::getAtmosphere();
2967     measureUnit.adoptInstead(MeasureUnit::createBar(status));
2968     measureUnitValue = MeasureUnit::getBar();
2969     measureUnit.adoptInstead(MeasureUnit::createHectopascal(status));
2970     measureUnitValue = MeasureUnit::getHectopascal();
2971     measureUnit.adoptInstead(MeasureUnit::createInchHg(status));
2972     measureUnitValue = MeasureUnit::getInchHg();
2973     measureUnit.adoptInstead(MeasureUnit::createKilopascal(status));
2974     measureUnitValue = MeasureUnit::getKilopascal();
2975     measureUnit.adoptInstead(MeasureUnit::createMegapascal(status));
2976     measureUnitValue = MeasureUnit::getMegapascal();
2977     measureUnit.adoptInstead(MeasureUnit::createMillibar(status));
2978     measureUnitValue = MeasureUnit::getMillibar();
2979     measureUnit.adoptInstead(MeasureUnit::createMillimeterOfMercury(status));
2980     measureUnitValue = MeasureUnit::getMillimeterOfMercury();
2981     measureUnit.adoptInstead(MeasureUnit::createPascal(status));
2982     measureUnitValue = MeasureUnit::getPascal();
2983     measureUnit.adoptInstead(MeasureUnit::createPoundPerSquareInch(status));
2984     measureUnitValue = MeasureUnit::getPoundPerSquareInch();
2985     measureUnit.adoptInstead(MeasureUnit::createKilometerPerHour(status));
2986     measureUnitValue = MeasureUnit::getKilometerPerHour();
2987     measureUnit.adoptInstead(MeasureUnit::createKnot(status));
2988     measureUnitValue = MeasureUnit::getKnot();
2989     measureUnit.adoptInstead(MeasureUnit::createMeterPerSecond(status));
2990     measureUnitValue = MeasureUnit::getMeterPerSecond();
2991     measureUnit.adoptInstead(MeasureUnit::createMilePerHour(status));
2992     measureUnitValue = MeasureUnit::getMilePerHour();
2993     measureUnit.adoptInstead(MeasureUnit::createCelsius(status));
2994     measureUnitValue = MeasureUnit::getCelsius();
2995     measureUnit.adoptInstead(MeasureUnit::createFahrenheit(status));
2996     measureUnitValue = MeasureUnit::getFahrenheit();
2997     measureUnit.adoptInstead(MeasureUnit::createGenericTemperature(status));
2998     measureUnitValue = MeasureUnit::getGenericTemperature();
2999     measureUnit.adoptInstead(MeasureUnit::createKelvin(status));
3000     measureUnitValue = MeasureUnit::getKelvin();
3001     measureUnit.adoptInstead(MeasureUnit::createNewtonMeter(status));
3002     measureUnitValue = MeasureUnit::getNewtonMeter();
3003     measureUnit.adoptInstead(MeasureUnit::createPoundFoot(status));
3004     measureUnitValue = MeasureUnit::getPoundFoot();
3005     measureUnit.adoptInstead(MeasureUnit::createAcreFoot(status));
3006     measureUnitValue = MeasureUnit::getAcreFoot();
3007     measureUnit.adoptInstead(MeasureUnit::createBarrel(status));
3008     measureUnitValue = MeasureUnit::getBarrel();
3009     measureUnit.adoptInstead(MeasureUnit::createBushel(status));
3010     measureUnitValue = MeasureUnit::getBushel();
3011     measureUnit.adoptInstead(MeasureUnit::createCentiliter(status));
3012     measureUnitValue = MeasureUnit::getCentiliter();
3013     measureUnit.adoptInstead(MeasureUnit::createCubicCentimeter(status));
3014     measureUnitValue = MeasureUnit::getCubicCentimeter();
3015     measureUnit.adoptInstead(MeasureUnit::createCubicFoot(status));
3016     measureUnitValue = MeasureUnit::getCubicFoot();
3017     measureUnit.adoptInstead(MeasureUnit::createCubicInch(status));
3018     measureUnitValue = MeasureUnit::getCubicInch();
3019     measureUnit.adoptInstead(MeasureUnit::createCubicKilometer(status));
3020     measureUnitValue = MeasureUnit::getCubicKilometer();
3021     measureUnit.adoptInstead(MeasureUnit::createCubicMeter(status));
3022     measureUnitValue = MeasureUnit::getCubicMeter();
3023     measureUnit.adoptInstead(MeasureUnit::createCubicMile(status));
3024     measureUnitValue = MeasureUnit::getCubicMile();
3025     measureUnit.adoptInstead(MeasureUnit::createCubicYard(status));
3026     measureUnitValue = MeasureUnit::getCubicYard();
3027     measureUnit.adoptInstead(MeasureUnit::createCup(status));
3028     measureUnitValue = MeasureUnit::getCup();
3029     measureUnit.adoptInstead(MeasureUnit::createCupMetric(status));
3030     measureUnitValue = MeasureUnit::getCupMetric();
3031     measureUnit.adoptInstead(MeasureUnit::createDeciliter(status));
3032     measureUnitValue = MeasureUnit::getDeciliter();
3033     measureUnit.adoptInstead(MeasureUnit::createDessertSpoon(status));
3034     measureUnitValue = MeasureUnit::getDessertSpoon();
3035     measureUnit.adoptInstead(MeasureUnit::createDessertSpoonImperial(status));
3036     measureUnitValue = MeasureUnit::getDessertSpoonImperial();
3037     measureUnit.adoptInstead(MeasureUnit::createDram(status));
3038     measureUnitValue = MeasureUnit::getDram();
3039     measureUnit.adoptInstead(MeasureUnit::createDrop(status));
3040     measureUnitValue = MeasureUnit::getDrop();
3041     measureUnit.adoptInstead(MeasureUnit::createFluidOunce(status));
3042     measureUnitValue = MeasureUnit::getFluidOunce();
3043     measureUnit.adoptInstead(MeasureUnit::createFluidOunceImperial(status));
3044     measureUnitValue = MeasureUnit::getFluidOunceImperial();
3045     measureUnit.adoptInstead(MeasureUnit::createGallon(status));
3046     measureUnitValue = MeasureUnit::getGallon();
3047     measureUnit.adoptInstead(MeasureUnit::createGallonImperial(status));
3048     measureUnitValue = MeasureUnit::getGallonImperial();
3049     measureUnit.adoptInstead(MeasureUnit::createHectoliter(status));
3050     measureUnitValue = MeasureUnit::getHectoliter();
3051     measureUnit.adoptInstead(MeasureUnit::createJigger(status));
3052     measureUnitValue = MeasureUnit::getJigger();
3053     measureUnit.adoptInstead(MeasureUnit::createLiter(status));
3054     measureUnitValue = MeasureUnit::getLiter();
3055     measureUnit.adoptInstead(MeasureUnit::createMegaliter(status));
3056     measureUnitValue = MeasureUnit::getMegaliter();
3057     measureUnit.adoptInstead(MeasureUnit::createMilliliter(status));
3058     measureUnitValue = MeasureUnit::getMilliliter();
3059     measureUnit.adoptInstead(MeasureUnit::createPinch(status));
3060     measureUnitValue = MeasureUnit::getPinch();
3061     measureUnit.adoptInstead(MeasureUnit::createPint(status));
3062     measureUnitValue = MeasureUnit::getPint();
3063     measureUnit.adoptInstead(MeasureUnit::createPintMetric(status));
3064     measureUnitValue = MeasureUnit::getPintMetric();
3065     measureUnit.adoptInstead(MeasureUnit::createQuart(status));
3066     measureUnitValue = MeasureUnit::getQuart();
3067     measureUnit.adoptInstead(MeasureUnit::createQuartImperial(status));
3068     measureUnitValue = MeasureUnit::getQuartImperial();
3069     measureUnit.adoptInstead(MeasureUnit::createTablespoon(status));
3070     measureUnitValue = MeasureUnit::getTablespoon();
3071     measureUnit.adoptInstead(MeasureUnit::createTeaspoon(status));
3072     measureUnitValue = MeasureUnit::getTeaspoon();
3073     assertSuccess("", status);
3074 }
3075 
3076 // TestCompatible71 would be identical to TestCompatible70,
3077 // no need to add it
3078 
TestCompatible72()3079 void MeasureFormatTest::TestCompatible72() {
3080     UErrorCode status = U_ZERO_ERROR;
3081     LocalPointer<MeasureUnit> measureUnit;
3082     MeasureUnit measureUnitValue;
3083     measureUnit.adoptInstead(MeasureUnit::createGForce(status));
3084     measureUnitValue = MeasureUnit::getGForce();
3085     measureUnit.adoptInstead(MeasureUnit::createMeterPerSecondSquared(status));
3086     measureUnitValue = MeasureUnit::getMeterPerSecondSquared();
3087     measureUnit.adoptInstead(MeasureUnit::createArcMinute(status));
3088     measureUnitValue = MeasureUnit::getArcMinute();
3089     measureUnit.adoptInstead(MeasureUnit::createArcSecond(status));
3090     measureUnitValue = MeasureUnit::getArcSecond();
3091     measureUnit.adoptInstead(MeasureUnit::createDegree(status));
3092     measureUnitValue = MeasureUnit::getDegree();
3093     measureUnit.adoptInstead(MeasureUnit::createRadian(status));
3094     measureUnitValue = MeasureUnit::getRadian();
3095     measureUnit.adoptInstead(MeasureUnit::createRevolutionAngle(status));
3096     measureUnitValue = MeasureUnit::getRevolutionAngle();
3097     measureUnit.adoptInstead(MeasureUnit::createAcre(status));
3098     measureUnitValue = MeasureUnit::getAcre();
3099     measureUnit.adoptInstead(MeasureUnit::createDunam(status));
3100     measureUnitValue = MeasureUnit::getDunam();
3101     measureUnit.adoptInstead(MeasureUnit::createHectare(status));
3102     measureUnitValue = MeasureUnit::getHectare();
3103     measureUnit.adoptInstead(MeasureUnit::createSquareCentimeter(status));
3104     measureUnitValue = MeasureUnit::getSquareCentimeter();
3105     measureUnit.adoptInstead(MeasureUnit::createSquareFoot(status));
3106     measureUnitValue = MeasureUnit::getSquareFoot();
3107     measureUnit.adoptInstead(MeasureUnit::createSquareInch(status));
3108     measureUnitValue = MeasureUnit::getSquareInch();
3109     measureUnit.adoptInstead(MeasureUnit::createSquareKilometer(status));
3110     measureUnitValue = MeasureUnit::getSquareKilometer();
3111     measureUnit.adoptInstead(MeasureUnit::createSquareMeter(status));
3112     measureUnitValue = MeasureUnit::getSquareMeter();
3113     measureUnit.adoptInstead(MeasureUnit::createSquareMile(status));
3114     measureUnitValue = MeasureUnit::getSquareMile();
3115     measureUnit.adoptInstead(MeasureUnit::createSquareYard(status));
3116     measureUnitValue = MeasureUnit::getSquareYard();
3117     measureUnit.adoptInstead(MeasureUnit::createItem(status));
3118     measureUnitValue = MeasureUnit::getItem();
3119     measureUnit.adoptInstead(MeasureUnit::createKarat(status));
3120     measureUnitValue = MeasureUnit::getKarat();
3121     measureUnit.adoptInstead(MeasureUnit::createMilligramOfglucosePerDeciliter(status));
3122     measureUnitValue = MeasureUnit::getMilligramOfglucosePerDeciliter();
3123     measureUnit.adoptInstead(MeasureUnit::createMilligramPerDeciliter(status));
3124     measureUnitValue = MeasureUnit::getMilligramPerDeciliter();
3125     measureUnit.adoptInstead(MeasureUnit::createMillimolePerLiter(status));
3126     measureUnitValue = MeasureUnit::getMillimolePerLiter();
3127     measureUnit.adoptInstead(MeasureUnit::createMole(status));
3128     measureUnitValue = MeasureUnit::getMole();
3129     measureUnit.adoptInstead(MeasureUnit::createPercent(status));
3130     measureUnitValue = MeasureUnit::getPercent();
3131     measureUnit.adoptInstead(MeasureUnit::createPermille(status));
3132     measureUnitValue = MeasureUnit::getPermille();
3133     measureUnit.adoptInstead(MeasureUnit::createPartPerMillion(status));
3134     measureUnitValue = MeasureUnit::getPartPerMillion();
3135     measureUnit.adoptInstead(MeasureUnit::createPermyriad(status));
3136     measureUnitValue = MeasureUnit::getPermyriad();
3137     measureUnit.adoptInstead(MeasureUnit::createLiterPer100Kilometers(status));
3138     measureUnitValue = MeasureUnit::getLiterPer100Kilometers();
3139     measureUnit.adoptInstead(MeasureUnit::createLiterPerKilometer(status));
3140     measureUnitValue = MeasureUnit::getLiterPerKilometer();
3141     measureUnit.adoptInstead(MeasureUnit::createMilePerGallon(status));
3142     measureUnitValue = MeasureUnit::getMilePerGallon();
3143     measureUnit.adoptInstead(MeasureUnit::createMilePerGallonImperial(status));
3144     measureUnitValue = MeasureUnit::getMilePerGallonImperial();
3145     measureUnit.adoptInstead(MeasureUnit::createBit(status));
3146     measureUnitValue = MeasureUnit::getBit();
3147     measureUnit.adoptInstead(MeasureUnit::createByte(status));
3148     measureUnitValue = MeasureUnit::getByte();
3149     measureUnit.adoptInstead(MeasureUnit::createGigabit(status));
3150     measureUnitValue = MeasureUnit::getGigabit();
3151     measureUnit.adoptInstead(MeasureUnit::createGigabyte(status));
3152     measureUnitValue = MeasureUnit::getGigabyte();
3153     measureUnit.adoptInstead(MeasureUnit::createKilobit(status));
3154     measureUnitValue = MeasureUnit::getKilobit();
3155     measureUnit.adoptInstead(MeasureUnit::createKilobyte(status));
3156     measureUnitValue = MeasureUnit::getKilobyte();
3157     measureUnit.adoptInstead(MeasureUnit::createMegabit(status));
3158     measureUnitValue = MeasureUnit::getMegabit();
3159     measureUnit.adoptInstead(MeasureUnit::createMegabyte(status));
3160     measureUnitValue = MeasureUnit::getMegabyte();
3161     measureUnit.adoptInstead(MeasureUnit::createPetabyte(status));
3162     measureUnitValue = MeasureUnit::getPetabyte();
3163     measureUnit.adoptInstead(MeasureUnit::createTerabit(status));
3164     measureUnitValue = MeasureUnit::getTerabit();
3165     measureUnit.adoptInstead(MeasureUnit::createTerabyte(status));
3166     measureUnitValue = MeasureUnit::getTerabyte();
3167     measureUnit.adoptInstead(MeasureUnit::createCentury(status));
3168     measureUnitValue = MeasureUnit::getCentury();
3169     measureUnit.adoptInstead(MeasureUnit::createDay(status));
3170     measureUnitValue = MeasureUnit::getDay();
3171     measureUnit.adoptInstead(MeasureUnit::createDayPerson(status));
3172     measureUnitValue = MeasureUnit::getDayPerson();
3173     measureUnit.adoptInstead(MeasureUnit::createDecade(status));
3174     measureUnitValue = MeasureUnit::getDecade();
3175     measureUnit.adoptInstead(MeasureUnit::createHour(status));
3176     measureUnitValue = MeasureUnit::getHour();
3177     measureUnit.adoptInstead(MeasureUnit::createMicrosecond(status));
3178     measureUnitValue = MeasureUnit::getMicrosecond();
3179     measureUnit.adoptInstead(MeasureUnit::createMillisecond(status));
3180     measureUnitValue = MeasureUnit::getMillisecond();
3181     measureUnit.adoptInstead(MeasureUnit::createMinute(status));
3182     measureUnitValue = MeasureUnit::getMinute();
3183     measureUnit.adoptInstead(MeasureUnit::createMonth(status));
3184     measureUnitValue = MeasureUnit::getMonth();
3185     measureUnit.adoptInstead(MeasureUnit::createMonthPerson(status));
3186     measureUnitValue = MeasureUnit::getMonthPerson();
3187     measureUnit.adoptInstead(MeasureUnit::createNanosecond(status));
3188     measureUnitValue = MeasureUnit::getNanosecond();
3189     measureUnit.adoptInstead(MeasureUnit::createQuarter(status));
3190     measureUnitValue = MeasureUnit::getQuarter();
3191     measureUnit.adoptInstead(MeasureUnit::createSecond(status));
3192     measureUnitValue = MeasureUnit::getSecond();
3193     measureUnit.adoptInstead(MeasureUnit::createWeek(status));
3194     measureUnitValue = MeasureUnit::getWeek();
3195     measureUnit.adoptInstead(MeasureUnit::createWeekPerson(status));
3196     measureUnitValue = MeasureUnit::getWeekPerson();
3197     measureUnit.adoptInstead(MeasureUnit::createYear(status));
3198     measureUnitValue = MeasureUnit::getYear();
3199     measureUnit.adoptInstead(MeasureUnit::createYearPerson(status));
3200     measureUnitValue = MeasureUnit::getYearPerson();
3201     measureUnit.adoptInstead(MeasureUnit::createAmpere(status));
3202     measureUnitValue = MeasureUnit::getAmpere();
3203     measureUnit.adoptInstead(MeasureUnit::createMilliampere(status));
3204     measureUnitValue = MeasureUnit::getMilliampere();
3205     measureUnit.adoptInstead(MeasureUnit::createOhm(status));
3206     measureUnitValue = MeasureUnit::getOhm();
3207     measureUnit.adoptInstead(MeasureUnit::createVolt(status));
3208     measureUnitValue = MeasureUnit::getVolt();
3209     measureUnit.adoptInstead(MeasureUnit::createBritishThermalUnit(status));
3210     measureUnitValue = MeasureUnit::getBritishThermalUnit();
3211     measureUnit.adoptInstead(MeasureUnit::createCalorie(status));
3212     measureUnitValue = MeasureUnit::getCalorie();
3213     measureUnit.adoptInstead(MeasureUnit::createElectronvolt(status));
3214     measureUnitValue = MeasureUnit::getElectronvolt();
3215     measureUnit.adoptInstead(MeasureUnit::createFoodcalorie(status));
3216     measureUnitValue = MeasureUnit::getFoodcalorie();
3217     measureUnit.adoptInstead(MeasureUnit::createJoule(status));
3218     measureUnitValue = MeasureUnit::getJoule();
3219     measureUnit.adoptInstead(MeasureUnit::createKilocalorie(status));
3220     measureUnitValue = MeasureUnit::getKilocalorie();
3221     measureUnit.adoptInstead(MeasureUnit::createKilojoule(status));
3222     measureUnitValue = MeasureUnit::getKilojoule();
3223     measureUnit.adoptInstead(MeasureUnit::createKilowattHour(status));
3224     measureUnitValue = MeasureUnit::getKilowattHour();
3225     measureUnit.adoptInstead(MeasureUnit::createThermUs(status));
3226     measureUnitValue = MeasureUnit::getThermUs();
3227     measureUnit.adoptInstead(MeasureUnit::createKilowattHourPer100Kilometer(status));
3228     measureUnitValue = MeasureUnit::getKilowattHourPer100Kilometer();
3229     measureUnit.adoptInstead(MeasureUnit::createNewton(status));
3230     measureUnitValue = MeasureUnit::getNewton();
3231     measureUnit.adoptInstead(MeasureUnit::createPoundForce(status));
3232     measureUnitValue = MeasureUnit::getPoundForce();
3233     measureUnit.adoptInstead(MeasureUnit::createGigahertz(status));
3234     measureUnitValue = MeasureUnit::getGigahertz();
3235     measureUnit.adoptInstead(MeasureUnit::createHertz(status));
3236     measureUnitValue = MeasureUnit::getHertz();
3237     measureUnit.adoptInstead(MeasureUnit::createKilohertz(status));
3238     measureUnitValue = MeasureUnit::getKilohertz();
3239     measureUnit.adoptInstead(MeasureUnit::createMegahertz(status));
3240     measureUnitValue = MeasureUnit::getMegahertz();
3241     measureUnit.adoptInstead(MeasureUnit::createDot(status));
3242     measureUnitValue = MeasureUnit::getDot();
3243     measureUnit.adoptInstead(MeasureUnit::createDotPerCentimeter(status));
3244     measureUnitValue = MeasureUnit::getDotPerCentimeter();
3245     measureUnit.adoptInstead(MeasureUnit::createDotPerInch(status));
3246     measureUnitValue = MeasureUnit::getDotPerInch();
3247     measureUnit.adoptInstead(MeasureUnit::createEm(status));
3248     measureUnitValue = MeasureUnit::getEm();
3249     measureUnit.adoptInstead(MeasureUnit::createMegapixel(status));
3250     measureUnitValue = MeasureUnit::getMegapixel();
3251     measureUnit.adoptInstead(MeasureUnit::createPixel(status));
3252     measureUnitValue = MeasureUnit::getPixel();
3253     measureUnit.adoptInstead(MeasureUnit::createPixelPerCentimeter(status));
3254     measureUnitValue = MeasureUnit::getPixelPerCentimeter();
3255     measureUnit.adoptInstead(MeasureUnit::createPixelPerInch(status));
3256     measureUnitValue = MeasureUnit::getPixelPerInch();
3257     measureUnit.adoptInstead(MeasureUnit::createAstronomicalUnit(status));
3258     measureUnitValue = MeasureUnit::getAstronomicalUnit();
3259     measureUnit.adoptInstead(MeasureUnit::createCentimeter(status));
3260     measureUnitValue = MeasureUnit::getCentimeter();
3261     measureUnit.adoptInstead(MeasureUnit::createDecimeter(status));
3262     measureUnitValue = MeasureUnit::getDecimeter();
3263     measureUnit.adoptInstead(MeasureUnit::createEarthRadius(status));
3264     measureUnitValue = MeasureUnit::getEarthRadius();
3265     measureUnit.adoptInstead(MeasureUnit::createFathom(status));
3266     measureUnitValue = MeasureUnit::getFathom();
3267     measureUnit.adoptInstead(MeasureUnit::createFoot(status));
3268     measureUnitValue = MeasureUnit::getFoot();
3269     measureUnit.adoptInstead(MeasureUnit::createFurlong(status));
3270     measureUnitValue = MeasureUnit::getFurlong();
3271     measureUnit.adoptInstead(MeasureUnit::createInch(status));
3272     measureUnitValue = MeasureUnit::getInch();
3273     measureUnit.adoptInstead(MeasureUnit::createKilometer(status));
3274     measureUnitValue = MeasureUnit::getKilometer();
3275     measureUnit.adoptInstead(MeasureUnit::createLightYear(status));
3276     measureUnitValue = MeasureUnit::getLightYear();
3277     measureUnit.adoptInstead(MeasureUnit::createMeter(status));
3278     measureUnitValue = MeasureUnit::getMeter();
3279     measureUnit.adoptInstead(MeasureUnit::createMicrometer(status));
3280     measureUnitValue = MeasureUnit::getMicrometer();
3281     measureUnit.adoptInstead(MeasureUnit::createMile(status));
3282     measureUnitValue = MeasureUnit::getMile();
3283     measureUnit.adoptInstead(MeasureUnit::createMileScandinavian(status));
3284     measureUnitValue = MeasureUnit::getMileScandinavian();
3285     measureUnit.adoptInstead(MeasureUnit::createMillimeter(status));
3286     measureUnitValue = MeasureUnit::getMillimeter();
3287     measureUnit.adoptInstead(MeasureUnit::createNanometer(status));
3288     measureUnitValue = MeasureUnit::getNanometer();
3289     measureUnit.adoptInstead(MeasureUnit::createNauticalMile(status));
3290     measureUnitValue = MeasureUnit::getNauticalMile();
3291     measureUnit.adoptInstead(MeasureUnit::createParsec(status));
3292     measureUnitValue = MeasureUnit::getParsec();
3293     measureUnit.adoptInstead(MeasureUnit::createPicometer(status));
3294     measureUnitValue = MeasureUnit::getPicometer();
3295     measureUnit.adoptInstead(MeasureUnit::createPoint(status));
3296     measureUnitValue = MeasureUnit::getPoint();
3297     measureUnit.adoptInstead(MeasureUnit::createSolarRadius(status));
3298     measureUnitValue = MeasureUnit::getSolarRadius();
3299     measureUnit.adoptInstead(MeasureUnit::createYard(status));
3300     measureUnitValue = MeasureUnit::getYard();
3301     measureUnit.adoptInstead(MeasureUnit::createCandela(status));
3302     measureUnitValue = MeasureUnit::getCandela();
3303     measureUnit.adoptInstead(MeasureUnit::createLumen(status));
3304     measureUnitValue = MeasureUnit::getLumen();
3305     measureUnit.adoptInstead(MeasureUnit::createLux(status));
3306     measureUnitValue = MeasureUnit::getLux();
3307     measureUnit.adoptInstead(MeasureUnit::createSolarLuminosity(status));
3308     measureUnitValue = MeasureUnit::getSolarLuminosity();
3309     measureUnit.adoptInstead(MeasureUnit::createCarat(status));
3310     measureUnitValue = MeasureUnit::getCarat();
3311     measureUnit.adoptInstead(MeasureUnit::createDalton(status));
3312     measureUnitValue = MeasureUnit::getDalton();
3313     measureUnit.adoptInstead(MeasureUnit::createEarthMass(status));
3314     measureUnitValue = MeasureUnit::getEarthMass();
3315     measureUnit.adoptInstead(MeasureUnit::createGrain(status));
3316     measureUnitValue = MeasureUnit::getGrain();
3317     measureUnit.adoptInstead(MeasureUnit::createGram(status));
3318     measureUnitValue = MeasureUnit::getGram();
3319     measureUnit.adoptInstead(MeasureUnit::createKilogram(status));
3320     measureUnitValue = MeasureUnit::getKilogram();
3321     measureUnit.adoptInstead(MeasureUnit::createMicrogram(status));
3322     measureUnitValue = MeasureUnit::getMicrogram();
3323     measureUnit.adoptInstead(MeasureUnit::createMilligram(status));
3324     measureUnitValue = MeasureUnit::getMilligram();
3325     measureUnit.adoptInstead(MeasureUnit::createOunce(status));
3326     measureUnitValue = MeasureUnit::getOunce();
3327     measureUnit.adoptInstead(MeasureUnit::createOunceTroy(status));
3328     measureUnitValue = MeasureUnit::getOunceTroy();
3329     measureUnit.adoptInstead(MeasureUnit::createPound(status));
3330     measureUnitValue = MeasureUnit::getPound();
3331     measureUnit.adoptInstead(MeasureUnit::createSolarMass(status));
3332     measureUnitValue = MeasureUnit::getSolarMass();
3333     measureUnit.adoptInstead(MeasureUnit::createStone(status));
3334     measureUnitValue = MeasureUnit::getStone();
3335     measureUnit.adoptInstead(MeasureUnit::createTon(status));
3336     measureUnitValue = MeasureUnit::getTon();
3337     measureUnit.adoptInstead(MeasureUnit::createTonne(status));
3338     measureUnitValue = MeasureUnit::getTonne();
3339     measureUnit.adoptInstead(MeasureUnit::createGigawatt(status));
3340     measureUnitValue = MeasureUnit::getGigawatt();
3341     measureUnit.adoptInstead(MeasureUnit::createHorsepower(status));
3342     measureUnitValue = MeasureUnit::getHorsepower();
3343     measureUnit.adoptInstead(MeasureUnit::createKilowatt(status));
3344     measureUnitValue = MeasureUnit::getKilowatt();
3345     measureUnit.adoptInstead(MeasureUnit::createMegawatt(status));
3346     measureUnitValue = MeasureUnit::getMegawatt();
3347     measureUnit.adoptInstead(MeasureUnit::createMilliwatt(status));
3348     measureUnitValue = MeasureUnit::getMilliwatt();
3349     measureUnit.adoptInstead(MeasureUnit::createWatt(status));
3350     measureUnitValue = MeasureUnit::getWatt();
3351     measureUnit.adoptInstead(MeasureUnit::createAtmosphere(status));
3352     measureUnitValue = MeasureUnit::getAtmosphere();
3353     measureUnit.adoptInstead(MeasureUnit::createBar(status));
3354     measureUnitValue = MeasureUnit::getBar();
3355     measureUnit.adoptInstead(MeasureUnit::createHectopascal(status));
3356     measureUnitValue = MeasureUnit::getHectopascal();
3357     measureUnit.adoptInstead(MeasureUnit::createInchHg(status));
3358     measureUnitValue = MeasureUnit::getInchHg();
3359     measureUnit.adoptInstead(MeasureUnit::createKilopascal(status));
3360     measureUnitValue = MeasureUnit::getKilopascal();
3361     measureUnit.adoptInstead(MeasureUnit::createMegapascal(status));
3362     measureUnitValue = MeasureUnit::getMegapascal();
3363     measureUnit.adoptInstead(MeasureUnit::createMillibar(status));
3364     measureUnitValue = MeasureUnit::getMillibar();
3365     measureUnit.adoptInstead(MeasureUnit::createMillimeterOfMercury(status));
3366     measureUnitValue = MeasureUnit::getMillimeterOfMercury();
3367     measureUnit.adoptInstead(MeasureUnit::createPascal(status));
3368     measureUnitValue = MeasureUnit::getPascal();
3369     measureUnit.adoptInstead(MeasureUnit::createPoundPerSquareInch(status));
3370     measureUnitValue = MeasureUnit::getPoundPerSquareInch();
3371     measureUnit.adoptInstead(MeasureUnit::createKilometerPerHour(status));
3372     measureUnitValue = MeasureUnit::getKilometerPerHour();
3373     measureUnit.adoptInstead(MeasureUnit::createKnot(status));
3374     measureUnitValue = MeasureUnit::getKnot();
3375     measureUnit.adoptInstead(MeasureUnit::createMeterPerSecond(status));
3376     measureUnitValue = MeasureUnit::getMeterPerSecond();
3377     measureUnit.adoptInstead(MeasureUnit::createMilePerHour(status));
3378     measureUnitValue = MeasureUnit::getMilePerHour();
3379     measureUnit.adoptInstead(MeasureUnit::createCelsius(status));
3380     measureUnitValue = MeasureUnit::getCelsius();
3381     measureUnit.adoptInstead(MeasureUnit::createFahrenheit(status));
3382     measureUnitValue = MeasureUnit::getFahrenheit();
3383     measureUnit.adoptInstead(MeasureUnit::createGenericTemperature(status));
3384     measureUnitValue = MeasureUnit::getGenericTemperature();
3385     measureUnit.adoptInstead(MeasureUnit::createKelvin(status));
3386     measureUnitValue = MeasureUnit::getKelvin();
3387     measureUnit.adoptInstead(MeasureUnit::createNewtonMeter(status));
3388     measureUnitValue = MeasureUnit::getNewtonMeter();
3389     measureUnit.adoptInstead(MeasureUnit::createPoundFoot(status));
3390     measureUnitValue = MeasureUnit::getPoundFoot();
3391     measureUnit.adoptInstead(MeasureUnit::createAcreFoot(status));
3392     measureUnitValue = MeasureUnit::getAcreFoot();
3393     measureUnit.adoptInstead(MeasureUnit::createBarrel(status));
3394     measureUnitValue = MeasureUnit::getBarrel();
3395     measureUnit.adoptInstead(MeasureUnit::createBushel(status));
3396     measureUnitValue = MeasureUnit::getBushel();
3397     measureUnit.adoptInstead(MeasureUnit::createCentiliter(status));
3398     measureUnitValue = MeasureUnit::getCentiliter();
3399     measureUnit.adoptInstead(MeasureUnit::createCubicCentimeter(status));
3400     measureUnitValue = MeasureUnit::getCubicCentimeter();
3401     measureUnit.adoptInstead(MeasureUnit::createCubicFoot(status));
3402     measureUnitValue = MeasureUnit::getCubicFoot();
3403     measureUnit.adoptInstead(MeasureUnit::createCubicInch(status));
3404     measureUnitValue = MeasureUnit::getCubicInch();
3405     measureUnit.adoptInstead(MeasureUnit::createCubicKilometer(status));
3406     measureUnitValue = MeasureUnit::getCubicKilometer();
3407     measureUnit.adoptInstead(MeasureUnit::createCubicMeter(status));
3408     measureUnitValue = MeasureUnit::getCubicMeter();
3409     measureUnit.adoptInstead(MeasureUnit::createCubicMile(status));
3410     measureUnitValue = MeasureUnit::getCubicMile();
3411     measureUnit.adoptInstead(MeasureUnit::createCubicYard(status));
3412     measureUnitValue = MeasureUnit::getCubicYard();
3413     measureUnit.adoptInstead(MeasureUnit::createCup(status));
3414     measureUnitValue = MeasureUnit::getCup();
3415     measureUnit.adoptInstead(MeasureUnit::createCupMetric(status));
3416     measureUnitValue = MeasureUnit::getCupMetric();
3417     measureUnit.adoptInstead(MeasureUnit::createDeciliter(status));
3418     measureUnitValue = MeasureUnit::getDeciliter();
3419     measureUnit.adoptInstead(MeasureUnit::createDessertSpoon(status));
3420     measureUnitValue = MeasureUnit::getDessertSpoon();
3421     measureUnit.adoptInstead(MeasureUnit::createDessertSpoonImperial(status));
3422     measureUnitValue = MeasureUnit::getDessertSpoonImperial();
3423     measureUnit.adoptInstead(MeasureUnit::createDram(status));
3424     measureUnitValue = MeasureUnit::getDram();
3425     measureUnit.adoptInstead(MeasureUnit::createDrop(status));
3426     measureUnitValue = MeasureUnit::getDrop();
3427     measureUnit.adoptInstead(MeasureUnit::createFluidOunce(status));
3428     measureUnitValue = MeasureUnit::getFluidOunce();
3429     measureUnit.adoptInstead(MeasureUnit::createFluidOunceImperial(status));
3430     measureUnitValue = MeasureUnit::getFluidOunceImperial();
3431     measureUnit.adoptInstead(MeasureUnit::createGallon(status));
3432     measureUnitValue = MeasureUnit::getGallon();
3433     measureUnit.adoptInstead(MeasureUnit::createGallonImperial(status));
3434     measureUnitValue = MeasureUnit::getGallonImperial();
3435     measureUnit.adoptInstead(MeasureUnit::createHectoliter(status));
3436     measureUnitValue = MeasureUnit::getHectoliter();
3437     measureUnit.adoptInstead(MeasureUnit::createJigger(status));
3438     measureUnitValue = MeasureUnit::getJigger();
3439     measureUnit.adoptInstead(MeasureUnit::createLiter(status));
3440     measureUnitValue = MeasureUnit::getLiter();
3441     measureUnit.adoptInstead(MeasureUnit::createMegaliter(status));
3442     measureUnitValue = MeasureUnit::getMegaliter();
3443     measureUnit.adoptInstead(MeasureUnit::createMilliliter(status));
3444     measureUnitValue = MeasureUnit::getMilliliter();
3445     measureUnit.adoptInstead(MeasureUnit::createPinch(status));
3446     measureUnitValue = MeasureUnit::getPinch();
3447     measureUnit.adoptInstead(MeasureUnit::createPint(status));
3448     measureUnitValue = MeasureUnit::getPint();
3449     measureUnit.adoptInstead(MeasureUnit::createPintMetric(status));
3450     measureUnitValue = MeasureUnit::getPintMetric();
3451     measureUnit.adoptInstead(MeasureUnit::createQuart(status));
3452     measureUnitValue = MeasureUnit::getQuart();
3453     measureUnit.adoptInstead(MeasureUnit::createQuartImperial(status));
3454     measureUnitValue = MeasureUnit::getQuartImperial();
3455     measureUnit.adoptInstead(MeasureUnit::createTablespoon(status));
3456     measureUnitValue = MeasureUnit::getTablespoon();
3457     measureUnit.adoptInstead(MeasureUnit::createTeaspoon(status));
3458     measureUnitValue = MeasureUnit::getTeaspoon();
3459     assertSuccess("", status);
3460 }
3461 
TestCompatible73()3462 void MeasureFormatTest::TestCompatible73() {
3463     UErrorCode status = U_ZERO_ERROR;
3464     LocalPointer<MeasureUnit> measureUnit;
3465     MeasureUnit measureUnitValue;
3466     measureUnit.adoptInstead(MeasureUnit::createGForce(status));
3467     measureUnitValue = MeasureUnit::getGForce();
3468     measureUnit.adoptInstead(MeasureUnit::createMeterPerSecondSquared(status));
3469     measureUnitValue = MeasureUnit::getMeterPerSecondSquared();
3470     measureUnit.adoptInstead(MeasureUnit::createArcMinute(status));
3471     measureUnitValue = MeasureUnit::getArcMinute();
3472     measureUnit.adoptInstead(MeasureUnit::createArcSecond(status));
3473     measureUnitValue = MeasureUnit::getArcSecond();
3474     measureUnit.adoptInstead(MeasureUnit::createDegree(status));
3475     measureUnitValue = MeasureUnit::getDegree();
3476     measureUnit.adoptInstead(MeasureUnit::createRadian(status));
3477     measureUnitValue = MeasureUnit::getRadian();
3478     measureUnit.adoptInstead(MeasureUnit::createRevolutionAngle(status));
3479     measureUnitValue = MeasureUnit::getRevolutionAngle();
3480     measureUnit.adoptInstead(MeasureUnit::createAcre(status));
3481     measureUnitValue = MeasureUnit::getAcre();
3482     measureUnit.adoptInstead(MeasureUnit::createDunam(status));
3483     measureUnitValue = MeasureUnit::getDunam();
3484     measureUnit.adoptInstead(MeasureUnit::createHectare(status));
3485     measureUnitValue = MeasureUnit::getHectare();
3486     measureUnit.adoptInstead(MeasureUnit::createSquareCentimeter(status));
3487     measureUnitValue = MeasureUnit::getSquareCentimeter();
3488     measureUnit.adoptInstead(MeasureUnit::createSquareFoot(status));
3489     measureUnitValue = MeasureUnit::getSquareFoot();
3490     measureUnit.adoptInstead(MeasureUnit::createSquareInch(status));
3491     measureUnitValue = MeasureUnit::getSquareInch();
3492     measureUnit.adoptInstead(MeasureUnit::createSquareKilometer(status));
3493     measureUnitValue = MeasureUnit::getSquareKilometer();
3494     measureUnit.adoptInstead(MeasureUnit::createSquareMeter(status));
3495     measureUnitValue = MeasureUnit::getSquareMeter();
3496     measureUnit.adoptInstead(MeasureUnit::createSquareMile(status));
3497     measureUnitValue = MeasureUnit::getSquareMile();
3498     measureUnit.adoptInstead(MeasureUnit::createSquareYard(status));
3499     measureUnitValue = MeasureUnit::getSquareYard();
3500     measureUnit.adoptInstead(MeasureUnit::createItem(status));
3501     measureUnitValue = MeasureUnit::getItem();
3502     measureUnit.adoptInstead(MeasureUnit::createKarat(status));
3503     measureUnitValue = MeasureUnit::getKarat();
3504     measureUnit.adoptInstead(MeasureUnit::createMilligramOfglucosePerDeciliter(status));
3505     measureUnitValue = MeasureUnit::getMilligramOfglucosePerDeciliter();
3506     measureUnit.adoptInstead(MeasureUnit::createMilligramPerDeciliter(status));
3507     measureUnitValue = MeasureUnit::getMilligramPerDeciliter();
3508     measureUnit.adoptInstead(MeasureUnit::createMillimolePerLiter(status));
3509     measureUnitValue = MeasureUnit::getMillimolePerLiter();
3510     measureUnit.adoptInstead(MeasureUnit::createMole(status));
3511     measureUnitValue = MeasureUnit::getMole();
3512     measureUnit.adoptInstead(MeasureUnit::createPercent(status));
3513     measureUnitValue = MeasureUnit::getPercent();
3514     measureUnit.adoptInstead(MeasureUnit::createPermille(status));
3515     measureUnitValue = MeasureUnit::getPermille();
3516     measureUnit.adoptInstead(MeasureUnit::createPartPerMillion(status));
3517     measureUnitValue = MeasureUnit::getPartPerMillion();
3518     measureUnit.adoptInstead(MeasureUnit::createPermyriad(status));
3519     measureUnitValue = MeasureUnit::getPermyriad();
3520     measureUnit.adoptInstead(MeasureUnit::createLiterPer100Kilometers(status));
3521     measureUnitValue = MeasureUnit::getLiterPer100Kilometers();
3522     measureUnit.adoptInstead(MeasureUnit::createLiterPerKilometer(status));
3523     measureUnitValue = MeasureUnit::getLiterPerKilometer();
3524     measureUnit.adoptInstead(MeasureUnit::createMilePerGallon(status));
3525     measureUnitValue = MeasureUnit::getMilePerGallon();
3526     measureUnit.adoptInstead(MeasureUnit::createMilePerGallonImperial(status));
3527     measureUnitValue = MeasureUnit::getMilePerGallonImperial();
3528     measureUnit.adoptInstead(MeasureUnit::createBit(status));
3529     measureUnitValue = MeasureUnit::getBit();
3530     measureUnit.adoptInstead(MeasureUnit::createByte(status));
3531     measureUnitValue = MeasureUnit::getByte();
3532     measureUnit.adoptInstead(MeasureUnit::createGigabit(status));
3533     measureUnitValue = MeasureUnit::getGigabit();
3534     measureUnit.adoptInstead(MeasureUnit::createGigabyte(status));
3535     measureUnitValue = MeasureUnit::getGigabyte();
3536     measureUnit.adoptInstead(MeasureUnit::createKilobit(status));
3537     measureUnitValue = MeasureUnit::getKilobit();
3538     measureUnit.adoptInstead(MeasureUnit::createKilobyte(status));
3539     measureUnitValue = MeasureUnit::getKilobyte();
3540     measureUnit.adoptInstead(MeasureUnit::createMegabit(status));
3541     measureUnitValue = MeasureUnit::getMegabit();
3542     measureUnit.adoptInstead(MeasureUnit::createMegabyte(status));
3543     measureUnitValue = MeasureUnit::getMegabyte();
3544     measureUnit.adoptInstead(MeasureUnit::createPetabyte(status));
3545     measureUnitValue = MeasureUnit::getPetabyte();
3546     measureUnit.adoptInstead(MeasureUnit::createTerabit(status));
3547     measureUnitValue = MeasureUnit::getTerabit();
3548     measureUnit.adoptInstead(MeasureUnit::createTerabyte(status));
3549     measureUnitValue = MeasureUnit::getTerabyte();
3550     measureUnit.adoptInstead(MeasureUnit::createCentury(status));
3551     measureUnitValue = MeasureUnit::getCentury();
3552     measureUnit.adoptInstead(MeasureUnit::createDay(status));
3553     measureUnitValue = MeasureUnit::getDay();
3554     measureUnit.adoptInstead(MeasureUnit::createDayPerson(status));
3555     measureUnitValue = MeasureUnit::getDayPerson();
3556     measureUnit.adoptInstead(MeasureUnit::createDecade(status));
3557     measureUnitValue = MeasureUnit::getDecade();
3558     measureUnit.adoptInstead(MeasureUnit::createHour(status));
3559     measureUnitValue = MeasureUnit::getHour();
3560     measureUnit.adoptInstead(MeasureUnit::createMicrosecond(status));
3561     measureUnitValue = MeasureUnit::getMicrosecond();
3562     measureUnit.adoptInstead(MeasureUnit::createMillisecond(status));
3563     measureUnitValue = MeasureUnit::getMillisecond();
3564     measureUnit.adoptInstead(MeasureUnit::createMinute(status));
3565     measureUnitValue = MeasureUnit::getMinute();
3566     measureUnit.adoptInstead(MeasureUnit::createMonth(status));
3567     measureUnitValue = MeasureUnit::getMonth();
3568     measureUnit.adoptInstead(MeasureUnit::createMonthPerson(status));
3569     measureUnitValue = MeasureUnit::getMonthPerson();
3570     measureUnit.adoptInstead(MeasureUnit::createNanosecond(status));
3571     measureUnitValue = MeasureUnit::getNanosecond();
3572     measureUnit.adoptInstead(MeasureUnit::createQuarter(status));
3573     measureUnitValue = MeasureUnit::getQuarter();
3574     measureUnit.adoptInstead(MeasureUnit::createSecond(status));
3575     measureUnitValue = MeasureUnit::getSecond();
3576     measureUnit.adoptInstead(MeasureUnit::createWeek(status));
3577     measureUnitValue = MeasureUnit::getWeek();
3578     measureUnit.adoptInstead(MeasureUnit::createWeekPerson(status));
3579     measureUnitValue = MeasureUnit::getWeekPerson();
3580     measureUnit.adoptInstead(MeasureUnit::createYear(status));
3581     measureUnitValue = MeasureUnit::getYear();
3582     measureUnit.adoptInstead(MeasureUnit::createYearPerson(status));
3583     measureUnitValue = MeasureUnit::getYearPerson();
3584     measureUnit.adoptInstead(MeasureUnit::createAmpere(status));
3585     measureUnitValue = MeasureUnit::getAmpere();
3586     measureUnit.adoptInstead(MeasureUnit::createMilliampere(status));
3587     measureUnitValue = MeasureUnit::getMilliampere();
3588     measureUnit.adoptInstead(MeasureUnit::createOhm(status));
3589     measureUnitValue = MeasureUnit::getOhm();
3590     measureUnit.adoptInstead(MeasureUnit::createVolt(status));
3591     measureUnitValue = MeasureUnit::getVolt();
3592     measureUnit.adoptInstead(MeasureUnit::createBritishThermalUnit(status));
3593     measureUnitValue = MeasureUnit::getBritishThermalUnit();
3594     measureUnit.adoptInstead(MeasureUnit::createCalorie(status));
3595     measureUnitValue = MeasureUnit::getCalorie();
3596     measureUnit.adoptInstead(MeasureUnit::createElectronvolt(status));
3597     measureUnitValue = MeasureUnit::getElectronvolt();
3598     measureUnit.adoptInstead(MeasureUnit::createFoodcalorie(status));
3599     measureUnitValue = MeasureUnit::getFoodcalorie();
3600     measureUnit.adoptInstead(MeasureUnit::createJoule(status));
3601     measureUnitValue = MeasureUnit::getJoule();
3602     measureUnit.adoptInstead(MeasureUnit::createKilocalorie(status));
3603     measureUnitValue = MeasureUnit::getKilocalorie();
3604     measureUnit.adoptInstead(MeasureUnit::createKilojoule(status));
3605     measureUnitValue = MeasureUnit::getKilojoule();
3606     measureUnit.adoptInstead(MeasureUnit::createKilowattHour(status));
3607     measureUnitValue = MeasureUnit::getKilowattHour();
3608     measureUnit.adoptInstead(MeasureUnit::createThermUs(status));
3609     measureUnitValue = MeasureUnit::getThermUs();
3610     measureUnit.adoptInstead(MeasureUnit::createKilowattHourPer100Kilometer(status));
3611     measureUnitValue = MeasureUnit::getKilowattHourPer100Kilometer();
3612     measureUnit.adoptInstead(MeasureUnit::createNewton(status));
3613     measureUnitValue = MeasureUnit::getNewton();
3614     measureUnit.adoptInstead(MeasureUnit::createPoundForce(status));
3615     measureUnitValue = MeasureUnit::getPoundForce();
3616     measureUnit.adoptInstead(MeasureUnit::createGigahertz(status));
3617     measureUnitValue = MeasureUnit::getGigahertz();
3618     measureUnit.adoptInstead(MeasureUnit::createHertz(status));
3619     measureUnitValue = MeasureUnit::getHertz();
3620     measureUnit.adoptInstead(MeasureUnit::createKilohertz(status));
3621     measureUnitValue = MeasureUnit::getKilohertz();
3622     measureUnit.adoptInstead(MeasureUnit::createMegahertz(status));
3623     measureUnitValue = MeasureUnit::getMegahertz();
3624     measureUnit.adoptInstead(MeasureUnit::createDot(status));
3625     measureUnitValue = MeasureUnit::getDot();
3626     measureUnit.adoptInstead(MeasureUnit::createDotPerCentimeter(status));
3627     measureUnitValue = MeasureUnit::getDotPerCentimeter();
3628     measureUnit.adoptInstead(MeasureUnit::createDotPerInch(status));
3629     measureUnitValue = MeasureUnit::getDotPerInch();
3630     measureUnit.adoptInstead(MeasureUnit::createEm(status));
3631     measureUnitValue = MeasureUnit::getEm();
3632     measureUnit.adoptInstead(MeasureUnit::createMegapixel(status));
3633     measureUnitValue = MeasureUnit::getMegapixel();
3634     measureUnit.adoptInstead(MeasureUnit::createPixel(status));
3635     measureUnitValue = MeasureUnit::getPixel();
3636     measureUnit.adoptInstead(MeasureUnit::createPixelPerCentimeter(status));
3637     measureUnitValue = MeasureUnit::getPixelPerCentimeter();
3638     measureUnit.adoptInstead(MeasureUnit::createPixelPerInch(status));
3639     measureUnitValue = MeasureUnit::getPixelPerInch();
3640     measureUnit.adoptInstead(MeasureUnit::createAstronomicalUnit(status));
3641     measureUnitValue = MeasureUnit::getAstronomicalUnit();
3642     measureUnit.adoptInstead(MeasureUnit::createCentimeter(status));
3643     measureUnitValue = MeasureUnit::getCentimeter();
3644     measureUnit.adoptInstead(MeasureUnit::createDecimeter(status));
3645     measureUnitValue = MeasureUnit::getDecimeter();
3646     measureUnit.adoptInstead(MeasureUnit::createEarthRadius(status));
3647     measureUnitValue = MeasureUnit::getEarthRadius();
3648     measureUnit.adoptInstead(MeasureUnit::createFathom(status));
3649     measureUnitValue = MeasureUnit::getFathom();
3650     measureUnit.adoptInstead(MeasureUnit::createFoot(status));
3651     measureUnitValue = MeasureUnit::getFoot();
3652     measureUnit.adoptInstead(MeasureUnit::createFurlong(status));
3653     measureUnitValue = MeasureUnit::getFurlong();
3654     measureUnit.adoptInstead(MeasureUnit::createInch(status));
3655     measureUnitValue = MeasureUnit::getInch();
3656     measureUnit.adoptInstead(MeasureUnit::createKilometer(status));
3657     measureUnitValue = MeasureUnit::getKilometer();
3658     measureUnit.adoptInstead(MeasureUnit::createLightYear(status));
3659     measureUnitValue = MeasureUnit::getLightYear();
3660     measureUnit.adoptInstead(MeasureUnit::createMeter(status));
3661     measureUnitValue = MeasureUnit::getMeter();
3662     measureUnit.adoptInstead(MeasureUnit::createMicrometer(status));
3663     measureUnitValue = MeasureUnit::getMicrometer();
3664     measureUnit.adoptInstead(MeasureUnit::createMile(status));
3665     measureUnitValue = MeasureUnit::getMile();
3666     measureUnit.adoptInstead(MeasureUnit::createMileScandinavian(status));
3667     measureUnitValue = MeasureUnit::getMileScandinavian();
3668     measureUnit.adoptInstead(MeasureUnit::createMillimeter(status));
3669     measureUnitValue = MeasureUnit::getMillimeter();
3670     measureUnit.adoptInstead(MeasureUnit::createNanometer(status));
3671     measureUnitValue = MeasureUnit::getNanometer();
3672     measureUnit.adoptInstead(MeasureUnit::createNauticalMile(status));
3673     measureUnitValue = MeasureUnit::getNauticalMile();
3674     measureUnit.adoptInstead(MeasureUnit::createParsec(status));
3675     measureUnitValue = MeasureUnit::getParsec();
3676     measureUnit.adoptInstead(MeasureUnit::createPicometer(status));
3677     measureUnitValue = MeasureUnit::getPicometer();
3678     measureUnit.adoptInstead(MeasureUnit::createPoint(status));
3679     measureUnitValue = MeasureUnit::getPoint();
3680     measureUnit.adoptInstead(MeasureUnit::createSolarRadius(status));
3681     measureUnitValue = MeasureUnit::getSolarRadius();
3682     measureUnit.adoptInstead(MeasureUnit::createYard(status));
3683     measureUnitValue = MeasureUnit::getYard();
3684     measureUnit.adoptInstead(MeasureUnit::createCandela(status));
3685     measureUnitValue = MeasureUnit::getCandela();
3686     measureUnit.adoptInstead(MeasureUnit::createLumen(status));
3687     measureUnitValue = MeasureUnit::getLumen();
3688     measureUnit.adoptInstead(MeasureUnit::createLux(status));
3689     measureUnitValue = MeasureUnit::getLux();
3690     measureUnit.adoptInstead(MeasureUnit::createSolarLuminosity(status));
3691     measureUnitValue = MeasureUnit::getSolarLuminosity();
3692     measureUnit.adoptInstead(MeasureUnit::createCarat(status));
3693     measureUnitValue = MeasureUnit::getCarat();
3694     measureUnit.adoptInstead(MeasureUnit::createDalton(status));
3695     measureUnitValue = MeasureUnit::getDalton();
3696     measureUnit.adoptInstead(MeasureUnit::createEarthMass(status));
3697     measureUnitValue = MeasureUnit::getEarthMass();
3698     measureUnit.adoptInstead(MeasureUnit::createGrain(status));
3699     measureUnitValue = MeasureUnit::getGrain();
3700     measureUnit.adoptInstead(MeasureUnit::createGram(status));
3701     measureUnitValue = MeasureUnit::getGram();
3702     measureUnit.adoptInstead(MeasureUnit::createKilogram(status));
3703     measureUnitValue = MeasureUnit::getKilogram();
3704     measureUnit.adoptInstead(MeasureUnit::createMicrogram(status));
3705     measureUnitValue = MeasureUnit::getMicrogram();
3706     measureUnit.adoptInstead(MeasureUnit::createMilligram(status));
3707     measureUnitValue = MeasureUnit::getMilligram();
3708     measureUnit.adoptInstead(MeasureUnit::createOunce(status));
3709     measureUnitValue = MeasureUnit::getOunce();
3710     measureUnit.adoptInstead(MeasureUnit::createOunceTroy(status));
3711     measureUnitValue = MeasureUnit::getOunceTroy();
3712     measureUnit.adoptInstead(MeasureUnit::createPound(status));
3713     measureUnitValue = MeasureUnit::getPound();
3714     measureUnit.adoptInstead(MeasureUnit::createSolarMass(status));
3715     measureUnitValue = MeasureUnit::getSolarMass();
3716     measureUnit.adoptInstead(MeasureUnit::createStone(status));
3717     measureUnitValue = MeasureUnit::getStone();
3718     measureUnit.adoptInstead(MeasureUnit::createTon(status));
3719     measureUnitValue = MeasureUnit::getTon();
3720     measureUnit.adoptInstead(MeasureUnit::createTonne(status));
3721     measureUnitValue = MeasureUnit::getTonne();
3722     measureUnit.adoptInstead(MeasureUnit::createGigawatt(status));
3723     measureUnitValue = MeasureUnit::getGigawatt();
3724     measureUnit.adoptInstead(MeasureUnit::createHorsepower(status));
3725     measureUnitValue = MeasureUnit::getHorsepower();
3726     measureUnit.adoptInstead(MeasureUnit::createKilowatt(status));
3727     measureUnitValue = MeasureUnit::getKilowatt();
3728     measureUnit.adoptInstead(MeasureUnit::createMegawatt(status));
3729     measureUnitValue = MeasureUnit::getMegawatt();
3730     measureUnit.adoptInstead(MeasureUnit::createMilliwatt(status));
3731     measureUnitValue = MeasureUnit::getMilliwatt();
3732     measureUnit.adoptInstead(MeasureUnit::createWatt(status));
3733     measureUnitValue = MeasureUnit::getWatt();
3734     measureUnit.adoptInstead(MeasureUnit::createAtmosphere(status));
3735     measureUnitValue = MeasureUnit::getAtmosphere();
3736     measureUnit.adoptInstead(MeasureUnit::createBar(status));
3737     measureUnitValue = MeasureUnit::getBar();
3738     measureUnit.adoptInstead(MeasureUnit::createHectopascal(status));
3739     measureUnitValue = MeasureUnit::getHectopascal();
3740     measureUnit.adoptInstead(MeasureUnit::createInchHg(status));
3741     measureUnitValue = MeasureUnit::getInchHg();
3742     measureUnit.adoptInstead(MeasureUnit::createKilopascal(status));
3743     measureUnitValue = MeasureUnit::getKilopascal();
3744     measureUnit.adoptInstead(MeasureUnit::createMegapascal(status));
3745     measureUnitValue = MeasureUnit::getMegapascal();
3746     measureUnit.adoptInstead(MeasureUnit::createMillibar(status));
3747     measureUnitValue = MeasureUnit::getMillibar();
3748     measureUnit.adoptInstead(MeasureUnit::createMillimeterOfMercury(status));
3749     measureUnitValue = MeasureUnit::getMillimeterOfMercury();
3750     measureUnit.adoptInstead(MeasureUnit::createPascal(status));
3751     measureUnitValue = MeasureUnit::getPascal();
3752     measureUnit.adoptInstead(MeasureUnit::createPoundPerSquareInch(status));
3753     measureUnitValue = MeasureUnit::getPoundPerSquareInch();
3754     measureUnit.adoptInstead(MeasureUnit::createBeaufort(status));
3755     measureUnitValue = MeasureUnit::getBeaufort();
3756     measureUnit.adoptInstead(MeasureUnit::createKilometerPerHour(status));
3757     measureUnitValue = MeasureUnit::getKilometerPerHour();
3758     measureUnit.adoptInstead(MeasureUnit::createKnot(status));
3759     measureUnitValue = MeasureUnit::getKnot();
3760     measureUnit.adoptInstead(MeasureUnit::createMeterPerSecond(status));
3761     measureUnitValue = MeasureUnit::getMeterPerSecond();
3762     measureUnit.adoptInstead(MeasureUnit::createMilePerHour(status));
3763     measureUnitValue = MeasureUnit::getMilePerHour();
3764     measureUnit.adoptInstead(MeasureUnit::createCelsius(status));
3765     measureUnitValue = MeasureUnit::getCelsius();
3766     measureUnit.adoptInstead(MeasureUnit::createFahrenheit(status));
3767     measureUnitValue = MeasureUnit::getFahrenheit();
3768     measureUnit.adoptInstead(MeasureUnit::createGenericTemperature(status));
3769     measureUnitValue = MeasureUnit::getGenericTemperature();
3770     measureUnit.adoptInstead(MeasureUnit::createKelvin(status));
3771     measureUnitValue = MeasureUnit::getKelvin();
3772     measureUnit.adoptInstead(MeasureUnit::createNewtonMeter(status));
3773     measureUnitValue = MeasureUnit::getNewtonMeter();
3774     measureUnit.adoptInstead(MeasureUnit::createPoundFoot(status));
3775     measureUnitValue = MeasureUnit::getPoundFoot();
3776     measureUnit.adoptInstead(MeasureUnit::createAcreFoot(status));
3777     measureUnitValue = MeasureUnit::getAcreFoot();
3778     measureUnit.adoptInstead(MeasureUnit::createBarrel(status));
3779     measureUnitValue = MeasureUnit::getBarrel();
3780     measureUnit.adoptInstead(MeasureUnit::createBushel(status));
3781     measureUnitValue = MeasureUnit::getBushel();
3782     measureUnit.adoptInstead(MeasureUnit::createCentiliter(status));
3783     measureUnitValue = MeasureUnit::getCentiliter();
3784     measureUnit.adoptInstead(MeasureUnit::createCubicCentimeter(status));
3785     measureUnitValue = MeasureUnit::getCubicCentimeter();
3786     measureUnit.adoptInstead(MeasureUnit::createCubicFoot(status));
3787     measureUnitValue = MeasureUnit::getCubicFoot();
3788     measureUnit.adoptInstead(MeasureUnit::createCubicInch(status));
3789     measureUnitValue = MeasureUnit::getCubicInch();
3790     measureUnit.adoptInstead(MeasureUnit::createCubicKilometer(status));
3791     measureUnitValue = MeasureUnit::getCubicKilometer();
3792     measureUnit.adoptInstead(MeasureUnit::createCubicMeter(status));
3793     measureUnitValue = MeasureUnit::getCubicMeter();
3794     measureUnit.adoptInstead(MeasureUnit::createCubicMile(status));
3795     measureUnitValue = MeasureUnit::getCubicMile();
3796     measureUnit.adoptInstead(MeasureUnit::createCubicYard(status));
3797     measureUnitValue = MeasureUnit::getCubicYard();
3798     measureUnit.adoptInstead(MeasureUnit::createCup(status));
3799     measureUnitValue = MeasureUnit::getCup();
3800     measureUnit.adoptInstead(MeasureUnit::createCupMetric(status));
3801     measureUnitValue = MeasureUnit::getCupMetric();
3802     measureUnit.adoptInstead(MeasureUnit::createDeciliter(status));
3803     measureUnitValue = MeasureUnit::getDeciliter();
3804     measureUnit.adoptInstead(MeasureUnit::createDessertSpoon(status));
3805     measureUnitValue = MeasureUnit::getDessertSpoon();
3806     measureUnit.adoptInstead(MeasureUnit::createDessertSpoonImperial(status));
3807     measureUnitValue = MeasureUnit::getDessertSpoonImperial();
3808     measureUnit.adoptInstead(MeasureUnit::createDram(status));
3809     measureUnitValue = MeasureUnit::getDram();
3810     measureUnit.adoptInstead(MeasureUnit::createDrop(status));
3811     measureUnitValue = MeasureUnit::getDrop();
3812     measureUnit.adoptInstead(MeasureUnit::createFluidOunce(status));
3813     measureUnitValue = MeasureUnit::getFluidOunce();
3814     measureUnit.adoptInstead(MeasureUnit::createFluidOunceImperial(status));
3815     measureUnitValue = MeasureUnit::getFluidOunceImperial();
3816     measureUnit.adoptInstead(MeasureUnit::createGallon(status));
3817     measureUnitValue = MeasureUnit::getGallon();
3818     measureUnit.adoptInstead(MeasureUnit::createGallonImperial(status));
3819     measureUnitValue = MeasureUnit::getGallonImperial();
3820     measureUnit.adoptInstead(MeasureUnit::createHectoliter(status));
3821     measureUnitValue = MeasureUnit::getHectoliter();
3822     measureUnit.adoptInstead(MeasureUnit::createJigger(status));
3823     measureUnitValue = MeasureUnit::getJigger();
3824     measureUnit.adoptInstead(MeasureUnit::createLiter(status));
3825     measureUnitValue = MeasureUnit::getLiter();
3826     measureUnit.adoptInstead(MeasureUnit::createMegaliter(status));
3827     measureUnitValue = MeasureUnit::getMegaliter();
3828     measureUnit.adoptInstead(MeasureUnit::createMilliliter(status));
3829     measureUnitValue = MeasureUnit::getMilliliter();
3830     measureUnit.adoptInstead(MeasureUnit::createPinch(status));
3831     measureUnitValue = MeasureUnit::getPinch();
3832     measureUnit.adoptInstead(MeasureUnit::createPint(status));
3833     measureUnitValue = MeasureUnit::getPint();
3834     measureUnit.adoptInstead(MeasureUnit::createPintMetric(status));
3835     measureUnitValue = MeasureUnit::getPintMetric();
3836     measureUnit.adoptInstead(MeasureUnit::createQuart(status));
3837     measureUnitValue = MeasureUnit::getQuart();
3838     measureUnit.adoptInstead(MeasureUnit::createQuartImperial(status));
3839     measureUnitValue = MeasureUnit::getQuartImperial();
3840     measureUnit.adoptInstead(MeasureUnit::createTablespoon(status));
3841     measureUnitValue = MeasureUnit::getTablespoon();
3842     measureUnit.adoptInstead(MeasureUnit::createTeaspoon(status));
3843     measureUnitValue = MeasureUnit::getTeaspoon();
3844     assertSuccess("", status);
3845 }
3846 
TestCompatible74()3847 void MeasureFormatTest::TestCompatible74() {
3848     UErrorCode status = U_ZERO_ERROR;
3849     LocalPointer<MeasureUnit> measureUnit;
3850     MeasureUnit measureUnitValue;
3851     measureUnit.adoptInstead(MeasureUnit::createGForce(status));
3852     measureUnitValue = MeasureUnit::getGForce();
3853     measureUnit.adoptInstead(MeasureUnit::createMeterPerSecondSquared(status));
3854     measureUnitValue = MeasureUnit::getMeterPerSecondSquared();
3855     measureUnit.adoptInstead(MeasureUnit::createArcMinute(status));
3856     measureUnitValue = MeasureUnit::getArcMinute();
3857     measureUnit.adoptInstead(MeasureUnit::createArcSecond(status));
3858     measureUnitValue = MeasureUnit::getArcSecond();
3859     measureUnit.adoptInstead(MeasureUnit::createDegree(status));
3860     measureUnitValue = MeasureUnit::getDegree();
3861     measureUnit.adoptInstead(MeasureUnit::createRadian(status));
3862     measureUnitValue = MeasureUnit::getRadian();
3863     measureUnit.adoptInstead(MeasureUnit::createRevolutionAngle(status));
3864     measureUnitValue = MeasureUnit::getRevolutionAngle();
3865     measureUnit.adoptInstead(MeasureUnit::createAcre(status));
3866     measureUnitValue = MeasureUnit::getAcre();
3867     measureUnit.adoptInstead(MeasureUnit::createDunam(status));
3868     measureUnitValue = MeasureUnit::getDunam();
3869     measureUnit.adoptInstead(MeasureUnit::createHectare(status));
3870     measureUnitValue = MeasureUnit::getHectare();
3871     measureUnit.adoptInstead(MeasureUnit::createSquareCentimeter(status));
3872     measureUnitValue = MeasureUnit::getSquareCentimeter();
3873     measureUnit.adoptInstead(MeasureUnit::createSquareFoot(status));
3874     measureUnitValue = MeasureUnit::getSquareFoot();
3875     measureUnit.adoptInstead(MeasureUnit::createSquareInch(status));
3876     measureUnitValue = MeasureUnit::getSquareInch();
3877     measureUnit.adoptInstead(MeasureUnit::createSquareKilometer(status));
3878     measureUnitValue = MeasureUnit::getSquareKilometer();
3879     measureUnit.adoptInstead(MeasureUnit::createSquareMeter(status));
3880     measureUnitValue = MeasureUnit::getSquareMeter();
3881     measureUnit.adoptInstead(MeasureUnit::createSquareMile(status));
3882     measureUnitValue = MeasureUnit::getSquareMile();
3883     measureUnit.adoptInstead(MeasureUnit::createSquareYard(status));
3884     measureUnitValue = MeasureUnit::getSquareYard();
3885     measureUnit.adoptInstead(MeasureUnit::createItem(status));
3886     measureUnitValue = MeasureUnit::getItem();
3887     measureUnit.adoptInstead(MeasureUnit::createKarat(status));
3888     measureUnitValue = MeasureUnit::getKarat();
3889     measureUnit.adoptInstead(MeasureUnit::createMilligramOfglucosePerDeciliter(status));
3890     measureUnitValue = MeasureUnit::getMilligramOfglucosePerDeciliter();
3891     measureUnit.adoptInstead(MeasureUnit::createMilligramPerDeciliter(status));
3892     measureUnitValue = MeasureUnit::getMilligramPerDeciliter();
3893     measureUnit.adoptInstead(MeasureUnit::createMillimolePerLiter(status));
3894     measureUnitValue = MeasureUnit::getMillimolePerLiter();
3895     measureUnit.adoptInstead(MeasureUnit::createMole(status));
3896     measureUnitValue = MeasureUnit::getMole();
3897     measureUnit.adoptInstead(MeasureUnit::createPercent(status));
3898     measureUnitValue = MeasureUnit::getPercent();
3899     measureUnit.adoptInstead(MeasureUnit::createPermille(status));
3900     measureUnitValue = MeasureUnit::getPermille();
3901     measureUnit.adoptInstead(MeasureUnit::createPartPerMillion(status));
3902     measureUnitValue = MeasureUnit::getPartPerMillion();
3903     measureUnit.adoptInstead(MeasureUnit::createPermyriad(status));
3904     measureUnitValue = MeasureUnit::getPermyriad();
3905     measureUnit.adoptInstead(MeasureUnit::createLiterPer100Kilometers(status));
3906     measureUnitValue = MeasureUnit::getLiterPer100Kilometers();
3907     measureUnit.adoptInstead(MeasureUnit::createLiterPerKilometer(status));
3908     measureUnitValue = MeasureUnit::getLiterPerKilometer();
3909     measureUnit.adoptInstead(MeasureUnit::createMilePerGallon(status));
3910     measureUnitValue = MeasureUnit::getMilePerGallon();
3911     measureUnit.adoptInstead(MeasureUnit::createMilePerGallonImperial(status));
3912     measureUnitValue = MeasureUnit::getMilePerGallonImperial();
3913     measureUnit.adoptInstead(MeasureUnit::createBit(status));
3914     measureUnitValue = MeasureUnit::getBit();
3915     measureUnit.adoptInstead(MeasureUnit::createByte(status));
3916     measureUnitValue = MeasureUnit::getByte();
3917     measureUnit.adoptInstead(MeasureUnit::createGigabit(status));
3918     measureUnitValue = MeasureUnit::getGigabit();
3919     measureUnit.adoptInstead(MeasureUnit::createGigabyte(status));
3920     measureUnitValue = MeasureUnit::getGigabyte();
3921     measureUnit.adoptInstead(MeasureUnit::createKilobit(status));
3922     measureUnitValue = MeasureUnit::getKilobit();
3923     measureUnit.adoptInstead(MeasureUnit::createKilobyte(status));
3924     measureUnitValue = MeasureUnit::getKilobyte();
3925     measureUnit.adoptInstead(MeasureUnit::createMegabit(status));
3926     measureUnitValue = MeasureUnit::getMegabit();
3927     measureUnit.adoptInstead(MeasureUnit::createMegabyte(status));
3928     measureUnitValue = MeasureUnit::getMegabyte();
3929     measureUnit.adoptInstead(MeasureUnit::createPetabyte(status));
3930     measureUnitValue = MeasureUnit::getPetabyte();
3931     measureUnit.adoptInstead(MeasureUnit::createTerabit(status));
3932     measureUnitValue = MeasureUnit::getTerabit();
3933     measureUnit.adoptInstead(MeasureUnit::createTerabyte(status));
3934     measureUnitValue = MeasureUnit::getTerabyte();
3935     measureUnit.adoptInstead(MeasureUnit::createCentury(status));
3936     measureUnitValue = MeasureUnit::getCentury();
3937     measureUnit.adoptInstead(MeasureUnit::createDay(status));
3938     measureUnitValue = MeasureUnit::getDay();
3939     measureUnit.adoptInstead(MeasureUnit::createDayPerson(status));
3940     measureUnitValue = MeasureUnit::getDayPerson();
3941     measureUnit.adoptInstead(MeasureUnit::createDecade(status));
3942     measureUnitValue = MeasureUnit::getDecade();
3943     measureUnit.adoptInstead(MeasureUnit::createHour(status));
3944     measureUnitValue = MeasureUnit::getHour();
3945     measureUnit.adoptInstead(MeasureUnit::createMicrosecond(status));
3946     measureUnitValue = MeasureUnit::getMicrosecond();
3947     measureUnit.adoptInstead(MeasureUnit::createMillisecond(status));
3948     measureUnitValue = MeasureUnit::getMillisecond();
3949     measureUnit.adoptInstead(MeasureUnit::createMinute(status));
3950     measureUnitValue = MeasureUnit::getMinute();
3951     measureUnit.adoptInstead(MeasureUnit::createMonth(status));
3952     measureUnitValue = MeasureUnit::getMonth();
3953     measureUnit.adoptInstead(MeasureUnit::createMonthPerson(status));
3954     measureUnitValue = MeasureUnit::getMonthPerson();
3955     measureUnit.adoptInstead(MeasureUnit::createNanosecond(status));
3956     measureUnitValue = MeasureUnit::getNanosecond();
3957     measureUnit.adoptInstead(MeasureUnit::createQuarter(status));
3958     measureUnitValue = MeasureUnit::getQuarter();
3959     measureUnit.adoptInstead(MeasureUnit::createSecond(status));
3960     measureUnitValue = MeasureUnit::getSecond();
3961     measureUnit.adoptInstead(MeasureUnit::createWeek(status));
3962     measureUnitValue = MeasureUnit::getWeek();
3963     measureUnit.adoptInstead(MeasureUnit::createWeekPerson(status));
3964     measureUnitValue = MeasureUnit::getWeekPerson();
3965     measureUnit.adoptInstead(MeasureUnit::createYear(status));
3966     measureUnitValue = MeasureUnit::getYear();
3967     measureUnit.adoptInstead(MeasureUnit::createYearPerson(status));
3968     measureUnitValue = MeasureUnit::getYearPerson();
3969     measureUnit.adoptInstead(MeasureUnit::createAmpere(status));
3970     measureUnitValue = MeasureUnit::getAmpere();
3971     measureUnit.adoptInstead(MeasureUnit::createMilliampere(status));
3972     measureUnitValue = MeasureUnit::getMilliampere();
3973     measureUnit.adoptInstead(MeasureUnit::createOhm(status));
3974     measureUnitValue = MeasureUnit::getOhm();
3975     measureUnit.adoptInstead(MeasureUnit::createVolt(status));
3976     measureUnitValue = MeasureUnit::getVolt();
3977     measureUnit.adoptInstead(MeasureUnit::createBritishThermalUnit(status));
3978     measureUnitValue = MeasureUnit::getBritishThermalUnit();
3979     measureUnit.adoptInstead(MeasureUnit::createCalorie(status));
3980     measureUnitValue = MeasureUnit::getCalorie();
3981     measureUnit.adoptInstead(MeasureUnit::createElectronvolt(status));
3982     measureUnitValue = MeasureUnit::getElectronvolt();
3983     measureUnit.adoptInstead(MeasureUnit::createFoodcalorie(status));
3984     measureUnitValue = MeasureUnit::getFoodcalorie();
3985     measureUnit.adoptInstead(MeasureUnit::createJoule(status));
3986     measureUnitValue = MeasureUnit::getJoule();
3987     measureUnit.adoptInstead(MeasureUnit::createKilocalorie(status));
3988     measureUnitValue = MeasureUnit::getKilocalorie();
3989     measureUnit.adoptInstead(MeasureUnit::createKilojoule(status));
3990     measureUnitValue = MeasureUnit::getKilojoule();
3991     measureUnit.adoptInstead(MeasureUnit::createKilowattHour(status));
3992     measureUnitValue = MeasureUnit::getKilowattHour();
3993     measureUnit.adoptInstead(MeasureUnit::createThermUs(status));
3994     measureUnitValue = MeasureUnit::getThermUs();
3995     measureUnit.adoptInstead(MeasureUnit::createKilowattHourPer100Kilometer(status));
3996     measureUnitValue = MeasureUnit::getKilowattHourPer100Kilometer();
3997     measureUnit.adoptInstead(MeasureUnit::createNewton(status));
3998     measureUnitValue = MeasureUnit::getNewton();
3999     measureUnit.adoptInstead(MeasureUnit::createPoundForce(status));
4000     measureUnitValue = MeasureUnit::getPoundForce();
4001     measureUnit.adoptInstead(MeasureUnit::createGigahertz(status));
4002     measureUnitValue = MeasureUnit::getGigahertz();
4003     measureUnit.adoptInstead(MeasureUnit::createHertz(status));
4004     measureUnitValue = MeasureUnit::getHertz();
4005     measureUnit.adoptInstead(MeasureUnit::createKilohertz(status));
4006     measureUnitValue = MeasureUnit::getKilohertz();
4007     measureUnit.adoptInstead(MeasureUnit::createMegahertz(status));
4008     measureUnitValue = MeasureUnit::getMegahertz();
4009     measureUnit.adoptInstead(MeasureUnit::createDot(status));
4010     measureUnitValue = MeasureUnit::getDot();
4011     measureUnit.adoptInstead(MeasureUnit::createDotPerCentimeter(status));
4012     measureUnitValue = MeasureUnit::getDotPerCentimeter();
4013     measureUnit.adoptInstead(MeasureUnit::createDotPerInch(status));
4014     measureUnitValue = MeasureUnit::getDotPerInch();
4015     measureUnit.adoptInstead(MeasureUnit::createEm(status));
4016     measureUnitValue = MeasureUnit::getEm();
4017     measureUnit.adoptInstead(MeasureUnit::createMegapixel(status));
4018     measureUnitValue = MeasureUnit::getMegapixel();
4019     measureUnit.adoptInstead(MeasureUnit::createPixel(status));
4020     measureUnitValue = MeasureUnit::getPixel();
4021     measureUnit.adoptInstead(MeasureUnit::createPixelPerCentimeter(status));
4022     measureUnitValue = MeasureUnit::getPixelPerCentimeter();
4023     measureUnit.adoptInstead(MeasureUnit::createPixelPerInch(status));
4024     measureUnitValue = MeasureUnit::getPixelPerInch();
4025     measureUnit.adoptInstead(MeasureUnit::createAstronomicalUnit(status));
4026     measureUnitValue = MeasureUnit::getAstronomicalUnit();
4027     measureUnit.adoptInstead(MeasureUnit::createCentimeter(status));
4028     measureUnitValue = MeasureUnit::getCentimeter();
4029     measureUnit.adoptInstead(MeasureUnit::createDecimeter(status));
4030     measureUnitValue = MeasureUnit::getDecimeter();
4031     measureUnit.adoptInstead(MeasureUnit::createEarthRadius(status));
4032     measureUnitValue = MeasureUnit::getEarthRadius();
4033     measureUnit.adoptInstead(MeasureUnit::createFathom(status));
4034     measureUnitValue = MeasureUnit::getFathom();
4035     measureUnit.adoptInstead(MeasureUnit::createFoot(status));
4036     measureUnitValue = MeasureUnit::getFoot();
4037     measureUnit.adoptInstead(MeasureUnit::createFurlong(status));
4038     measureUnitValue = MeasureUnit::getFurlong();
4039     measureUnit.adoptInstead(MeasureUnit::createInch(status));
4040     measureUnitValue = MeasureUnit::getInch();
4041     measureUnit.adoptInstead(MeasureUnit::createKilometer(status));
4042     measureUnitValue = MeasureUnit::getKilometer();
4043     measureUnit.adoptInstead(MeasureUnit::createLightYear(status));
4044     measureUnitValue = MeasureUnit::getLightYear();
4045     measureUnit.adoptInstead(MeasureUnit::createMeter(status));
4046     measureUnitValue = MeasureUnit::getMeter();
4047     measureUnit.adoptInstead(MeasureUnit::createMicrometer(status));
4048     measureUnitValue = MeasureUnit::getMicrometer();
4049     measureUnit.adoptInstead(MeasureUnit::createMile(status));
4050     measureUnitValue = MeasureUnit::getMile();
4051     measureUnit.adoptInstead(MeasureUnit::createMileScandinavian(status));
4052     measureUnitValue = MeasureUnit::getMileScandinavian();
4053     measureUnit.adoptInstead(MeasureUnit::createMillimeter(status));
4054     measureUnitValue = MeasureUnit::getMillimeter();
4055     measureUnit.adoptInstead(MeasureUnit::createNanometer(status));
4056     measureUnitValue = MeasureUnit::getNanometer();
4057     measureUnit.adoptInstead(MeasureUnit::createNauticalMile(status));
4058     measureUnitValue = MeasureUnit::getNauticalMile();
4059     measureUnit.adoptInstead(MeasureUnit::createParsec(status));
4060     measureUnitValue = MeasureUnit::getParsec();
4061     measureUnit.adoptInstead(MeasureUnit::createPicometer(status));
4062     measureUnitValue = MeasureUnit::getPicometer();
4063     measureUnit.adoptInstead(MeasureUnit::createPoint(status));
4064     measureUnitValue = MeasureUnit::getPoint();
4065     measureUnit.adoptInstead(MeasureUnit::createSolarRadius(status));
4066     measureUnitValue = MeasureUnit::getSolarRadius();
4067     measureUnit.adoptInstead(MeasureUnit::createYard(status));
4068     measureUnitValue = MeasureUnit::getYard();
4069     measureUnit.adoptInstead(MeasureUnit::createCandela(status));
4070     measureUnitValue = MeasureUnit::getCandela();
4071     measureUnit.adoptInstead(MeasureUnit::createLumen(status));
4072     measureUnitValue = MeasureUnit::getLumen();
4073     measureUnit.adoptInstead(MeasureUnit::createLux(status));
4074     measureUnitValue = MeasureUnit::getLux();
4075     measureUnit.adoptInstead(MeasureUnit::createSolarLuminosity(status));
4076     measureUnitValue = MeasureUnit::getSolarLuminosity();
4077     measureUnit.adoptInstead(MeasureUnit::createCarat(status));
4078     measureUnitValue = MeasureUnit::getCarat();
4079     measureUnit.adoptInstead(MeasureUnit::createDalton(status));
4080     measureUnitValue = MeasureUnit::getDalton();
4081     measureUnit.adoptInstead(MeasureUnit::createEarthMass(status));
4082     measureUnitValue = MeasureUnit::getEarthMass();
4083     measureUnit.adoptInstead(MeasureUnit::createGrain(status));
4084     measureUnitValue = MeasureUnit::getGrain();
4085     measureUnit.adoptInstead(MeasureUnit::createGram(status));
4086     measureUnitValue = MeasureUnit::getGram();
4087     measureUnit.adoptInstead(MeasureUnit::createKilogram(status));
4088     measureUnitValue = MeasureUnit::getKilogram();
4089     measureUnit.adoptInstead(MeasureUnit::createMicrogram(status));
4090     measureUnitValue = MeasureUnit::getMicrogram();
4091     measureUnit.adoptInstead(MeasureUnit::createMilligram(status));
4092     measureUnitValue = MeasureUnit::getMilligram();
4093     measureUnit.adoptInstead(MeasureUnit::createOunce(status));
4094     measureUnitValue = MeasureUnit::getOunce();
4095     measureUnit.adoptInstead(MeasureUnit::createOunceTroy(status));
4096     measureUnitValue = MeasureUnit::getOunceTroy();
4097     measureUnit.adoptInstead(MeasureUnit::createPound(status));
4098     measureUnitValue = MeasureUnit::getPound();
4099     measureUnit.adoptInstead(MeasureUnit::createSolarMass(status));
4100     measureUnitValue = MeasureUnit::getSolarMass();
4101     measureUnit.adoptInstead(MeasureUnit::createStone(status));
4102     measureUnitValue = MeasureUnit::getStone();
4103     measureUnit.adoptInstead(MeasureUnit::createTon(status));
4104     measureUnitValue = MeasureUnit::getTon();
4105     measureUnit.adoptInstead(MeasureUnit::createTonne(status));
4106     measureUnitValue = MeasureUnit::getTonne();
4107     measureUnit.adoptInstead(MeasureUnit::createGigawatt(status));
4108     measureUnitValue = MeasureUnit::getGigawatt();
4109     measureUnit.adoptInstead(MeasureUnit::createHorsepower(status));
4110     measureUnitValue = MeasureUnit::getHorsepower();
4111     measureUnit.adoptInstead(MeasureUnit::createKilowatt(status));
4112     measureUnitValue = MeasureUnit::getKilowatt();
4113     measureUnit.adoptInstead(MeasureUnit::createMegawatt(status));
4114     measureUnitValue = MeasureUnit::getMegawatt();
4115     measureUnit.adoptInstead(MeasureUnit::createMilliwatt(status));
4116     measureUnitValue = MeasureUnit::getMilliwatt();
4117     measureUnit.adoptInstead(MeasureUnit::createWatt(status));
4118     measureUnitValue = MeasureUnit::getWatt();
4119     measureUnit.adoptInstead(MeasureUnit::createAtmosphere(status));
4120     measureUnitValue = MeasureUnit::getAtmosphere();
4121     measureUnit.adoptInstead(MeasureUnit::createBar(status));
4122     measureUnitValue = MeasureUnit::getBar();
4123     measureUnit.adoptInstead(MeasureUnit::createGasolineEnergyDensity(status));
4124     measureUnitValue = MeasureUnit::getGasolineEnergyDensity();
4125     measureUnit.adoptInstead(MeasureUnit::createHectopascal(status));
4126     measureUnitValue = MeasureUnit::getHectopascal();
4127     measureUnit.adoptInstead(MeasureUnit::createInchHg(status));
4128     measureUnitValue = MeasureUnit::getInchHg();
4129     measureUnit.adoptInstead(MeasureUnit::createKilopascal(status));
4130     measureUnitValue = MeasureUnit::getKilopascal();
4131     measureUnit.adoptInstead(MeasureUnit::createMegapascal(status));
4132     measureUnitValue = MeasureUnit::getMegapascal();
4133     measureUnit.adoptInstead(MeasureUnit::createMillibar(status));
4134     measureUnitValue = MeasureUnit::getMillibar();
4135     measureUnit.adoptInstead(MeasureUnit::createMillimeterOfMercury(status));
4136     measureUnitValue = MeasureUnit::getMillimeterOfMercury();
4137     measureUnit.adoptInstead(MeasureUnit::createPascal(status));
4138     measureUnitValue = MeasureUnit::getPascal();
4139     measureUnit.adoptInstead(MeasureUnit::createPoundPerSquareInch(status));
4140     measureUnitValue = MeasureUnit::getPoundPerSquareInch();
4141     measureUnit.adoptInstead(MeasureUnit::createBeaufort(status));
4142     measureUnitValue = MeasureUnit::getBeaufort();
4143     measureUnit.adoptInstead(MeasureUnit::createKilometerPerHour(status));
4144     measureUnitValue = MeasureUnit::getKilometerPerHour();
4145     measureUnit.adoptInstead(MeasureUnit::createKnot(status));
4146     measureUnitValue = MeasureUnit::getKnot();
4147     measureUnit.adoptInstead(MeasureUnit::createMeterPerSecond(status));
4148     measureUnitValue = MeasureUnit::getMeterPerSecond();
4149     measureUnit.adoptInstead(MeasureUnit::createMilePerHour(status));
4150     measureUnitValue = MeasureUnit::getMilePerHour();
4151     measureUnit.adoptInstead(MeasureUnit::createCelsius(status));
4152     measureUnitValue = MeasureUnit::getCelsius();
4153     measureUnit.adoptInstead(MeasureUnit::createFahrenheit(status));
4154     measureUnitValue = MeasureUnit::getFahrenheit();
4155     measureUnit.adoptInstead(MeasureUnit::createGenericTemperature(status));
4156     measureUnitValue = MeasureUnit::getGenericTemperature();
4157     measureUnit.adoptInstead(MeasureUnit::createKelvin(status));
4158     measureUnitValue = MeasureUnit::getKelvin();
4159     measureUnit.adoptInstead(MeasureUnit::createNewtonMeter(status));
4160     measureUnitValue = MeasureUnit::getNewtonMeter();
4161     measureUnit.adoptInstead(MeasureUnit::createPoundFoot(status));
4162     measureUnitValue = MeasureUnit::getPoundFoot();
4163     measureUnit.adoptInstead(MeasureUnit::createAcreFoot(status));
4164     measureUnitValue = MeasureUnit::getAcreFoot();
4165     measureUnit.adoptInstead(MeasureUnit::createBarrel(status));
4166     measureUnitValue = MeasureUnit::getBarrel();
4167     measureUnit.adoptInstead(MeasureUnit::createBushel(status));
4168     measureUnitValue = MeasureUnit::getBushel();
4169     measureUnit.adoptInstead(MeasureUnit::createCentiliter(status));
4170     measureUnitValue = MeasureUnit::getCentiliter();
4171     measureUnit.adoptInstead(MeasureUnit::createCubicCentimeter(status));
4172     measureUnitValue = MeasureUnit::getCubicCentimeter();
4173     measureUnit.adoptInstead(MeasureUnit::createCubicFoot(status));
4174     measureUnitValue = MeasureUnit::getCubicFoot();
4175     measureUnit.adoptInstead(MeasureUnit::createCubicInch(status));
4176     measureUnitValue = MeasureUnit::getCubicInch();
4177     measureUnit.adoptInstead(MeasureUnit::createCubicKilometer(status));
4178     measureUnitValue = MeasureUnit::getCubicKilometer();
4179     measureUnit.adoptInstead(MeasureUnit::createCubicMeter(status));
4180     measureUnitValue = MeasureUnit::getCubicMeter();
4181     measureUnit.adoptInstead(MeasureUnit::createCubicMile(status));
4182     measureUnitValue = MeasureUnit::getCubicMile();
4183     measureUnit.adoptInstead(MeasureUnit::createCubicYard(status));
4184     measureUnitValue = MeasureUnit::getCubicYard();
4185     measureUnit.adoptInstead(MeasureUnit::createCup(status));
4186     measureUnitValue = MeasureUnit::getCup();
4187     measureUnit.adoptInstead(MeasureUnit::createCupMetric(status));
4188     measureUnitValue = MeasureUnit::getCupMetric();
4189     measureUnit.adoptInstead(MeasureUnit::createDeciliter(status));
4190     measureUnitValue = MeasureUnit::getDeciliter();
4191     measureUnit.adoptInstead(MeasureUnit::createDessertSpoon(status));
4192     measureUnitValue = MeasureUnit::getDessertSpoon();
4193     measureUnit.adoptInstead(MeasureUnit::createDessertSpoonImperial(status));
4194     measureUnitValue = MeasureUnit::getDessertSpoonImperial();
4195     measureUnit.adoptInstead(MeasureUnit::createDram(status));
4196     measureUnitValue = MeasureUnit::getDram();
4197     measureUnit.adoptInstead(MeasureUnit::createDrop(status));
4198     measureUnitValue = MeasureUnit::getDrop();
4199     measureUnit.adoptInstead(MeasureUnit::createFluidOunce(status));
4200     measureUnitValue = MeasureUnit::getFluidOunce();
4201     measureUnit.adoptInstead(MeasureUnit::createFluidOunceImperial(status));
4202     measureUnitValue = MeasureUnit::getFluidOunceImperial();
4203     measureUnit.adoptInstead(MeasureUnit::createGallon(status));
4204     measureUnitValue = MeasureUnit::getGallon();
4205     measureUnit.adoptInstead(MeasureUnit::createGallonImperial(status));
4206     measureUnitValue = MeasureUnit::getGallonImperial();
4207     measureUnit.adoptInstead(MeasureUnit::createHectoliter(status));
4208     measureUnitValue = MeasureUnit::getHectoliter();
4209     measureUnit.adoptInstead(MeasureUnit::createJigger(status));
4210     measureUnitValue = MeasureUnit::getJigger();
4211     measureUnit.adoptInstead(MeasureUnit::createLiter(status));
4212     measureUnitValue = MeasureUnit::getLiter();
4213     measureUnit.adoptInstead(MeasureUnit::createMegaliter(status));
4214     measureUnitValue = MeasureUnit::getMegaliter();
4215     measureUnit.adoptInstead(MeasureUnit::createMilliliter(status));
4216     measureUnitValue = MeasureUnit::getMilliliter();
4217     measureUnit.adoptInstead(MeasureUnit::createPinch(status));
4218     measureUnitValue = MeasureUnit::getPinch();
4219     measureUnit.adoptInstead(MeasureUnit::createPint(status));
4220     measureUnitValue = MeasureUnit::getPint();
4221     measureUnit.adoptInstead(MeasureUnit::createPintMetric(status));
4222     measureUnitValue = MeasureUnit::getPintMetric();
4223     measureUnit.adoptInstead(MeasureUnit::createQuart(status));
4224     measureUnitValue = MeasureUnit::getQuart();
4225     measureUnit.adoptInstead(MeasureUnit::createQuartImperial(status));
4226     measureUnitValue = MeasureUnit::getQuartImperial();
4227     measureUnit.adoptInstead(MeasureUnit::createTablespoon(status));
4228     measureUnitValue = MeasureUnit::getTablespoon();
4229     measureUnit.adoptInstead(MeasureUnit::createTeaspoon(status));
4230     measureUnitValue = MeasureUnit::getTeaspoon();
4231     assertSuccess("", status);
4232 }
4233 
TestBasic()4234 void MeasureFormatTest::TestBasic() {
4235     UErrorCode status = U_ZERO_ERROR;
4236     MeasureUnit *ptr1 = MeasureUnit::createArcMinute(status);
4237     MeasureUnit *ptr2 = MeasureUnit::createArcMinute(status);
4238     if (!(*ptr1 == *ptr2)) {
4239         errln("Expect == to work.");
4240     }
4241     if (*ptr1 != *ptr2) {
4242         errln("Expect != to work.");
4243     }
4244     MeasureUnit *ptr3 = MeasureUnit::createMeter(status);
4245     if (*ptr1 == *ptr3) {
4246         errln("Expect == to work.");
4247     }
4248     if (!(*ptr1 != *ptr3)) {
4249         errln("Expect != to work.");
4250     }
4251     MeasureUnit *ptr4 = ptr1->clone();
4252     if (*ptr1 != *ptr4) {
4253         errln("Expect clone to work.");
4254     }
4255     MeasureUnit stack;
4256     stack = *ptr1;
4257     if (*ptr1 != stack) {
4258         errln("Expect assignment to work.");
4259     }
4260 
4261     delete ptr1;
4262     delete ptr2;
4263     delete ptr3;
4264     delete ptr4;
4265 }
4266 
TestGetAvailable()4267 void MeasureFormatTest::TestGetAvailable() {
4268     MeasureUnit *units = nullptr;
4269     UErrorCode status = U_ZERO_ERROR;
4270     int32_t totalCount = MeasureUnit::getAvailable(units, 0, status);
4271     while (status == U_BUFFER_OVERFLOW_ERROR) {
4272         status = U_ZERO_ERROR;
4273         delete [] units;
4274         units = new MeasureUnit[totalCount];
4275         totalCount = MeasureUnit::getAvailable(units, totalCount, status);
4276     }
4277     if (U_FAILURE(status)) {
4278         dataerrln("Failure creating format object - %s", u_errorName(status));
4279         delete [] units;
4280         return;
4281     }
4282     if (totalCount < 200) {
4283         errln("Expect at least 200 measure units including currencies.");
4284     }
4285     delete [] units;
4286     StringEnumeration *types = MeasureUnit::getAvailableTypes(status);
4287     if (U_FAILURE(status)) {
4288         dataerrln("Failure getting types - %s", u_errorName(status));
4289         delete types;
4290         return;
4291     }
4292     if (types->count(status) < 10) {
4293         errln("Expect at least 10 distinct unit types.");
4294     }
4295     units = nullptr;
4296     int32_t unitCapacity = 0;
4297     int32_t unitCountSum = 0;
4298     for (
4299             const char* type = types->next(nullptr, status);
4300             type != nullptr;
4301             type = types->next(nullptr, status)) {
4302         int32_t unitCount = MeasureUnit::getAvailable(type, units, unitCapacity, status);
4303         while (status == U_BUFFER_OVERFLOW_ERROR) {
4304             status = U_ZERO_ERROR;
4305             delete [] units;
4306             units = new MeasureUnit[unitCount];
4307             unitCapacity = unitCount;
4308             unitCount = MeasureUnit::getAvailable(type, units, unitCapacity, status);
4309         }
4310         if (U_FAILURE(status)) {
4311             dataerrln("Failure getting units - %s", u_errorName(status));
4312             delete [] units;
4313             delete types;
4314             return;
4315         }
4316         if (unitCount < 1) {
4317             errln("Expect at least one unit count per type.");
4318         }
4319         unitCountSum += unitCount;
4320     }
4321     if (unitCountSum != totalCount) {
4322         errln("Expected total unit count to equal sum of unit counts by type.");
4323     }
4324     delete [] units;
4325     delete types;
4326 }
4327 
TestExamplesInDocs()4328 void MeasureFormatTest::TestExamplesInDocs() {
4329     UErrorCode status = U_ZERO_ERROR;
4330     MeasureFormat fmtFr(Locale::getFrench(), UMEASFMT_WIDTH_SHORT, status);
4331     MeasureFormat fmtFrFull(
4332             Locale::getFrench(), UMEASFMT_WIDTH_WIDE, status);
4333     MeasureFormat fmtFrNarrow(
4334             Locale::getFrench(), UMEASFMT_WIDTH_NARROW, status);
4335     MeasureFormat fmtEn(Locale::getUS(), UMEASFMT_WIDTH_WIDE, status);
4336     if (!assertSuccess("Error creating formatters", status)) {
4337         return;
4338     }
4339     Measure measureC((double)23, MeasureUnit::createCelsius(status), status);
4340     Measure measureF((double)70, MeasureUnit::createFahrenheit(status), status);
4341     Measure feetAndInches[] = {
4342             Measure((double)70, MeasureUnit::createFoot(status), status),
4343             Measure((double)5.3, MeasureUnit::createInch(status), status)};
4344     Measure footAndInch[] = {
4345             Measure((double)1, MeasureUnit::createFoot(status), status),
4346             Measure((double)1, MeasureUnit::createInch(status), status)};
4347     Measure inchAndFeet[] = {
4348             Measure((double)1, MeasureUnit::createInch(status), status),
4349             Measure((double)2, MeasureUnit::createFoot(status), status)};
4350     if (!assertSuccess("Error creating measurements.", status)) {
4351         return;
4352     }
4353     verifyFormat(
4354             "Celsius",
4355             fmtFr,
4356             &measureC,
4357             1,
4358             "23\\u202F\\u00B0C");
4359     verifyFormatWithPrefix(
4360             "Celsius",
4361             fmtFr,
4362             "Prefix: ",
4363             &measureC,
4364             1,
4365             "Prefix: 23\\u202F\\u00B0C");
4366     verifyFormat(
4367             "Fahrenheit",
4368             fmtFr,
4369             &measureF,
4370             1,
4371             "70\\u202F\\u00B0F");
4372     verifyFormat(
4373             "Feet and inches",
4374             fmtFrFull,
4375             feetAndInches,
4376             UPRV_LENGTHOF(feetAndInches),
4377             "70 pieds et 5,3\\u00A0pouces");
4378     verifyFormatWithPrefix(
4379             "Feet and inches",
4380             fmtFrFull,
4381             "Prefix: ",
4382             feetAndInches,
4383             UPRV_LENGTHOF(feetAndInches),
4384             "Prefix: 70 pieds et 5,3\\u00A0pouces");
4385     verifyFormat(
4386             "Foot and inch",
4387             fmtFrFull,
4388             footAndInch,
4389             UPRV_LENGTHOF(footAndInch),
4390             "1\\u00A0pied et 1\\u00A0pouce");
4391     verifyFormat(
4392             "Foot and inch narrow",
4393             fmtFrNarrow,
4394             footAndInch,
4395             UPRV_LENGTHOF(footAndInch),
4396             "1\\u2032 1\\u2033");
4397     verifyFormat(
4398             "Inch and feet",
4399             fmtEn,
4400             inchAndFeet,
4401             UPRV_LENGTHOF(inchAndFeet),
4402             "1 inch, 2 feet");
4403 }
4404 
TestFormatPeriodEn()4405 void MeasureFormatTest::TestFormatPeriodEn() {
4406     UErrorCode status = U_ZERO_ERROR;
4407     Measure t_1y[] = {Measure((double)1, MeasureUnit::createYear(status), status)};
4408     Measure t_5M[] = {Measure((double)5, MeasureUnit::createMonth(status), status)};
4409     Measure t_4d[] = {Measure((double)4, MeasureUnit::createDay(status), status)};
4410     Measure t_2h[] = {Measure((double)2, MeasureUnit::createHour(status), status)};
4411     Measure t_19m[] = {Measure((double)19, MeasureUnit::createMinute(status), status)};
4412     Measure t_1h_23_5s[] = {
4413             Measure((double)1.0, MeasureUnit::createHour(status), status),
4414             Measure((double)23.5, MeasureUnit::createSecond(status), status)
4415     };
4416     Measure t_1h_23_5m[] = {
4417             Measure((double)1.0, MeasureUnit::createHour(status), status),
4418             Measure((double)23.5, MeasureUnit::createMinute(status), status)
4419     };
4420     Measure t_1h_0m_23s[] = {
4421             Measure(
4422                     (double)1.0,
4423                     TimeUnit::createInstance(
4424                             TimeUnit::UTIMEUNIT_HOUR, status),
4425                     status),
4426             Measure(
4427                     (double)0.0,
4428                     TimeUnit::createInstance(
4429                             TimeUnit::UTIMEUNIT_MINUTE, status),
4430                      status),
4431             Measure(
4432                     (double)23.0,
4433                     TimeUnit::createInstance(
4434                             TimeUnit::UTIMEUNIT_SECOND, status),
4435                     status)
4436     };
4437     Measure t_2y_5M_3w_4d[] = {
4438             Measure(2.0, MeasureUnit::createYear(status), status),
4439             Measure(5.0, MeasureUnit::createMonth(status), status),
4440             Measure(3.0, MeasureUnit::createWeek(status), status),
4441             Measure(4.0, MeasureUnit::createDay(status), status)
4442     };
4443     Measure t_1m_59_9996s[] = {
4444             Measure(1.0, MeasureUnit::createMinute(status), status),
4445             Measure(59.9996, MeasureUnit::createSecond(status), status)
4446     };
4447     Measure t_5h_17m[] = {
4448             Measure(5.0, MeasureUnit::createHour(status), status),
4449             Measure(17.0, MeasureUnit::createMinute(status), status)
4450     };
4451     Measure t_neg5h_17m[] = {
4452             Measure(-5.0, MeasureUnit::createHour(status), status),
4453             Measure(17.0, MeasureUnit::createMinute(status), status)
4454     };
4455     Measure t_19m_28s[] = {
4456             Measure(19.0, MeasureUnit::createMinute(status), status),
4457             Measure(28.0, MeasureUnit::createSecond(status), status)
4458     };
4459     Measure t_0h_0m_9s[] = {
4460             Measure(0.0, MeasureUnit::createHour(status), status),
4461             Measure(0.0, MeasureUnit::createMinute(status), status),
4462             Measure(9.0, MeasureUnit::createSecond(status), status)
4463     };
4464     Measure t_0h_0m_17s[] = {
4465             Measure(0.0, MeasureUnit::createHour(status), status),
4466             Measure(0.0, MeasureUnit::createMinute(status), status),
4467             Measure(17.0, MeasureUnit::createSecond(status), status)
4468     };
4469     Measure t_6h_56_92m[] = {
4470             Measure(6.0, MeasureUnit::createHour(status), status),
4471             Measure(56.92, MeasureUnit::createMinute(status), status)
4472     };
4473     Measure t_3h_4s_5m[] = {
4474             Measure(3.0, MeasureUnit::createHour(status), status),
4475             Measure(4.0, MeasureUnit::createSecond(status), status),
4476             Measure(5.0, MeasureUnit::createMinute(status), status)
4477     };
4478     Measure t_6_7h_56_92m[] = {
4479             Measure(6.7, MeasureUnit::createHour(status), status),
4480             Measure(56.92, MeasureUnit::createMinute(status), status)
4481     };
4482 
4483     Measure t_3h_5h[] = {
4484             Measure(3.0, MeasureUnit::createHour(status), status),
4485             Measure(5.0, MeasureUnit::createHour(status), status)
4486     };
4487 
4488     if (!assertSuccess("Error creating Measure objects", status)) {
4489         return;
4490     }
4491 
4492     ExpectedResult fullData[] = {
4493             {t_1m_59_9996s, UPRV_LENGTHOF(t_1m_59_9996s), "1 minute, 59.9996 seconds"},
4494             {t_19m, UPRV_LENGTHOF(t_19m), "19 minutes"},
4495             {t_1h_23_5s, UPRV_LENGTHOF(t_1h_23_5s), "1 hour, 23.5 seconds"},
4496             {t_1h_23_5m, UPRV_LENGTHOF(t_1h_23_5m), "1 hour, 23.5 minutes"},
4497             {t_1h_0m_23s, UPRV_LENGTHOF(t_1h_0m_23s), "1 hour, 0 minutes, 23 seconds"},
4498             {t_2y_5M_3w_4d, UPRV_LENGTHOF(t_2y_5M_3w_4d), "2 years, 5 months, 3 weeks, 4 days"}};
4499 
4500     ExpectedResult abbrevData[] = {
4501             {t_1m_59_9996s, UPRV_LENGTHOF(t_1m_59_9996s), "1 min, 59.9996 sec"},
4502             {t_19m, UPRV_LENGTHOF(t_19m), "19 min"},
4503             {t_1h_23_5s, UPRV_LENGTHOF(t_1h_23_5s), "1 hr, 23.5 sec"},
4504             {t_1h_23_5m, UPRV_LENGTHOF(t_1h_23_5m), "1 hr, 23.5 min"},
4505             {t_1h_0m_23s, UPRV_LENGTHOF(t_1h_0m_23s), "1 hr, 0 min, 23 sec"},
4506             {t_2y_5M_3w_4d, UPRV_LENGTHOF(t_2y_5M_3w_4d), "2 yrs, 5 mths, 3 wks, 4 days"}};
4507 
4508     ExpectedResult narrowData[] = {
4509             {t_1m_59_9996s, UPRV_LENGTHOF(t_1m_59_9996s), "1m 59.9996s"},
4510             {t_19m, UPRV_LENGTHOF(t_19m), "19m"},
4511             {t_1h_23_5s, UPRV_LENGTHOF(t_1h_23_5s), "1h 23.5s"},
4512             {t_1h_23_5m, UPRV_LENGTHOF(t_1h_23_5m), "1h 23.5m"},
4513             {t_1h_0m_23s, UPRV_LENGTHOF(t_1h_0m_23s), "1h 0m 23s"},
4514             {t_2y_5M_3w_4d, UPRV_LENGTHOF(t_2y_5M_3w_4d), "2y 5m 3w 4d"}};
4515 
4516     ExpectedResult numericData[] = {
4517             {t_1m_59_9996s, UPRV_LENGTHOF(t_1m_59_9996s), "1:59.9996"},
4518             {t_19m, UPRV_LENGTHOF(t_19m), "19m"},
4519             {t_1h_23_5s, UPRV_LENGTHOF(t_1h_23_5s), "1:00:23.5"},
4520             {t_1h_23_5m, UPRV_LENGTHOF(t_1h_23_5m), "1:23.5"},
4521             {t_1h_0m_23s, UPRV_LENGTHOF(t_1h_0m_23s), "1:00:23"},
4522             {t_5h_17m, UPRV_LENGTHOF(t_5h_17m), "5:17"},
4523             {t_neg5h_17m, UPRV_LENGTHOF(t_neg5h_17m), "-5h 17m"},
4524             {t_19m_28s, UPRV_LENGTHOF(t_19m_28s), "19:28"},
4525             {t_2y_5M_3w_4d, UPRV_LENGTHOF(t_2y_5M_3w_4d), "2y 5m 3w 4d"},
4526             {t_0h_0m_9s, UPRV_LENGTHOF(t_0h_0m_9s), "0:00:09"},
4527             {t_6h_56_92m, UPRV_LENGTHOF(t_6h_56_92m), "6:56.92"},
4528             {t_6_7h_56_92m, UPRV_LENGTHOF(t_6_7h_56_92m), "6:56.92"},
4529             {t_3h_4s_5m, UPRV_LENGTHOF(t_3h_4s_5m), "3h 4s 5m"},
4530             {t_3h_5h, UPRV_LENGTHOF(t_3h_5h), "3h 5h"}};
4531 
4532     ExpectedResult fullDataDe[] = {
4533             {t_1m_59_9996s, UPRV_LENGTHOF(t_1m_59_9996s), "1 Minute, 59,9996 Sekunden"},
4534             {t_19m, UPRV_LENGTHOF(t_19m), "19 Minuten"},
4535             {t_1h_23_5s, UPRV_LENGTHOF(t_1h_23_5s), "1 Stunde, 23,5 Sekunden"},
4536             {t_1h_23_5m, UPRV_LENGTHOF(t_1h_23_5m), "1 Stunde, 23,5 Minuten"},
4537             {t_1h_0m_23s, UPRV_LENGTHOF(t_1h_0m_23s), "1 Stunde, 0 Minuten und 23 Sekunden"},
4538             {t_2y_5M_3w_4d, UPRV_LENGTHOF(t_2y_5M_3w_4d), "2 Jahre, 5 Monate, 3 Wochen und 4 Tage"}};
4539 
4540     ExpectedResult numericDataDe[] = {
4541             {t_1m_59_9996s, UPRV_LENGTHOF(t_1m_59_9996s), "1:59,9996"},
4542             {t_19m, UPRV_LENGTHOF(t_19m), "19 Min."},
4543             {t_1h_23_5s, UPRV_LENGTHOF(t_1h_23_5s), "1:00:23,5"},
4544             {t_1h_23_5m, UPRV_LENGTHOF(t_1h_23_5m), "1:23,5"},
4545             {t_1h_0m_23s, UPRV_LENGTHOF(t_1h_0m_23s), "1:00:23"},
4546             {t_5h_17m, UPRV_LENGTHOF(t_5h_17m), "5:17"},
4547             {t_19m_28s, UPRV_LENGTHOF(t_19m_28s), "19:28"},
4548             {t_2y_5M_3w_4d, UPRV_LENGTHOF(t_2y_5M_3w_4d), "2 J, 5 M, 3 W und 4 T"},
4549             {t_0h_0m_17s, UPRV_LENGTHOF(t_0h_0m_17s), "0:00:17"},
4550             {t_6h_56_92m, UPRV_LENGTHOF(t_6h_56_92m), "6:56,92"},
4551             {t_3h_5h, UPRV_LENGTHOF(t_3h_5h), "3 Std., 5 Std."}};
4552 
4553     ExpectedResult numericDataBn[] = {
4554             {t_1m_59_9996s, UPRV_LENGTHOF(t_1m_59_9996s), "\\u09E7:\\u09EB\\u09EF.\\u09EF\\u09EF\\u09EF\\u09EC"},
4555             {t_19m, UPRV_LENGTHOF(t_19m), "\\u09E7\\u09EF \\u09AE\\u09BF\\u0983"},
4556             {t_1h_23_5s, UPRV_LENGTHOF(t_1h_23_5s), "\\u09E7:\\u09E6\\u09E6:\\u09E8\\u09E9.\\u09EB"},
4557             {t_1h_0m_23s, UPRV_LENGTHOF(t_1h_0m_23s), "\\u09E7:\\u09E6\\u09E6:\\u09E8\\u09E9"},
4558             {t_1h_23_5m, UPRV_LENGTHOF(t_1h_23_5m), "\\u09E7:\\u09E8\\u09E9.\\u09EB"},
4559             {t_5h_17m, UPRV_LENGTHOF(t_5h_17m), "\\u09EB:\\u09E7\\u09ED"},
4560             {t_19m_28s, UPRV_LENGTHOF(t_19m_28s), "\\u09E7\\u09EF:\\u09E8\\u09EE"},
4561             {t_2y_5M_3w_4d, UPRV_LENGTHOF(t_2y_5M_3w_4d), "\\u09E8 \\u09AC\\u099B\\u09B0, \\u09EB \\u09AE\\u09BE\\u09B8, \\u09E9 \\u09B8\\u09AA\\u09CD\\u09A4\\u09BE\\u09B9, \\u09EA \\u09A6\\u09BF\\u09A8"},
4562             {t_0h_0m_17s, UPRV_LENGTHOF(t_0h_0m_17s), "\\u09E6:\\u09E6\\u09E6:\\u09E7\\u09ED"},
4563             {t_6h_56_92m, UPRV_LENGTHOF(t_6h_56_92m), "\\u09EC:\\u09EB\\u09EC.\\u09EF\\u09E8"},
4564             {t_3h_5h, UPRV_LENGTHOF(t_3h_5h), "\\u09E9 \\u0998\\u0983, \\u09EB \\u0998\\u0983"}};
4565 
4566     ExpectedResult numericDataBnLatn[] = {
4567             {t_1m_59_9996s, UPRV_LENGTHOF(t_1m_59_9996s), "1:59.9996"},
4568             {t_19m, UPRV_LENGTHOF(t_19m), "19 \\u09AE\\u09BF\\u0983"},
4569             {t_1h_23_5s, UPRV_LENGTHOF(t_1h_23_5s), "1:00:23.5"},
4570             {t_1h_0m_23s, UPRV_LENGTHOF(t_1h_0m_23s), "1:00:23"},
4571             {t_1h_23_5m, UPRV_LENGTHOF(t_1h_23_5m), "1:23.5"},
4572             {t_5h_17m, UPRV_LENGTHOF(t_5h_17m), "5:17"},
4573             {t_19m_28s, UPRV_LENGTHOF(t_19m_28s), "19:28"},
4574             {t_2y_5M_3w_4d, UPRV_LENGTHOF(t_2y_5M_3w_4d), "2 \\u09AC\\u099B\\u09B0, 5 \\u09AE\\u09BE\\u09B8, 3 \\u09B8\\u09AA\\u09CD\\u09A4\\u09BE\\u09B9, 4 \\u09A6\\u09BF\\u09A8"},
4575             {t_0h_0m_17s, UPRV_LENGTHOF(t_0h_0m_17s), "0:00:17"},
4576             {t_6h_56_92m, UPRV_LENGTHOF(t_6h_56_92m), "6:56.92"},
4577             {t_3h_5h, UPRV_LENGTHOF(t_3h_5h), "3 \\u0998\\u0983, 5 \\u0998\\u0983"}};
4578 
4579     ExpectedResult fullDataSpellout[] = {
4580             {t_1y, UPRV_LENGTHOF(t_1y), "one year"},
4581             {t_5M, UPRV_LENGTHOF(t_5M), "five months"},
4582             {t_4d, UPRV_LENGTHOF(t_4d), "four days"},
4583             {t_2h, UPRV_LENGTHOF(t_2h), "two hours"},
4584             {t_19m, UPRV_LENGTHOF(t_19m), "nineteen minutes"}};
4585 
4586     ExpectedResult fullDataSpelloutFr[] = {
4587             {t_1y, UPRV_LENGTHOF(t_1y), "un\\u00A0an"},
4588             {t_5M, UPRV_LENGTHOF(t_5M), "cinq\\u00A0mois"},
4589             {t_4d, UPRV_LENGTHOF(t_4d), "quatre\\u00A0jours"},
4590             {t_2h, UPRV_LENGTHOF(t_2h), "deux\\u00A0heures"},
4591             {t_19m, UPRV_LENGTHOF(t_19m), "dix-neuf minutes"}};
4592 
4593     Locale en(Locale::getEnglish());
4594     LocalPointer<NumberFormat> nf(NumberFormat::createInstance(en, status));
4595     if (U_FAILURE(status)) {
4596         dataerrln("Error creating number format en object - %s", u_errorName(status));
4597         return;
4598     }
4599     nf->setMaximumFractionDigits(4);
4600     MeasureFormat mf(en, UMEASFMT_WIDTH_WIDE, nf->clone(), status);
4601     if (!assertSuccess("Error creating measure format en WIDE", status)) {
4602         return;
4603     }
4604     verifyFormat("en WIDE", mf, fullData, UPRV_LENGTHOF(fullData));
4605 
4606     // exercise copy constructor
4607     {
4608         MeasureFormat mf2(mf);
4609         verifyFormat("en WIDE copy", mf2, fullData, UPRV_LENGTHOF(fullData));
4610     }
4611     // exercise clone
4612     {
4613         MeasureFormat *mf3 = mf.clone();
4614         verifyFormat("en WIDE copy", *mf3, fullData, UPRV_LENGTHOF(fullData));
4615         delete mf3;
4616     }
4617     mf = MeasureFormat(en, UMEASFMT_WIDTH_SHORT, nf->clone(), status);
4618     if (!assertSuccess("Error creating measure format en SHORT", status)) {
4619         return;
4620     }
4621     verifyFormat("en SHORT", mf, abbrevData, UPRV_LENGTHOF(abbrevData));
4622     mf = MeasureFormat(en, UMEASFMT_WIDTH_NARROW, nf->clone(), status);
4623     if (!assertSuccess("Error creating measure format en NARROW", status)) {
4624         return;
4625     }
4626     verifyFormat("en NARROW", mf, narrowData, UPRV_LENGTHOF(narrowData));
4627     mf = MeasureFormat(en, UMEASFMT_WIDTH_NUMERIC, nf->clone(), status);
4628     if (!assertSuccess("Error creating measure format en NUMERIC", status)) {
4629         return;
4630     }
4631     verifyFormat("en NUMERIC", mf, numericData, UPRV_LENGTHOF(numericData));
4632 
4633     Locale de(Locale::getGerman());
4634     nf.adoptInstead(NumberFormat::createInstance(de, status));
4635     if (!assertSuccess("Error creating number format de object", status)) {
4636         return;
4637     }
4638     nf->setMaximumFractionDigits(4);
4639     mf = MeasureFormat(de, UMEASFMT_WIDTH_WIDE, nf->clone(), status);
4640     if (!assertSuccess("Error creating measure format de WIDE", status)) {
4641         return;
4642     }
4643     verifyFormat("de WIDE", mf, fullDataDe, UPRV_LENGTHOF(fullDataDe));
4644     mf = MeasureFormat(de, UMEASFMT_WIDTH_NUMERIC, nf->clone(), status);
4645     if (!assertSuccess("Error creating measure format de NUMERIC", status)) {
4646         return;
4647     }
4648     verifyFormat("de NUMERIC", mf, numericDataDe, UPRV_LENGTHOF(numericDataDe));
4649 
4650     Locale bengali("bn");
4651     nf.adoptInstead(NumberFormat::createInstance(bengali, status));
4652     if (!assertSuccess("Error creating number format de object", status)) {
4653         return;
4654     }
4655     nf->setMaximumFractionDigits(4);
4656     mf = MeasureFormat(bengali, UMEASFMT_WIDTH_NUMERIC, nf->clone(), status);
4657     if (!assertSuccess("Error creating measure format bn NUMERIC", status)) {
4658         return;
4659     }
4660     verifyFormat("bn NUMERIC", mf, numericDataBn, UPRV_LENGTHOF(numericDataBn));
4661 
4662     Locale bengaliLatin("bn-u-nu-latn");
4663     nf.adoptInstead(NumberFormat::createInstance(bengaliLatin, status));
4664     if (!assertSuccess("Error creating number format de object", status)) {
4665         return;
4666     }
4667     nf->setMaximumFractionDigits(4);
4668     mf = MeasureFormat(bengaliLatin, UMEASFMT_WIDTH_NUMERIC, nf->clone(), status);
4669     if (!assertSuccess("Error creating measure format bn-u-nu-latn NUMERIC", status)) {
4670         return;
4671     }
4672     verifyFormat("bn-u-nu-latn NUMERIC", mf, numericDataBnLatn, UPRV_LENGTHOF(numericDataBnLatn));
4673 
4674     status = U_ZERO_ERROR;
4675     LocalPointer<RuleBasedNumberFormat> rbnf(new RuleBasedNumberFormat(URBNF_SPELLOUT, en, status));
4676     if (U_FAILURE(status)) {
4677         dataerrln("Error creating rbnf en object - %s", u_errorName(status));
4678         return;
4679     }
4680     mf = MeasureFormat(en, UMEASFMT_WIDTH_WIDE, rbnf->clone(), status);
4681     if (!assertSuccess("Error creating measure format en WIDE with rbnf", status)) {
4682         return;
4683     }
4684     verifyFormat("en WIDE rbnf", mf, fullDataSpellout, UPRV_LENGTHOF(fullDataSpellout));
4685 
4686     Locale fr(Locale::getFrench());
4687     LocalPointer<RuleBasedNumberFormat> rbnffr(new RuleBasedNumberFormat(URBNF_SPELLOUT, fr, status));
4688     if (U_FAILURE(status)) {
4689         dataerrln("Error creating rbnf fr object - %s", u_errorName(status));
4690         return;
4691     }
4692     mf = MeasureFormat(fr, UMEASFMT_WIDTH_WIDE, rbnffr->clone(), status);
4693     if (!assertSuccess("Error creating measure format fr WIDE with rbnf", status)) {
4694         return;
4695     }
4696     verifyFormat("fr WIDE rbnf", mf, fullDataSpelloutFr, UPRV_LENGTHOF(fullDataSpellout));
4697 }
4698 
Test10219FractionalPlurals()4699 void MeasureFormatTest::Test10219FractionalPlurals() {
4700     Locale en(Locale::getEnglish());
4701     double values[] = {1.588, 1.011};
4702     const char *expected[2][3] = {
4703             {"1 minute", "1.5 minutes", "1.58 minutes"},
4704             {"1 minute", "1.0 minutes", "1.01 minutes"}
4705     };
4706     UErrorCode status = U_ZERO_ERROR;
4707     for (int j = 0; j < UPRV_LENGTHOF(values); j++) {
4708         for (int i = 0; i < UPRV_LENGTHOF(expected[j]); i++) {
4709             DecimalFormat *df =
4710                   dynamic_cast<DecimalFormat *>(NumberFormat::createInstance(en, status));
4711             if (U_FAILURE(status)) {
4712                 dataerrln("Error creating Number format - %s", u_errorName(status));
4713                 return;
4714             }
4715             df->setRoundingMode(DecimalFormat::kRoundDown);
4716             df->setMinimumFractionDigits(i);
4717             df->setMaximumFractionDigits(i);
4718             MeasureFormat mf(en, UMEASFMT_WIDTH_WIDE, df, status);
4719             if (!assertSuccess("Error creating Measure format", status)) {
4720                 return;
4721             }
4722             Measure measure(values[j], MeasureUnit::createMinute(status), status);
4723             if (!assertSuccess("Error creating Measure unit", status)) {
4724                 return;
4725             }
4726             verifyFormat("Test10219", mf, &measure, 1, expected[j][i]);
4727         }
4728     }
4729 }
4730 
toMeasureUnit(MeasureUnit * adopted)4731 static MeasureUnit toMeasureUnit(MeasureUnit *adopted) {
4732     MeasureUnit result(*adopted);
4733     delete adopted;
4734     return result;
4735 }
4736 
TestGreek()4737 void MeasureFormatTest::TestGreek() {
4738     Locale locales[] = {Locale("el_GR"), Locale("el")};
4739     UErrorCode status = U_ZERO_ERROR;
4740     MeasureUnit units[] = {
4741         toMeasureUnit(MeasureUnit::createSecond(status)),
4742         toMeasureUnit(MeasureUnit::createMinute(status)),
4743         toMeasureUnit(MeasureUnit::createHour(status)),
4744         toMeasureUnit(MeasureUnit::createDay(status)),
4745         toMeasureUnit(MeasureUnit::createWeek(status)),
4746         toMeasureUnit(MeasureUnit::createMonth(status)),
4747         toMeasureUnit(MeasureUnit::createYear(status))};
4748     if (!assertSuccess("Error creating Measure units", status)) {
4749         return;
4750     }
4751     UMeasureFormatWidth styles[] = {
4752             UMEASFMT_WIDTH_WIDE,
4753             UMEASFMT_WIDTH_SHORT};
4754     int32_t numbers[] = {1, 7};
4755     const char *expected[] = {
4756         // "el_GR" 1 wide
4757         "1 \\u03B4\\u03B5\\u03C5\\u03C4\\u03B5\\u03C1\\u03CC\\u03BB\\u03B5\\u03C0\\u03C4\\u03BF",
4758         "1 \\u03BB\\u03B5\\u03C0\\u03C4\\u03CC",
4759         "1 \\u03CE\\u03C1\\u03B1",
4760         "1 \\u03B7\\u03BC\\u03AD\\u03C1\\u03B1",
4761         "1 \\u03B5\\u03B2\\u03B4\\u03BF\\u03BC\\u03AC\\u03B4\\u03B1",
4762         "1 \\u03BC\\u03AE\\u03BD\\u03B1\\u03C2",
4763         "1 \\u03AD\\u03C4\\u03BF\\u03C2",
4764         // "el_GR" 1 short
4765         "1 \\u03B4\\u03B5\\u03C5\\u03C4.",
4766         "1 \\u03BB.",
4767         "1 \\u03CE.",
4768         "1 \\u03B7\\u03BC\\u03AD\\u03C1\\u03B1",
4769         "1 \\u03B5\\u03B2\\u03B4.",
4770         "1 \\u03BC\\u03AE\\u03BD.",
4771         "1 \\u03AD\\u03C4.",            // year (one)
4772         // "el_GR" 7 wide
4773         "7 \\u03B4\\u03B5\\u03C5\\u03C4\\u03B5\\u03C1\\u03CC\\u03BB\\u03B5\\u03C0\\u03C4\\u03B1",
4774         "7 \\u03BB\\u03B5\\u03C0\\u03C4\\u03AC",
4775         "7 \\u03CE\\u03C1\\u03B5\\u03C2",
4776         "7 \\u03B7\\u03BC\\u03AD\\u03C1\\u03B5\\u03C2",
4777         "7 \\u03B5\\u03B2\\u03B4\\u03BF\\u03BC\\u03AC\\u03B4\\u03B5\\u03C2",
4778         "7 \\u03BC\\u03AE\\u03BD\\u03B5\\u03C2",
4779         "7 \\u03AD\\u03C4\\u03B7",
4780         // "el_GR" 7 short
4781         "7 \\u03B4\\u03B5\\u03C5\\u03C4.",
4782         "7 \\u03BB.",
4783         "7 \\u03CE.",            // hour (other)
4784         "7 \\u03B7\\u03BC\\u03AD\\u03C1\\u03B5\\u03C2",
4785         "7 \\u03B5\\u03B2\\u03B4.",
4786         "7 \\u03BC\\u03AE\\u03BD.",
4787         "7 \\u03AD\\u03C4.",            // year (other)
4788 
4789         // "el" 1 wide
4790         "1 \\u03B4\\u03B5\\u03C5\\u03C4\\u03B5\\u03C1\\u03CC\\u03BB\\u03B5\\u03C0\\u03C4\\u03BF",
4791         "1 \\u03BB\\u03B5\\u03C0\\u03C4\\u03CC",
4792         "1 \\u03CE\\u03C1\\u03B1",
4793         "1 \\u03B7\\u03BC\\u03AD\\u03C1\\u03B1",
4794         "1 \\u03B5\\u03B2\\u03B4\\u03BF\\u03BC\\u03AC\\u03B4\\u03B1",
4795         "1 \\u03BC\\u03AE\\u03BD\\u03B1\\u03C2",
4796         "1 \\u03AD\\u03C4\\u03BF\\u03C2",
4797         // "el" 1 short
4798         "1 \\u03B4\\u03B5\\u03C5\\u03C4.",
4799         "1 \\u03BB.",
4800         "1 \\u03CE.",
4801         "1 \\u03B7\\u03BC\\u03AD\\u03C1\\u03B1",
4802         "1 \\u03B5\\u03B2\\u03B4.",
4803         "1 \\u03BC\\u03AE\\u03BD.",
4804         "1 \\u03AD\\u03C4.",            // year (one)
4805         // "el" 7 wide
4806         "7 \\u03B4\\u03B5\\u03C5\\u03C4\\u03B5\\u03C1\\u03CC\\u03BB\\u03B5\\u03C0\\u03C4\\u03B1",
4807         "7 \\u03BB\\u03B5\\u03C0\\u03C4\\u03AC",
4808         "7 \\u03CE\\u03C1\\u03B5\\u03C2",
4809         "7 \\u03B7\\u03BC\\u03AD\\u03C1\\u03B5\\u03C2",
4810         "7 \\u03B5\\u03B2\\u03B4\\u03BF\\u03BC\\u03AC\\u03B4\\u03B5\\u03C2",
4811         "7 \\u03BC\\u03AE\\u03BD\\u03B5\\u03C2",
4812         "7 \\u03AD\\u03C4\\u03B7",
4813         // "el" 7 short
4814         "7 \\u03B4\\u03B5\\u03C5\\u03C4.",
4815         "7 \\u03BB.",
4816         "7 \\u03CE.",            // hour (other)
4817         "7 \\u03B7\\u03BC\\u03AD\\u03C1\\u03B5\\u03C2",
4818         "7 \\u03B5\\u03B2\\u03B4.",
4819         "7 \\u03BC\\u03AE\\u03BD.",
4820         "7 \\u03AD\\u03C4."};           // year (other)
4821 
4822     int32_t counter = 0;
4823     for (int32_t locIndex = 0; locIndex < UPRV_LENGTHOF(locales); ++locIndex ) {
4824         for( int32_t numIndex = 0; numIndex < UPRV_LENGTHOF(numbers); ++numIndex ) {
4825             for ( int32_t styleIndex = 0; styleIndex < UPRV_LENGTHOF(styles); ++styleIndex ) {
4826                 for ( int32_t unitIndex = 0; unitIndex < UPRV_LENGTHOF(units); ++unitIndex ) {
4827                     Measure measure(numbers[numIndex], new MeasureUnit(units[unitIndex]), status);
4828                     if (!assertSuccess("Error creating Measure", status)) {
4829                         return;
4830                     }
4831                     MeasureFormat fmt(locales[locIndex], styles[styleIndex], status);
4832                     if (!assertSuccess("Error creating Measure format", status)) {
4833                         return;
4834                     }
4835                     verifyFormat("TestGreek", fmt, &measure, 1, expected[counter]);
4836                     ++counter;
4837                 }
4838             }
4839         }
4840     }
4841 }
4842 
TestFormatSingleArg()4843 void MeasureFormatTest::TestFormatSingleArg() {
4844     UErrorCode status = U_ZERO_ERROR;
4845     MeasureFormat fmt("en", UMEASFMT_WIDTH_WIDE, status);
4846     if (!assertSuccess("Error creating formatter", status)) {
4847         return;
4848     }
4849     UnicodeString buffer;
4850     FieldPosition pos(FieldPosition::DONT_CARE);
4851     fmt.format(
4852             new Measure(3.5, MeasureUnit::createFoot(status), status),
4853             buffer,
4854             pos,
4855             status);
4856     if (!assertSuccess("Error formatting", status)) {
4857         return;
4858     }
4859     assertEquals(
4860             "TestFormatSingleArg",
4861             UnicodeString("3.5 feet"),
4862             buffer);
4863 }
4864 
TestFormatMeasuresZeroArg()4865 void MeasureFormatTest::TestFormatMeasuresZeroArg() {
4866     UErrorCode status = U_ZERO_ERROR;
4867     MeasureFormat fmt("en", UMEASFMT_WIDTH_WIDE, status);
4868     verifyFormat("TestFormatMeasuresZeroArg", fmt, nullptr, 0, "");
4869 }
4870 
TestSimplePer()4871 void MeasureFormatTest::TestSimplePer() {
4872     Locale en("en");
4873     UErrorCode status = U_ZERO_ERROR;
4874     LocalPointer<MeasureUnit> second(MeasureUnit::createSecond(status));
4875     LocalPointer<MeasureUnit> minute(MeasureUnit::createMinute(status));
4876     LocalPointer<MeasureUnit> pound(MeasureUnit::createPound(status));
4877     if (!assertSuccess("", status)) {
4878         return;
4879     }
4880 
4881     helperTestSimplePer(
4882             en, UMEASFMT_WIDTH_WIDE,
4883             1.0, *pound, *second, "1 pound per second");
4884     helperTestSimplePer(
4885             en, UMEASFMT_WIDTH_WIDE,
4886             2.0, *pound, *second, "2 pounds per second");
4887     helperTestSimplePer(
4888             en, UMEASFMT_WIDTH_WIDE,
4889             1.0, *pound, *minute, "1 pound per minute");
4890     helperTestSimplePer(
4891             en, UMEASFMT_WIDTH_WIDE,
4892             2.0, *pound, *minute, "2 pounds per minute");
4893 
4894     helperTestSimplePer(
4895             en, UMEASFMT_WIDTH_SHORT, 1.0, *pound, *second, "1 lb/s");
4896     helperTestSimplePer(
4897             en, UMEASFMT_WIDTH_SHORT, 2.0, *pound, *second, "2 lb/s");
4898     helperTestSimplePer(
4899             en, UMEASFMT_WIDTH_SHORT, 1.0, *pound, *minute, "1 lb/min");
4900     helperTestSimplePer(
4901             en, UMEASFMT_WIDTH_SHORT, 2.0, *pound, *minute, "2 lb/min");
4902 
4903     helperTestSimplePer(
4904             en, UMEASFMT_WIDTH_NARROW, 1.0, *pound, *second, "1#/s");
4905     helperTestSimplePer(
4906             en, UMEASFMT_WIDTH_NARROW, 2.0, *pound, *second, "2#/s");
4907     helperTestSimplePer(
4908             en, UMEASFMT_WIDTH_NARROW, 1.0, *pound, *minute, "1#/min");
4909     helperTestSimplePer(
4910             en, UMEASFMT_WIDTH_NARROW, 2.0, *pound, *minute, "2#/min");
4911 
4912     helperTestSimplePer(
4913             en, UMEASFMT_WIDTH_SHORT,
4914             23.3, *pound, *second, "23.3 lb/s",
4915             NumberFormat::kDecimalSeparatorField,
4916             2, 3);
4917 
4918     helperTestSimplePer(
4919             en, UMEASFMT_WIDTH_SHORT,
4920             23.3, *pound, *second, "23.3 lb/s",
4921             NumberFormat::kIntegerField,
4922             0, 2);
4923 
4924     helperTestSimplePer(
4925             en, UMEASFMT_WIDTH_SHORT,
4926             23.3, *pound, *minute, "23.3 lb/min",
4927             NumberFormat::kDecimalSeparatorField,
4928             2, 3);
4929 
4930     helperTestSimplePer(
4931             en, UMEASFMT_WIDTH_SHORT,
4932             23.3, *pound, *minute, "23.3 lb/min",
4933             NumberFormat::kIntegerField,
4934             0, 2);
4935 }
4936 
TestNumeratorPlurals()4937 void MeasureFormatTest::TestNumeratorPlurals() {
4938     Locale pl("pl");
4939     UErrorCode status = U_ZERO_ERROR;
4940     LocalPointer<MeasureUnit> second(MeasureUnit::createSecond(status));
4941     LocalPointer<MeasureUnit> foot(MeasureUnit::createFoot(status));
4942     if (!assertSuccess("", status)) {
4943         return;
4944     }
4945 
4946     helperTestSimplePer(
4947             pl,
4948             UMEASFMT_WIDTH_WIDE,
4949             1.0, *foot, *second, "1 stopa na sekund\\u0119");
4950     helperTestSimplePer(
4951             pl,
4952             UMEASFMT_WIDTH_WIDE,
4953             2.0, *foot, *second, "2 stopy na sekund\\u0119");
4954     helperTestSimplePer(
4955             pl,
4956             UMEASFMT_WIDTH_WIDE,
4957             5.0, *foot, *second, "5 st\\u00f3p na sekund\\u0119");
4958     helperTestSimplePer(
4959             pl, UMEASFMT_WIDTH_WIDE,
4960             1.5, *foot, *second, "1,5 stopy na sekund\\u0119");
4961 }
4962 
helperTestSimplePer(const Locale & locale,UMeasureFormatWidth width,double value,const MeasureUnit & unit,const MeasureUnit & perUnit,const char * expected)4963 void MeasureFormatTest::helperTestSimplePer(
4964         const Locale &locale,
4965         UMeasureFormatWidth width,
4966         double value,
4967         const MeasureUnit &unit,
4968         const MeasureUnit &perUnit,
4969         const char *expected) {
4970     helperTestSimplePer(
4971             locale,
4972             width,
4973             value,
4974             unit,
4975             perUnit,
4976             expected,
4977             FieldPosition::DONT_CARE,
4978             0,
4979             0);
4980 }
4981 
helperTestSimplePer(const Locale & locale,UMeasureFormatWidth width,double value,const MeasureUnit & unit,const MeasureUnit & perUnit,const char * expected,int32_t field,int32_t expected_start,int32_t expected_end)4982 void MeasureFormatTest::helperTestSimplePer(
4983         const Locale &locale,
4984         UMeasureFormatWidth width,
4985         double value,
4986         const MeasureUnit &unit,
4987         const MeasureUnit &perUnit,
4988         const char *expected,
4989         int32_t field,
4990         int32_t expected_start,
4991         int32_t expected_end) {
4992     UErrorCode status = U_ZERO_ERROR;
4993     FieldPosition pos(field);
4994     MeasureFormat fmt(locale, width, status);
4995     if (!assertSuccess("Error creating format object", status)) {
4996         return;
4997     }
4998     Measure measure(value, unit.clone(), status);
4999     if (!assertSuccess("Error creating measure object", status)) {
5000         return;
5001     }
5002     UnicodeString prefix("prefix: ");
5003     UnicodeString buffer(prefix);
5004     fmt.formatMeasurePerUnit(
5005             measure,
5006             perUnit,
5007             buffer,
5008             pos,
5009             status);
5010     if (!assertSuccess("Error formatting measures with per", status)) {
5011         return;
5012     }
5013     UnicodeString uexpected(expected);
5014     uexpected = prefix + uexpected;
5015     assertEquals(
5016             "TestSimplePer",
5017             uexpected.unescape(),
5018             buffer);
5019     if (field != FieldPosition::DONT_CARE) {
5020         assertEquals(
5021                 "Start", expected_start, pos.getBeginIndex() - prefix.length());
5022         assertEquals(
5023                 "End", expected_end, pos.getEndIndex() - prefix.length());
5024     }
5025 }
5026 
TestMultiples()5027 void MeasureFormatTest::TestMultiples() {
5028     Locale ru("ru");
5029     Locale en("en");
5030     helperTestMultiples(en, UMEASFMT_WIDTH_WIDE,   "2 miles, 1 foot, 2.3 inches");
5031     helperTestMultiples(en, UMEASFMT_WIDTH_SHORT,  "2 mi, 1 ft, 2.3 in");
5032     helperTestMultiples(en, UMEASFMT_WIDTH_NARROW, "2mi 1\\u2032 2.3\\u2033");
5033     helperTestMultiples(ru, UMEASFMT_WIDTH_WIDE,   "2 \\u043C\\u0438\\u043B\\u0438 1 \\u0444\\u0443\\u0442 2,3 \\u0434\\u044E\\u0439\\u043C\\u0430");
5034     helperTestMultiples(ru, UMEASFMT_WIDTH_SHORT,  "2 \\u043C\\u0438 1 \\u0444\\u0442 2,3 \\u0434\\u044E\\u0439\\u043C.");
5035     helperTestMultiples(ru, UMEASFMT_WIDTH_NARROW, "2 \\u043C\\u0438 1 \\u0444\\u0442 2,3 \\u0434\\u044E\\u0439\\u043C.");
5036 }
5037 
helperTestMultiples(const Locale & locale,UMeasureFormatWidth width,const char * expected)5038 void MeasureFormatTest::helperTestMultiples(
5039         const Locale &locale,
5040         UMeasureFormatWidth width,
5041         const char *expected) {
5042     UErrorCode status = U_ZERO_ERROR;
5043     FieldPosition pos(FieldPosition::DONT_CARE);
5044     MeasureFormat fmt(locale, width, status);
5045     if (!assertSuccess("Error creating format object", status)) {
5046         return;
5047     }
5048     Measure measures[] = {
5049             Measure(2.0, MeasureUnit::createMile(status), status),
5050             Measure(1.0, MeasureUnit::createFoot(status), status),
5051             Measure(2.3, MeasureUnit::createInch(status), status)};
5052     if (!assertSuccess("Error creating measures", status)) {
5053         return;
5054     }
5055     UnicodeString buffer;
5056     fmt.formatMeasures(measures, UPRV_LENGTHOF(measures), buffer, pos, status);
5057     if (!assertSuccess("Error formatting measures", status)) {
5058         return;
5059     }
5060     assertEquals("TestMultiples", UnicodeString(expected).unescape(), buffer);
5061 }
5062 
TestManyLocaleDurations()5063 void MeasureFormatTest::TestManyLocaleDurations() {
5064     UErrorCode status = U_ZERO_ERROR;
5065     Measure measures[] = {
5066             Measure(5.0, MeasureUnit::createHour(status), status),
5067             Measure(37.0, MeasureUnit::createMinute(status), status)};
5068     if (!assertSuccess("Error creating measures", status)) {
5069         return;
5070     }
5071     helperTestManyLocaleDurations("da", UMEASFMT_WIDTH_NARROW,  measures, UPRV_LENGTHOF(measures), "5 t og 37 m");
5072     helperTestManyLocaleDurations("da", UMEASFMT_WIDTH_NUMERIC, measures, UPRV_LENGTHOF(measures), "5.37");
5073     helperTestManyLocaleDurations("de", UMEASFMT_WIDTH_NARROW,  measures, UPRV_LENGTHOF(measures), "5 Std., 37 Min.");
5074     helperTestManyLocaleDurations("de", UMEASFMT_WIDTH_NUMERIC, measures, UPRV_LENGTHOF(measures), "5:37");
5075     helperTestManyLocaleDurations("en", UMEASFMT_WIDTH_NARROW,  measures, UPRV_LENGTHOF(measures), "5h 37m");
5076     helperTestManyLocaleDurations("en", UMEASFMT_WIDTH_NUMERIC, measures, UPRV_LENGTHOF(measures), "5:37");
5077     helperTestManyLocaleDurations("en_GB", UMEASFMT_WIDTH_NARROW,  measures, UPRV_LENGTHOF(measures), "5h 37m");
5078     helperTestManyLocaleDurations("en_GB", UMEASFMT_WIDTH_NUMERIC, measures, UPRV_LENGTHOF(measures), "5:37");
5079     helperTestManyLocaleDurations("es", UMEASFMT_WIDTH_NARROW,  measures, UPRV_LENGTHOF(measures), "5h 37min");
5080     helperTestManyLocaleDurations("es", UMEASFMT_WIDTH_NUMERIC, measures, UPRV_LENGTHOF(measures), "5:37");
5081     helperTestManyLocaleDurations("fi", UMEASFMT_WIDTH_NARROW,  measures, UPRV_LENGTHOF(measures), "5t 37min");
5082     helperTestManyLocaleDurations("fi", UMEASFMT_WIDTH_NUMERIC, measures, UPRV_LENGTHOF(measures), "5.37");
5083     helperTestManyLocaleDurations("fr", UMEASFMT_WIDTH_NARROW,  measures, UPRV_LENGTHOF(measures), "5h 37min");
5084     helperTestManyLocaleDurations("fr", UMEASFMT_WIDTH_NUMERIC, measures, UPRV_LENGTHOF(measures), "5:37");
5085     helperTestManyLocaleDurations("is", UMEASFMT_WIDTH_NARROW,  measures, UPRV_LENGTHOF(measures), "5 klst. og 37 m\\u00EDn.");
5086     helperTestManyLocaleDurations("is", UMEASFMT_WIDTH_NUMERIC, measures, UPRV_LENGTHOF(measures), "5:37");
5087     helperTestManyLocaleDurations("ja", UMEASFMT_WIDTH_NARROW,  measures, UPRV_LENGTHOF(measures), "5h37m");
5088     helperTestManyLocaleDurations("ja", UMEASFMT_WIDTH_NUMERIC, measures, UPRV_LENGTHOF(measures), "5:37");
5089     helperTestManyLocaleDurations("nb", UMEASFMT_WIDTH_NARROW,  measures, UPRV_LENGTHOF(measures), "5t, 37m");
5090     helperTestManyLocaleDurations("nb", UMEASFMT_WIDTH_NUMERIC, measures, UPRV_LENGTHOF(measures), "5:37");
5091     helperTestManyLocaleDurations("nl", UMEASFMT_WIDTH_NARROW,  measures, UPRV_LENGTHOF(measures), "5 u, 37 m");
5092     helperTestManyLocaleDurations("nl", UMEASFMT_WIDTH_NUMERIC, measures, UPRV_LENGTHOF(measures), "5:37");
5093     helperTestManyLocaleDurations("nn", UMEASFMT_WIDTH_NARROW,  measures, UPRV_LENGTHOF(measures), "5t 37m");
5094     helperTestManyLocaleDurations("nn", UMEASFMT_WIDTH_NUMERIC, measures, UPRV_LENGTHOF(measures), "5:37");
5095     helperTestManyLocaleDurations("sv", UMEASFMT_WIDTH_NARROW,  measures, UPRV_LENGTHOF(measures), "5h 37m");
5096     helperTestManyLocaleDurations("sv", UMEASFMT_WIDTH_NUMERIC, measures, UPRV_LENGTHOF(measures), "5:37");
5097     helperTestManyLocaleDurations("zh", UMEASFMT_WIDTH_NARROW,  measures, UPRV_LENGTHOF(measures), "5\\u5C0F\\u65F637\\u5206\\u949F");
5098     helperTestManyLocaleDurations("zh", UMEASFMT_WIDTH_NUMERIC, measures, UPRV_LENGTHOF(measures), "5:37");
5099 }
5100 
helperTestManyLocaleDurations(const char * localeID,UMeasureFormatWidth width,const Measure * measures,int32_t measureCount,const char * expected)5101 void MeasureFormatTest::helperTestManyLocaleDurations( const char *localeID,
5102                                                        UMeasureFormatWidth width,
5103                                                        const Measure *measures,
5104                                                        int32_t measureCount,
5105                                                        const char *expected) {
5106     UErrorCode status = U_ZERO_ERROR;
5107     MeasureFormat fmt(Locale(localeID), width, status);
5108     if (U_FAILURE(status)) {
5109         errln("Could not create MeasureFormat for locale %s, width %d, status: %s", localeID, (int)width, u_errorName(status));
5110         return;
5111     }
5112     UnicodeString buffer;
5113     FieldPosition pos(FieldPosition::DONT_CARE);
5114     fmt.formatMeasures(measures, measureCount, buffer, pos, status);
5115     if (U_FAILURE(status)) {
5116         errln("MeasureFormat::formatMeasures failed for locale %s, width %d, status: %s", localeID, (int)width, u_errorName(status));
5117         return;
5118     }
5119     UnicodeString expStr(UnicodeString(expected).unescape());
5120     if (buffer != expStr) {
5121         errln("MeasureFormat::formatMeasures for locale " + UnicodeString(localeID) + ", width " + width + ", expected \"" + expStr + "\", got \"" + buffer + "\"");
5122     }
5123 }
5124 
TestGram()5125 void MeasureFormatTest::TestGram() {
5126     UErrorCode status = U_ZERO_ERROR;
5127     MeasureFormat fmt("en", UMEASFMT_WIDTH_SHORT, status);
5128     if (!assertSuccess("Error creating format object", status)) {
5129         return;
5130     }
5131     Measure gram((double)1, MeasureUnit::createGram(status), status);
5132     Measure gforce((double)1, MeasureUnit::createGForce(status), status);
5133     if (!assertSuccess("Error creating measures", status)) {
5134         return;
5135     }
5136     verifyFormat("TestGram", fmt, &gram, 1, "1 g");
5137     verifyFormat("TestGram", fmt, &gforce, 1, "1 G");
5138 }
5139 
TestCurrencies()5140 void MeasureFormatTest::TestCurrencies() {
5141     char16_t USD[4] = {};
5142     u_uastrcpy(USD, "USD");
5143     UErrorCode status = U_ZERO_ERROR;
5144     CurrencyUnit USD_unit(USD, status);
5145     assertEquals("Currency Unit", USD, USD_unit.getISOCurrency());
5146     if (!assertSuccess("Error creating CurrencyUnit", status)) {
5147         return;
5148     }
5149     CurrencyAmount USD_1(1.0, USD, status);
5150     assertEquals("Currency Code", USD, USD_1.getISOCurrency());
5151     CurrencyAmount USD_2(2.0, USD, status);
5152     CurrencyAmount USD_NEG_1(-1.0, USD, status);
5153     if (!assertSuccess("Error creating currencies", status)) {
5154         return;
5155     }
5156     Locale en("en");
5157     MeasureFormat fmt(en, UMEASFMT_WIDTH_WIDE, status);
5158     if (!assertSuccess("Error creating format object", status)) {
5159         return;
5160     }
5161     verifyFormat("TestCurrenciesWide", fmt, &USD_NEG_1, 1, "-1.00 US dollars");
5162     verifyFormat("TestCurrenciesWide", fmt, &USD_1, 1, "1.00 US dollars");
5163     verifyFormat("TestCurrenciesWide", fmt, &USD_2, 1, "2.00 US dollars");
5164     fmt = MeasureFormat(en, UMEASFMT_WIDTH_SHORT, status);
5165     if (!assertSuccess("Error creating format object", status)) {
5166         return;
5167     }
5168     verifyFormat("TestCurrenciesShort", fmt, &USD_NEG_1, 1, "-USD\\u00A01.00");
5169     verifyFormat("TestCurrenciesShort", fmt, &USD_1, 1, "USD\\u00A01.00");
5170     verifyFormat("TestCurrenciesShort", fmt, &USD_2, 1, "USD\\u00A02.00");
5171     fmt = MeasureFormat(en, UMEASFMT_WIDTH_NARROW, status);
5172     if (!assertSuccess("Error creating format object", status)) {
5173         return;
5174     }
5175     verifyFormat("TestCurrenciesNarrow", fmt, &USD_NEG_1, 1, "-$1.00");
5176     verifyFormat("TestCurrenciesNarrow", fmt, &USD_1, 1, "$1.00");
5177     verifyFormat("TestCurrenciesNarrow", fmt, &USD_2, 1, "$2.00");
5178     fmt = MeasureFormat(en, UMEASFMT_WIDTH_NUMERIC, status);
5179     if (!assertSuccess("Error creating format object", status)) {
5180         return;
5181     }
5182     verifyFormat("TestCurrenciesNumeric", fmt, &USD_NEG_1, 1, "-$1.00");
5183     verifyFormat("TestCurrenciesNumeric", fmt, &USD_1, 1, "$1.00");
5184     verifyFormat("TestCurrenciesNumeric", fmt, &USD_2, 1, "$2.00");
5185 }
5186 
TestDisplayNames()5187 void MeasureFormatTest::TestDisplayNames() {
5188     UErrorCode status = U_ZERO_ERROR;
5189     helperTestDisplayName( MeasureUnit::createYear(status), "en", UMEASFMT_WIDTH_WIDE, "years" );
5190     helperTestDisplayName( MeasureUnit::createYear(status), "ja", UMEASFMT_WIDTH_WIDE, "\\u5E74" );
5191     helperTestDisplayName( MeasureUnit::createYear(status), "es", UMEASFMT_WIDTH_WIDE, "a\\u00F1os" );
5192     helperTestDisplayName( MeasureUnit::createYear(status), "pt", UMEASFMT_WIDTH_WIDE, "anos" );
5193     helperTestDisplayName( MeasureUnit::createYear(status), "pt-PT", UMEASFMT_WIDTH_WIDE, "anos" );
5194     helperTestDisplayName( MeasureUnit::createAmpere(status), "en", UMEASFMT_WIDTH_WIDE, "amperes" );
5195     helperTestDisplayName( MeasureUnit::createAmpere(status), "ja", UMEASFMT_WIDTH_WIDE, "\\u30A2\\u30F3\\u30DA\\u30A2" );
5196     helperTestDisplayName( MeasureUnit::createAmpere(status), "es", UMEASFMT_WIDTH_WIDE, "amperios" );
5197     helperTestDisplayName( MeasureUnit::createAmpere(status), "pt", UMEASFMT_WIDTH_WIDE, "amperes" );
5198     helperTestDisplayName( MeasureUnit::createAmpere(status), "pt-PT", UMEASFMT_WIDTH_WIDE, "amperes" );
5199     helperTestDisplayName( MeasureUnit::createMeterPerSecondSquared(status), "pt", UMEASFMT_WIDTH_WIDE, "metros por segundo ao quadrado" );
5200     helperTestDisplayName( MeasureUnit::createMeterPerSecondSquared(status), "pt-PT", UMEASFMT_WIDTH_WIDE, "metros por segundo quadrado" );
5201     helperTestDisplayName( MeasureUnit::createSquareKilometer(status), "pt", UMEASFMT_WIDTH_NARROW, "km\\u00B2" );
5202     helperTestDisplayName( MeasureUnit::createSquareKilometer(status), "pt", UMEASFMT_WIDTH_SHORT, "km\\u00B2" );
5203     helperTestDisplayName( MeasureUnit::createSquareKilometer(status), "pt", UMEASFMT_WIDTH_WIDE, "quil\\u00F4metros quadrados" );
5204     helperTestDisplayName( MeasureUnit::createSecond(status), "pt-PT", UMEASFMT_WIDTH_NARROW, "s" );
5205     helperTestDisplayName( MeasureUnit::createSecond(status), "pt-PT", UMEASFMT_WIDTH_SHORT, "s" );
5206     helperTestDisplayName( MeasureUnit::createSecond(status), "pt-PT", UMEASFMT_WIDTH_WIDE, "segundos" );
5207     helperTestDisplayName( MeasureUnit::createSecond(status), "pt", UMEASFMT_WIDTH_NARROW, "s" );
5208     helperTestDisplayName( MeasureUnit::createSecond(status), "pt", UMEASFMT_WIDTH_SHORT, "s" );
5209     helperTestDisplayName( MeasureUnit::createSecond(status), "pt", UMEASFMT_WIDTH_WIDE, "segundos" );
5210     assertSuccess("Error creating measure units", status);
5211 }
5212 
helperTestDisplayName(const MeasureUnit * unit,const char * localeID,UMeasureFormatWidth width,const char * expected)5213 void MeasureFormatTest::helperTestDisplayName(const MeasureUnit *unit,
5214                             const char *localeID,
5215                             UMeasureFormatWidth width,
5216                             const char *expected) {
5217     UErrorCode status = U_ZERO_ERROR;
5218     MeasureFormat fmt(Locale(localeID), width, status);
5219     if (U_FAILURE(status)) {
5220         errln("Could not create MeasureFormat for locale %s, width %d, status: %s",
5221             localeID, (int)width, u_errorName(status));
5222         return;
5223     }
5224 
5225     UnicodeString dnam = fmt.getUnitDisplayName(*unit, status);
5226     if (U_FAILURE(status)) {
5227         errln("MeasureFormat::getUnitDisplayName failed for unit %s-%s, locale %s, width %d, status: %s",
5228             unit->getType(), unit->getSubtype(), localeID, (int)width, u_errorName(status));
5229         return;
5230     }
5231 
5232     UnicodeString expStr(UnicodeString(expected).unescape());
5233     if (dnam != expStr) {
5234         errln("MeasureFormat::getUnitDisplayName for unit %s-%s, locale %s, width %d: expected \"%s\", got \"%s\"",
5235             unit->getType(), unit->getSubtype(), localeID, (int)width, CStr(expStr)(), CStr(dnam)());
5236     }
5237 
5238     // Delete the measure unit
5239     delete unit;
5240 }
5241 
TestFieldPosition()5242 void MeasureFormatTest::TestFieldPosition() {
5243     UErrorCode status = U_ZERO_ERROR;
5244     MeasureFormat fmt("en", UMEASFMT_WIDTH_SHORT, status);
5245     if (!assertSuccess("Error creating format object", status)) {
5246         return;
5247     }
5248     Measure measure(43.5, MeasureUnit::createFoot(status), status);
5249     if (!assertSuccess("Error creating measure object 1", status)) {
5250         return;
5251     }
5252     UnicodeString prefix("123456: ");
5253     verifyFieldPosition(
5254             "",
5255             fmt,
5256             prefix,
5257             &measure,
5258             1,
5259             NumberFormat::kDecimalSeparatorField,
5260             10,
5261             11);
5262     measure = Measure(43.0, MeasureUnit::createFoot(status), status);
5263     if (!assertSuccess("Error creating measure object 2", status)) {
5264         return;
5265     }
5266     verifyFieldPosition(
5267             "",
5268             fmt,
5269             prefix,
5270             &measure,
5271             1,
5272             NumberFormat::kDecimalSeparatorField,
5273             0,
5274             0);
5275 }
5276 
TestFieldPositionMultiple()5277 void MeasureFormatTest::TestFieldPositionMultiple() {
5278     UErrorCode status = U_ZERO_ERROR;
5279     MeasureFormat fmt("en", UMEASFMT_WIDTH_SHORT, status);
5280     if (!assertSuccess("Error creating format object", status)) {
5281         return;
5282     }
5283     Measure first[] = {
5284       Measure((double)354, MeasureUnit::createMeter(status), status),
5285       Measure((double)23, MeasureUnit::createCentimeter(status), status)};
5286     Measure second[] = {
5287       Measure((double)354, MeasureUnit::createMeter(status), status),
5288       Measure((double)23, MeasureUnit::createCentimeter(status), status),
5289       Measure((double)5.4, MeasureUnit::createMillimeter(status), status)};
5290     Measure third[] = {
5291       Measure((double)3, MeasureUnit::createMeter(status), status),
5292       Measure((double)23, MeasureUnit::createCentimeter(status), status),
5293       Measure((double)5, MeasureUnit::createMillimeter(status), status)};
5294     if (!assertSuccess("Error creating measure objects", status)) {
5295         return;
5296     }
5297     UnicodeString prefix("123456: ");
5298     verifyFieldPosition(
5299             "Integer",
5300             fmt,
5301             prefix,
5302             first,
5303             UPRV_LENGTHOF(first),
5304             NumberFormat::kIntegerField,
5305             8,
5306             11);
5307     verifyFieldPosition(
5308             "Decimal separator",
5309             fmt,
5310             prefix,
5311             second,
5312             UPRV_LENGTHOF(second),
5313             NumberFormat::kDecimalSeparatorField,
5314             23,
5315             24);
5316     verifyFieldPosition(
5317             "no decimal separator",
5318             fmt,
5319             prefix,
5320             third,
5321             UPRV_LENGTHOF(third),
5322             NumberFormat::kDecimalSeparatorField,
5323             0,
5324             0);
5325 }
5326 
TestBadArg()5327 void MeasureFormatTest::TestBadArg() {
5328     UErrorCode status = U_ZERO_ERROR;
5329     MeasureFormat fmt("en", UMEASFMT_WIDTH_SHORT, status);
5330     if (!assertSuccess("Error creating format object", status)) {
5331         return;
5332     }
5333     FieldPosition pos(FieldPosition::DONT_CARE);
5334     UnicodeString buffer;
5335     fmt.format(
5336             9.3,
5337             buffer,
5338             pos,
5339             status);
5340     if (status != U_ILLEGAL_ARGUMENT_ERROR) {
5341         errln("Expected ILLEGAL_ARGUMENT_ERROR");
5342     }
5343 }
5344 
TestEquality()5345 void MeasureFormatTest::TestEquality() {
5346     UErrorCode status = U_ZERO_ERROR;
5347     NumberFormat* nfeq = NumberFormat::createInstance("en", status);
5348     NumberFormat* nfne = NumberFormat::createInstance("fr", status);
5349     MeasureFormat fmt("en", UMEASFMT_WIDTH_SHORT, status);
5350     MeasureFormat fmtEq2("en", UMEASFMT_WIDTH_SHORT, nfeq, status);
5351     MeasureFormat fmtne1("en", UMEASFMT_WIDTH_WIDE, status);
5352     MeasureFormat fmtne2("fr", UMEASFMT_WIDTH_SHORT, status);
5353     MeasureFormat fmtne3("en", UMEASFMT_WIDTH_SHORT, nfne, status);
5354     if (U_FAILURE(status)) {
5355         dataerrln("Error creating MeasureFormats - %s", u_errorName(status));
5356         return;
5357     }
5358     MeasureFormat fmtEq(fmt);
5359     assertTrue("Equal", fmt == fmtEq);
5360     assertTrue("Equal2", fmt == fmtEq2);
5361     assertFalse("Equal Neg", fmt != fmtEq);
5362     assertTrue("Not Equal 1", fmt != fmtne1);
5363     assertFalse("Not Equal Neg 1", fmt == fmtne1);
5364     assertTrue("Not Equal 2", fmt != fmtne2);
5365     assertTrue("Not Equal 3", fmt != fmtne3);
5366 }
5367 
TestGroupingSeparator()5368 void MeasureFormatTest::TestGroupingSeparator() {
5369     UErrorCode status = U_ZERO_ERROR;
5370     Locale en("en");
5371     MeasureFormat fmt(en, UMEASFMT_WIDTH_SHORT, status);
5372     if (!assertSuccess("Error creating format object", status)) {
5373         return;
5374     }
5375     Measure ms[] = {
5376             Measure((int32_t)INT32_MAX, MeasureUnit::createYear(status), status),
5377             Measure((int32_t)INT32_MIN, MeasureUnit::createMonth(status), status),
5378             Measure(-987.0, MeasureUnit::createDay(status), status),
5379             Measure(1362.0, MeasureUnit::createHour(status), status),
5380             Measure(987.0, MeasureUnit::createMinute(status), status)};
5381     FieldPosition pos(NumberFormat::kGroupingSeparatorField);
5382     UnicodeString appendTo;
5383     fmt.formatMeasures(ms, 5, appendTo, pos, status);
5384     if (!assertSuccess("Error formatting", status)) {
5385         return;
5386     }
5387     assertEquals(
5388             "grouping separator",
5389             "2,147,483,647 yrs, -2,147,483,648 mths, -987 days, 1,362 hr, 987 min",
5390             appendTo);
5391     assertEquals("begin index", 1, pos.getBeginIndex());
5392     assertEquals("end index", 2, pos.getEndIndex());
5393 }
5394 
TestDoubleZero()5395 void MeasureFormatTest::TestDoubleZero() {
5396     UErrorCode status = U_ZERO_ERROR;
5397     Measure measures[] = {
5398         Measure(4.7, MeasureUnit::createHour(status), status),
5399         Measure(23.0, MeasureUnit::createMinute(status), status),
5400         Measure(16.0, MeasureUnit::createSecond(status), status)};
5401     Locale en("en");
5402     NumberFormat *nf = NumberFormat::createInstance(en, status);
5403     MeasureFormat fmt("en", UMEASFMT_WIDTH_WIDE, nf, status);
5404     UnicodeString appendTo;
5405     FieldPosition pos(FieldPosition::DONT_CARE);
5406     if (U_FAILURE(status)) {
5407         dataerrln("Error creating formatter - %s", u_errorName(status));
5408         return;
5409     }
5410     nf->setMinimumFractionDigits(2);
5411     nf->setMaximumFractionDigits(2);
5412     fmt.formatMeasures(measures, UPRV_LENGTHOF(measures), appendTo, pos, status);
5413     if (!assertSuccess("Error formatting", status)) {
5414         return;
5415     }
5416     assertEquals(
5417             "TestDoubleZero",
5418             UnicodeString("4 hours, 23 minutes, 16.00 seconds"),
5419             appendTo);
5420     measures[0] = Measure(-4.7, MeasureUnit::createHour(status), status);
5421     appendTo.remove();
5422     fmt.formatMeasures(measures, UPRV_LENGTHOF(measures), appendTo, pos, status);
5423     if (!assertSuccess("Error formatting", status)) {
5424         return;
5425     }
5426     assertEquals(
5427             "TestDoubleZero",
5428             UnicodeString("-4 hours, 23 minutes, 16.00 seconds"),
5429             appendTo);
5430 }
5431 
TestUnitPerUnitResolution()5432 void MeasureFormatTest::TestUnitPerUnitResolution() {
5433     UErrorCode status = U_ZERO_ERROR;
5434     Locale en("en");
5435     MeasureFormat fmt("en", UMEASFMT_WIDTH_SHORT, status);
5436     Measure measure(50.0, MeasureUnit::createPoundForce(status), status);
5437     LocalPointer<MeasureUnit> sqInch(MeasureUnit::createSquareInch(status));
5438     if (!assertSuccess("Create of format unit and per unit", status)) {
5439         return;
5440     }
5441     FieldPosition pos(FieldPosition::DONT_CARE);
5442     UnicodeString actual;
5443     fmt.formatMeasurePerUnit(
5444             measure,
5445             *sqInch,
5446             actual,
5447             pos,
5448             status);
5449     assertEquals("", "50 psi", actual);
5450 }
5451 
TestIndividualPluralFallback()5452 void MeasureFormatTest::TestIndividualPluralFallback() {
5453     // See ticket #11986 "incomplete fallback in MeasureFormat".
5454     // In CLDR 28, fr_CA temperature-generic/short has only the "one" form,
5455     // and falls back to fr for the "other" form.
5456     IcuTestErrorCode errorCode(*this, "TestIndividualPluralFallback");
5457     MeasureFormat mf("fr_CA", UMEASFMT_WIDTH_SHORT, errorCode);
5458     if (errorCode.errIfFailureAndReset("MeasureFormat mf(...) failed.")) {
5459         return;
5460     }
5461     LocalPointer<Measure> twoDeg(
5462         new Measure(2.0, MeasureUnit::createGenericTemperature(errorCode), errorCode), errorCode);
5463     if (errorCode.errIfFailureAndReset("Creating twoDeg failed.")) {
5464         return;
5465     }
5466     UnicodeString expected = UNICODE_STRING_SIMPLE("2\\u00B0").unescape();
5467     UnicodeString actual;
5468     // Formattable adopts the pointer
5469     mf.format(Formattable(twoDeg.orphan()), actual, errorCode);
5470     if (errorCode.errIfFailureAndReset("mf.format(...) failed.")) {
5471         return;
5472     }
5473     assertEquals("2 deg temp in fr_CA", expected, actual, true);
5474     errorCode.errIfFailureAndReset("mf.format failed");
5475 }
5476 
Test20332_PersonUnits()5477 void MeasureFormatTest::Test20332_PersonUnits() {
5478     IcuTestErrorCode status(*this, "Test20332_PersonUnits");
5479     const struct TestCase {
5480         const char* locale;
5481         MeasureUnit* unitToAdopt;
5482         UMeasureFormatWidth width;
5483         const char* expected;
5484     } cases[] = {
5485         {"en-us", MeasureUnit::createYearPerson(status), UMEASFMT_WIDTH_NARROW, "25y"},
5486         {"en-us", MeasureUnit::createYearPerson(status), UMEASFMT_WIDTH_SHORT, "25 yrs"},
5487         {"en-us", MeasureUnit::createYearPerson(status), UMEASFMT_WIDTH_WIDE, "25 years"},
5488         {"en-us", MeasureUnit::createMonthPerson(status), UMEASFMT_WIDTH_NARROW, "25m"},
5489         {"en-us", MeasureUnit::createMonthPerson(status), UMEASFMT_WIDTH_SHORT, "25 mths"},
5490         {"en-us", MeasureUnit::createMonthPerson(status), UMEASFMT_WIDTH_WIDE, "25 months"},
5491         {"en-us", MeasureUnit::createWeekPerson(status), UMEASFMT_WIDTH_NARROW, "25w"},
5492         {"en-us", MeasureUnit::createWeekPerson(status), UMEASFMT_WIDTH_SHORT, "25 wks"},
5493         {"en-us", MeasureUnit::createWeekPerson(status), UMEASFMT_WIDTH_WIDE, "25 weeks"},
5494         {"en-us", MeasureUnit::createDayPerson(status), UMEASFMT_WIDTH_NARROW, "25d"},
5495         {"en-us", MeasureUnit::createDayPerson(status), UMEASFMT_WIDTH_SHORT, "25 days"},
5496         {"en-us", MeasureUnit::createDayPerson(status), UMEASFMT_WIDTH_WIDE, "25 days"}
5497     };
5498     for (const auto& cas : cases) {
5499         MeasureFormat mf(cas.locale, cas.width, status);
5500         if (status.errIfFailureAndReset()) { return; }
5501         Measure measure(25, cas.unitToAdopt, status);
5502         if (status.errIfFailureAndReset()) { return; }
5503         verifyFormat(cas.locale, mf, &measure, 1, cas.expected);
5504     }
5505 }
5506 
TestNumericTime()5507 void MeasureFormatTest::TestNumericTime() {
5508     IcuTestErrorCode status(*this, "TestNumericTime");
5509 
5510     MeasureFormat fmt("en", UMEASFMT_WIDTH_NUMERIC, status);
5511 
5512     Measure hours(112, MeasureUnit::createHour(status), status);
5513     Measure minutes(113, MeasureUnit::createMinute(status), status);
5514     Measure seconds(114, MeasureUnit::createSecond(status), status);
5515     Measure fhours(112.8765, MeasureUnit::createHour(status), status);
5516     Measure fminutes(113.8765, MeasureUnit::createMinute(status), status);
5517     Measure fseconds(114.8765, MeasureUnit::createSecond(status), status);
5518     if (status.errDataIfFailureAndReset(WHERE)) return;
5519 
5520     verifyFormat("hours", fmt, &hours, 1, "112h");
5521     verifyFormat("minutes", fmt, &minutes, 1, "113m");
5522     verifyFormat("seconds", fmt, &seconds, 1, "114s");
5523 
5524     verifyFormat("fhours", fmt, &fhours, 1, "112.876h");
5525     verifyFormat("fminutes", fmt, &fminutes, 1, "113.876m");
5526     verifyFormat("fseconds", fmt, &fseconds, 1, "114.876s");
5527 
5528     Measure hoursMinutes[2] = {hours, minutes};
5529     verifyFormat("hoursMinutes", fmt, hoursMinutes, 2, "112:113");
5530     Measure hoursSeconds[2] = {hours, seconds};
5531     verifyFormat("hoursSeconds", fmt, hoursSeconds, 2, "112:00:114");
5532     Measure minutesSeconds[2] = {minutes, seconds};
5533     verifyFormat("minutesSeconds", fmt, minutesSeconds, 2, "113:114");
5534 
5535     Measure hoursFminutes[2] = {hours, fminutes};
5536     verifyFormat("hoursFminutes", fmt, hoursFminutes, 2, "112:113.876");
5537     Measure hoursFseconds[2] = {hours, fseconds};
5538     verifyFormat("hoursFseconds", fmt, hoursFseconds, 2, "112:00:114.876");
5539     Measure minutesFseconds[2] = {minutes, fseconds};
5540     verifyFormat("hoursMminutesFsecondsinutes", fmt, minutesFseconds, 2, "113:114.876");
5541 
5542     Measure fhoursMinutes[2] = {fhours, minutes};
5543     verifyFormat("fhoursMinutes", fmt, fhoursMinutes, 2, "112:113");
5544     Measure fhoursSeconds[2] = {fhours, seconds};
5545     verifyFormat("fhoursSeconds", fmt, fhoursSeconds, 2, "112:00:114");
5546     Measure fminutesSeconds[2] = {fminutes, seconds};
5547     verifyFormat("fminutesSeconds", fmt, fminutesSeconds, 2, "113:114");
5548 
5549     Measure fhoursFminutes[2] = {fhours, fminutes};
5550     verifyFormat("fhoursFminutes", fmt, fhoursFminutes, 2, "112:113.876");
5551     Measure fhoursFseconds[2] = {fhours, fseconds};
5552     verifyFormat("fhoursFseconds", fmt, fhoursFseconds, 2, "112:00:114.876");
5553     Measure fminutesFseconds[2] = {fminutes, fseconds};
5554     verifyFormat("fminutesFseconds", fmt, fminutesFseconds, 2, "113:114.876");
5555 
5556     Measure hoursMinutesSeconds[3] = {hours, minutes, seconds};
5557     verifyFormat("hoursMinutesSeconds", fmt, hoursMinutesSeconds, 3, "112:113:114");
5558     Measure fhoursFminutesFseconds[3] = {fhours, fminutes, fseconds};
5559     verifyFormat("fhoursFminutesFseconds", fmt, fhoursFminutesFseconds, 3, "112:113:114.876");
5560 }
5561 
TestNumericTimeSomeSpecialFormats()5562 void MeasureFormatTest::TestNumericTimeSomeSpecialFormats() {
5563     IcuTestErrorCode status(*this, "TestNumericTimeSomeSpecialFormats");
5564 
5565     Measure fhours(2.8765432, MeasureUnit::createHour(status), status);
5566     Measure fminutes(3.8765432, MeasureUnit::createMinute(status), status);
5567     if (status.errDataIfFailureAndReset(WHERE)) return;
5568 
5569     Measure fhoursFminutes[2] = {fhours, fminutes};
5570 
5571     // Latvian is one of the very few locales 0-padding the hour
5572     MeasureFormat fmtLt("lt", UMEASFMT_WIDTH_NUMERIC, status);
5573     if (status.errDataIfFailureAndReset(WHERE)) return;
5574     verifyFormat("Latvian fhoursFminutes", fmtLt, fhoursFminutes, 2, "02:03,877");
5575 
5576     // Danish is one of the very few locales using '.' as separator
5577     MeasureFormat fmtDa("da", UMEASFMT_WIDTH_NUMERIC, status);
5578     verifyFormat("Danish fhoursFminutes", fmtDa, fhoursFminutes, 2, "2.03,877");
5579 }
5580 
TestIdentifiers()5581 void MeasureFormatTest::TestIdentifiers() {
5582     IcuTestErrorCode status(*this, "TestIdentifiers");
5583     struct TestCase {
5584         const char* id;
5585         const char* normalized;
5586     } cases[] = {
5587         // Correctly normalized identifiers should not change
5588         {"", ""},
5589         {"square-meter-per-square-meter", "square-meter-per-square-meter"},
5590         {"kilogram-meter-per-square-meter-square-second",
5591          "kilogram-meter-per-square-meter-square-second"},
5592         {"square-mile-and-square-foot", "square-mile-and-square-foot"},
5593         {"square-foot-and-square-mile", "square-foot-and-square-mile"},
5594         {"per-cubic-centimeter", "per-cubic-centimeter"},
5595         {"per-kilometer", "per-kilometer"},
5596 
5597         // Normalization of power and per
5598         {"pow2-foot-and-pow2-mile", "square-foot-and-square-mile"},
5599         {"gram-square-gram-per-dekagram", "cubic-gram-per-dekagram"},
5600         {"kilogram-per-meter-per-second", "kilogram-per-meter-second"},
5601         {"kilometer-per-second-per-megaparsec", "kilometer-per-megaparsec-second"},
5602 
5603         // Correct order of units, as per unitQuantities in CLDR's units.xml
5604         {"newton-meter", "newton-meter"},
5605         {"meter-newton", "newton-meter"},
5606         {"pound-force-foot", "pound-force-foot"},
5607         {"foot-pound-force", "pound-force-foot"},
5608         {"kilowatt-hour", "kilowatt-hour"},
5609         {"hour-kilowatt", "kilowatt-hour"},
5610 
5611         // Testing prefixes are parsed and produced correctly (ensures no
5612         // collisions in the enum values)
5613         {"yoctofoot", "yoctofoot"},
5614         {"zeptofoot", "zeptofoot"},
5615         {"attofoot", "attofoot"},
5616         {"femtofoot", "femtofoot"},
5617         {"picofoot", "picofoot"},
5618         {"nanofoot", "nanofoot"},
5619         {"microfoot", "microfoot"},
5620         {"millifoot", "millifoot"},
5621         {"centifoot", "centifoot"},
5622         {"decifoot", "decifoot"},
5623         {"foot", "foot"},
5624         {"dekafoot", "dekafoot"},
5625         {"hectofoot", "hectofoot"},
5626         {"kilofoot", "kilofoot"},
5627         {"megafoot", "megafoot"},
5628         {"gigafoot", "gigafoot"},
5629         {"terafoot", "terafoot"},
5630         {"petafoot", "petafoot"},
5631         {"exafoot", "exafoot"},
5632         {"zettafoot", "zettafoot"},
5633         {"yottafoot", "yottafoot"},
5634         {"kibibyte", "kibibyte"},
5635         {"mebibyte", "mebibyte"},
5636         {"gibibyte", "gibibyte"},
5637         {"tebibyte", "tebibyte"},
5638         {"pebibyte", "pebibyte"},
5639         {"exbibyte", "exbibyte"},
5640         {"zebibyte", "zebibyte"},
5641         {"yobibyte", "yobibyte"},
5642 
5643         // Testing aliases
5644         {"foodcalorie", "foodcalorie"},
5645         {"dot-per-centimeter", "dot-per-centimeter"},
5646         {"dot-per-inch", "dot-per-inch"},
5647         {"dot", "dot"},
5648 
5649         // Testing sort order of prefixes.
5650         {"megafoot-mebifoot-kibifoot-kilofoot", "mebifoot-megafoot-kibifoot-kilofoot"},
5651         {"per-megafoot-mebifoot-kibifoot-kilofoot", "per-mebifoot-megafoot-kibifoot-kilofoot"},
5652         {"megafoot-mebifoot-kibifoot-kilofoot-per-megafoot-mebifoot-kibifoot-kilofoot",
5653          "mebifoot-megafoot-kibifoot-kilofoot-per-mebifoot-megafoot-kibifoot-kilofoot"},
5654         {"microfoot-millifoot-megafoot-mebifoot-kibifoot-kilofoot",
5655          "mebifoot-megafoot-kibifoot-kilofoot-millifoot-microfoot"},
5656         {"per-microfoot-millifoot-megafoot-mebifoot-kibifoot-kilofoot",
5657          "per-mebifoot-megafoot-kibifoot-kilofoot-millifoot-microfoot"},
5658     };
5659     for (const auto &cas : cases) {
5660         status.setScope(cas.id);
5661         MeasureUnit unit = MeasureUnit::forIdentifier(cas.id, status);
5662         status.errIfFailureAndReset();
5663         const char* actual = unit.getIdentifier();
5664         assertEquals(cas.id, cas.normalized, actual);
5665         status.errIfFailureAndReset();
5666     }
5667 }
5668 
TestInvalidIdentifiers()5669 void MeasureFormatTest::TestInvalidIdentifiers() {
5670     IcuTestErrorCode status(*this, "TestInvalidIdentifiers");
5671 
5672     const char *const inputs[] = {
5673         "kilo",
5674         "kilokilo",
5675         "onekilo",
5676         "meterkilo",
5677         "meter-kilo",
5678         "k",
5679         "meter-",
5680         "meter+",
5681         "-meter",
5682         "+meter",
5683         "-kilometer",
5684         "+kilometer",
5685         "-pow2-meter",
5686         "+pow2-meter",
5687         "p2-meter",
5688         "p4-meter",
5689         "+",
5690         "-",
5691         "-mile",
5692         "-and-mile",
5693         "-per-mile",
5694         "one",
5695         "one-one",
5696         "one-per-mile",
5697         "one-per-cubic-centimeter",
5698         "square--per-meter",
5699         "metersecond", // Must have compound part in between single units
5700 
5701         // Negative powers not supported in mixed units yet. TODO(CLDR-13701).
5702         "per-hour-and-hertz",
5703         "hertz-and-per-hour",
5704 
5705         // Compound units not supported in mixed units yet. TODO(CLDR-13701).
5706         "kilonewton-meter-and-newton-meter",
5707     };
5708 
5709     for (const auto& input : inputs) {
5710         status.setScope(input);
5711         MeasureUnit::forIdentifier(input, status);
5712         status.expectErrorAndReset(U_ILLEGAL_ARGUMENT_ERROR);
5713     }
5714 }
5715 
TestIdentifierDetails()5716 void MeasureFormatTest::TestIdentifierDetails() {
5717     IcuTestErrorCode status(*this, "TestIdentifierDetails()");
5718 
5719     MeasureUnit joule = MeasureUnit::forIdentifier("joule", status);
5720     status.assertSuccess();
5721     assertEquals("Initial joule", "joule", joule.getIdentifier());
5722 
5723     static_assert(UMEASURE_PREFIX_INTERNAL_MAX_SI < 99, "Tests assume there is no prefix 99.");
5724     static_assert(UMEASURE_PREFIX_INTERNAL_MAX_BIN < 99, "Tests assume there is no prefix 99.");
5725     MeasureUnit unit = joule.withPrefix((UMeasurePrefix)99, status);
5726     if (!status.expectErrorAndReset(U_UNSUPPORTED_ERROR)) {
5727         errln("Invalid prefix should result in an error.");
5728     }
5729     assertEquals("Invalid prefix results in no identifier", "", unit.getIdentifier());
5730 
5731     unit = joule.withPrefix(UMEASURE_PREFIX_HECTO, status);
5732     status.assertSuccess();
5733     assertEquals("foo identifier", "hectojoule", unit.getIdentifier());
5734 
5735     unit = unit.withPrefix(UMEASURE_PREFIX_EXBI, status);
5736     status.assertSuccess();
5737     assertEquals("foo identifier", "exbijoule", unit.getIdentifier());
5738 }
5739 
TestPrefixes()5740 void MeasureFormatTest::TestPrefixes() {
5741     IcuTestErrorCode status(*this, "TestPrefixes()");
5742     const struct TestCase {
5743         UMeasurePrefix prefix;
5744         int32_t expectedBase;
5745         int32_t expectedPower;
5746     } cases[] = {
5747         {UMEASURE_PREFIX_QUECTO, 10, -30},
5748         {UMEASURE_PREFIX_RONTO, 10, -27},
5749         {UMEASURE_PREFIX_YOCTO, 10, -24},
5750         {UMEASURE_PREFIX_ZEPTO, 10, -21},
5751         {UMEASURE_PREFIX_ATTO, 10, -18},
5752         {UMEASURE_PREFIX_FEMTO, 10, -15},
5753         {UMEASURE_PREFIX_PICO, 10, -12},
5754         {UMEASURE_PREFIX_NANO, 10, -9},
5755         {UMEASURE_PREFIX_MICRO, 10, -6},
5756         {UMEASURE_PREFIX_MILLI, 10, -3},
5757         {UMEASURE_PREFIX_CENTI, 10, -2},
5758         {UMEASURE_PREFIX_DECI, 10, -1},
5759         {UMEASURE_PREFIX_ONE, 10, 0},
5760         {UMEASURE_PREFIX_DEKA, 10, 1},
5761         {UMEASURE_PREFIX_HECTO, 10, 2},
5762         {UMEASURE_PREFIX_KILO, 10, 3},
5763         {UMEASURE_PREFIX_MEGA, 10, 6},
5764         {UMEASURE_PREFIX_GIGA, 10, 9},
5765         {UMEASURE_PREFIX_TERA, 10, 12},
5766         {UMEASURE_PREFIX_PETA, 10, 15},
5767         {UMEASURE_PREFIX_EXA, 10, 18},
5768         {UMEASURE_PREFIX_ZETTA, 10, 21},
5769         {UMEASURE_PREFIX_YOTTA, 10, 24},
5770         {UMEASURE_PREFIX_RONNA, 10, 27},
5771         {UMEASURE_PREFIX_QUETTA, 10, 30},
5772         {UMEASURE_PREFIX_KIBI, 1024, 1},
5773         {UMEASURE_PREFIX_MEBI, 1024, 2},
5774         {UMEASURE_PREFIX_GIBI, 1024, 3},
5775         {UMEASURE_PREFIX_TEBI, 1024, 4},
5776         {UMEASURE_PREFIX_PEBI, 1024, 5},
5777         {UMEASURE_PREFIX_EXBI, 1024, 6},
5778         {UMEASURE_PREFIX_ZEBI, 1024, 7},
5779         {UMEASURE_PREFIX_YOBI, 1024, 8},
5780     };
5781 
5782     for (auto cas : cases) {
5783         MeasureUnit m = MeasureUnit::getAmpere().withPrefix(cas.prefix, status);
5784         assertEquals("umeas_getPrefixPower()", cas.expectedPower,
5785                      umeas_getPrefixPower(m.getPrefix(status)));
5786         assertEquals("umeas_getPrefixBase()", cas.expectedBase,
5787                      umeas_getPrefixBase(m.getPrefix(status)));
5788     }
5789 }
5790 
TestParseBuiltIns()5791 void MeasureFormatTest::TestParseBuiltIns() {
5792     IcuTestErrorCode status(*this, "TestParseBuiltIns()");
5793     int32_t totalCount = MeasureUnit::getAvailable(nullptr, 0, status);
5794     status.expectErrorAndReset(U_BUFFER_OVERFLOW_ERROR);
5795     std::unique_ptr<MeasureUnit[]> units(new MeasureUnit[totalCount]);
5796     totalCount = MeasureUnit::getAvailable(units.get(), totalCount, status);
5797     status.assertSuccess();
5798     for (int32_t i = 0; i < totalCount; i++) {
5799         MeasureUnit &unit = units[i];
5800         if (uprv_strcmp(unit.getType(), "currency") == 0) {
5801             continue;
5802         }
5803 
5804         // Prove that all built-in units are parseable, except "generic" temperature:
5805         MeasureUnit parsed = MeasureUnit::forIdentifier(unit.getIdentifier(), status);
5806         if (unit == MeasureUnit::getGenericTemperature()) {
5807             status.expectErrorAndReset(U_ILLEGAL_ARGUMENT_ERROR);
5808         } else {
5809             status.assertSuccess();
5810             CharString msg;
5811             msg.append("parsed MeasureUnit '", status);
5812             msg.append(parsed.getIdentifier(), status);
5813             msg.append("' should equal built-in '", status);
5814             msg.append(unit.getIdentifier(), status);
5815             msg.append("'", status);
5816             status.assertSuccess();
5817             assertTrue(msg.data(), unit == parsed);
5818         }
5819     }
5820 }
5821 
TestParseToBuiltIn()5822 void MeasureFormatTest::TestParseToBuiltIn() {
5823     IcuTestErrorCode status(*this, "TestParseToBuiltIn()");
5824     const struct TestCase {
5825         const char *identifier;
5826         MeasureUnit expectedBuiltIn;
5827     } cases[] = {
5828         {"meter-per-second-per-second", MeasureUnit::getMeterPerSecondSquared()},
5829         {"meter-per-second-second", MeasureUnit::getMeterPerSecondSquared()},
5830         {"centimeter-centimeter", MeasureUnit::getSquareCentimeter()},
5831         {"square-foot", MeasureUnit::getSquareFoot()},
5832         {"pow2-inch", MeasureUnit::getSquareInch()},
5833         {"milligram-per-deciliter", MeasureUnit::getMilligramPerDeciliter()},
5834         {"pound-force-per-pow2-inch", MeasureUnit::getPoundPerSquareInch()},
5835         {"yard-pow2-yard", MeasureUnit::getCubicYard()},
5836         {"square-yard-yard", MeasureUnit::getCubicYard()},
5837     };
5838 
5839     for (const auto& cas : cases) {
5840         MeasureUnit fromIdent = MeasureUnit::forIdentifier(cas.identifier, status);
5841         status.assertSuccess();
5842         assertEquals("forIdentifier returns a normal built-in unit when it exists",
5843                      cas.expectedBuiltIn.getOffset(), fromIdent.getOffset());
5844         assertEquals("type", cas.expectedBuiltIn.getType(), fromIdent.getType());
5845         assertEquals("subType", cas.expectedBuiltIn.getSubtype(), fromIdent.getSubtype());
5846     }
5847 }
5848 
5849 // Kilogram is a "base unit", although it's also "gram" with a kilo- prefix.
5850 // This tests that it is handled in the preferred manner.
TestKilogramIdentifier()5851 void MeasureFormatTest::TestKilogramIdentifier() {
5852     IcuTestErrorCode status(*this, "TestKilogramIdentifier");
5853 
5854     // SI unit of mass
5855     MeasureUnit kilogram = MeasureUnit::forIdentifier("kilogram", status);
5856     // Metric mass unit
5857     MeasureUnit gram = MeasureUnit::forIdentifier("gram", status);
5858     // Microgram: still a built-in type
5859     MeasureUnit microgram = MeasureUnit::forIdentifier("microgram", status);
5860     // Nanogram: not a built-in type at this time
5861     MeasureUnit nanogram = MeasureUnit::forIdentifier("nanogram", status);
5862     status.assertSuccess();
5863 
5864     assertEquals("parsed kilogram equals built-in kilogram", MeasureUnit::getKilogram().getType(),
5865                  kilogram.getType());
5866     assertEquals("parsed kilogram equals built-in kilogram", MeasureUnit::getKilogram().getSubtype(),
5867                  kilogram.getSubtype());
5868     assertEquals("parsed gram equals built-in gram", MeasureUnit::getGram().getType(), gram.getType());
5869     assertEquals("parsed gram equals built-in gram", MeasureUnit::getGram().getSubtype(),
5870                  gram.getSubtype());
5871     assertEquals("parsed microgram equals built-in microgram", MeasureUnit::getMicrogram().getType(),
5872                  microgram.getType());
5873     assertEquals("parsed microgram equals built-in microgram", MeasureUnit::getMicrogram().getSubtype(),
5874                  microgram.getSubtype());
5875     assertEquals("nanogram", "", nanogram.getType());
5876     assertEquals("nanogram", "nanogram", nanogram.getIdentifier());
5877 
5878     assertEquals("prefix of kilogram", UMEASURE_PREFIX_KILO, kilogram.getPrefix(status));
5879     assertEquals("prefix of gram", UMEASURE_PREFIX_ONE, gram.getPrefix(status));
5880     assertEquals("prefix of microgram", UMEASURE_PREFIX_MICRO, microgram.getPrefix(status));
5881     assertEquals("prefix of nanogram", UMEASURE_PREFIX_NANO, nanogram.getPrefix(status));
5882 
5883     MeasureUnit tmp = kilogram.withPrefix(UMEASURE_PREFIX_MILLI, status);
5884     assertEquals(UnicodeString("Kilogram + milli should be milligram, got: ") + tmp.getIdentifier(),
5885                  MeasureUnit::getMilligram().getIdentifier(), tmp.getIdentifier());
5886 }
5887 
TestCompoundUnitOperations()5888 void MeasureFormatTest::TestCompoundUnitOperations() {
5889     IcuTestErrorCode status(*this, "TestCompoundUnitOperations");
5890 
5891     MeasureUnit::forIdentifier("kilometer-per-second-joule", status);
5892 
5893     MeasureUnit kilometer = MeasureUnit::getKilometer();
5894     MeasureUnit cubicMeter = MeasureUnit::getCubicMeter();
5895     MeasureUnit meter = kilometer.withPrefix(UMEASURE_PREFIX_ONE, status);
5896     MeasureUnit centimeter1 = kilometer.withPrefix(UMEASURE_PREFIX_CENTI, status);
5897     MeasureUnit centimeter2 = meter.withPrefix(UMEASURE_PREFIX_CENTI, status);
5898     MeasureUnit cubicDecimeter = cubicMeter.withPrefix(UMEASURE_PREFIX_DECI, status);
5899 
5900     verifySingleUnit(kilometer, UMEASURE_PREFIX_KILO, 1, "kilometer");
5901     verifySingleUnit(meter, UMEASURE_PREFIX_ONE, 1, "meter");
5902     verifySingleUnit(centimeter1, UMEASURE_PREFIX_CENTI, 1, "centimeter");
5903     verifySingleUnit(centimeter2, UMEASURE_PREFIX_CENTI, 1, "centimeter");
5904     verifySingleUnit(cubicDecimeter, UMEASURE_PREFIX_DECI, 3, "cubic-decimeter");
5905 
5906     assertTrue("centimeter equality", centimeter1 == centimeter2);
5907     assertTrue("kilometer inequality", centimeter1 != kilometer);
5908 
5909     MeasureUnit squareMeter = meter.withDimensionality(2, status);
5910     MeasureUnit overCubicCentimeter = centimeter1.withDimensionality(-3, status);
5911     MeasureUnit quarticKilometer = kilometer.withDimensionality(4, status);
5912     MeasureUnit overQuarticKilometer1 = kilometer.withDimensionality(-4, status);
5913 
5914     verifySingleUnit(squareMeter, UMEASURE_PREFIX_ONE, 2, "square-meter");
5915     verifySingleUnit(overCubicCentimeter, UMEASURE_PREFIX_CENTI, -3, "per-cubic-centimeter");
5916     verifySingleUnit(quarticKilometer, UMEASURE_PREFIX_KILO, 4, "pow4-kilometer");
5917     verifySingleUnit(overQuarticKilometer1, UMEASURE_PREFIX_KILO, -4, "per-pow4-kilometer");
5918 
5919     assertTrue("power inequality", quarticKilometer != overQuarticKilometer1);
5920 
5921     MeasureUnit overQuarticKilometer2 = quarticKilometer.reciprocal(status);
5922     MeasureUnit overQuarticKilometer3 = kilometer.product(kilometer, status)
5923         .product(kilometer, status)
5924         .product(kilometer, status)
5925         .reciprocal(status);
5926     MeasureUnit overQuarticKilometer4 = meter.withDimensionality(4, status)
5927         .reciprocal(status)
5928         .withPrefix(UMEASURE_PREFIX_KILO, status);
5929 
5930     verifySingleUnit(overQuarticKilometer2, UMEASURE_PREFIX_KILO, -4, "per-pow4-kilometer");
5931     verifySingleUnit(overQuarticKilometer3, UMEASURE_PREFIX_KILO, -4, "per-pow4-kilometer");
5932     verifySingleUnit(overQuarticKilometer4, UMEASURE_PREFIX_KILO, -4, "per-pow4-kilometer");
5933 
5934     assertTrue("reciprocal equality", overQuarticKilometer1 == overQuarticKilometer2);
5935     assertTrue("reciprocal equality", overQuarticKilometer1 == overQuarticKilometer3);
5936     assertTrue("reciprocal equality", overQuarticKilometer1 == overQuarticKilometer4);
5937 
5938     MeasureUnit kiloSquareSecond = MeasureUnit::getSecond()
5939         .withDimensionality(2, status).withPrefix(UMEASURE_PREFIX_KILO, status);
5940     MeasureUnit meterSecond = meter.product(kiloSquareSecond, status);
5941     MeasureUnit cubicMeterSecond1 = meter.withDimensionality(3, status).product(kiloSquareSecond, status);
5942     MeasureUnit centimeterSecond1 = meter.withPrefix(UMEASURE_PREFIX_CENTI, status).product(kiloSquareSecond, status);
5943     MeasureUnit secondCubicMeter = kiloSquareSecond.product(meter.withDimensionality(3, status), status);
5944     MeasureUnit secondCentimeter = kiloSquareSecond.product(meter.withPrefix(UMEASURE_PREFIX_CENTI, status), status);
5945     MeasureUnit secondCentimeterPerKilometer = secondCentimeter.product(kilometer.reciprocal(status), status);
5946 
5947     verifySingleUnit(kiloSquareSecond, UMEASURE_PREFIX_KILO, 2, "square-kilosecond");
5948     const char* meterSecondSub[] = {"meter", "square-kilosecond"};
5949     verifyCompoundUnit(meterSecond, "meter-square-kilosecond",
5950         meterSecondSub, UPRV_LENGTHOF(meterSecondSub));
5951     const char* cubicMeterSecond1Sub[] = {"cubic-meter", "square-kilosecond"};
5952     verifyCompoundUnit(cubicMeterSecond1, "cubic-meter-square-kilosecond",
5953         cubicMeterSecond1Sub, UPRV_LENGTHOF(cubicMeterSecond1Sub));
5954     const char* centimeterSecond1Sub[] = {"centimeter", "square-kilosecond"};
5955     verifyCompoundUnit(centimeterSecond1, "centimeter-square-kilosecond",
5956         centimeterSecond1Sub, UPRV_LENGTHOF(centimeterSecond1Sub));
5957     const char* secondCubicMeterSub[] = {"cubic-meter", "square-kilosecond"};
5958     verifyCompoundUnit(secondCubicMeter, "cubic-meter-square-kilosecond",
5959         secondCubicMeterSub, UPRV_LENGTHOF(secondCubicMeterSub));
5960     const char* secondCentimeterSub[] = {"centimeter", "square-kilosecond"};
5961     verifyCompoundUnit(secondCentimeter, "centimeter-square-kilosecond",
5962         secondCentimeterSub, UPRV_LENGTHOF(secondCentimeterSub));
5963     const char* secondCentimeterPerKilometerSub[] = {"centimeter", "square-kilosecond", "per-kilometer"};
5964     verifyCompoundUnit(secondCentimeterPerKilometer, "centimeter-square-kilosecond-per-kilometer",
5965         secondCentimeterPerKilometerSub, UPRV_LENGTHOF(secondCentimeterPerKilometerSub));
5966 
5967     assertTrue("reordering equality", cubicMeterSecond1 == secondCubicMeter);
5968     assertTrue("additional simple units inequality", secondCubicMeter != secondCentimeter);
5969 
5970     // Don't allow get/set power or SI or binary prefix on compound units
5971     status.errIfFailureAndReset();
5972     meterSecond.getDimensionality(status);
5973     status.expectErrorAndReset(U_ILLEGAL_ARGUMENT_ERROR);
5974     meterSecond.withDimensionality(3, status);
5975     status.expectErrorAndReset(U_ILLEGAL_ARGUMENT_ERROR);
5976     meterSecond.getPrefix(status);
5977     status.expectErrorAndReset(U_ILLEGAL_ARGUMENT_ERROR);
5978     meterSecond.withPrefix(UMEASURE_PREFIX_CENTI, status);
5979     status.expectErrorAndReset(U_ILLEGAL_ARGUMENT_ERROR);
5980 
5981     // Test that StringPiece does not overflow
5982     MeasureUnit centimeter3 = MeasureUnit::forIdentifier({secondCentimeter.getIdentifier(), 10}, status);
5983     verifySingleUnit(centimeter3, UMEASURE_PREFIX_CENTI, 1, "centimeter");
5984     assertTrue("string piece equality", centimeter1 == centimeter3);
5985 
5986     MeasureUnit footInch = MeasureUnit::forIdentifier("foot-and-inch", status);
5987     MeasureUnit inchFoot = MeasureUnit::forIdentifier("inch-and-foot", status);
5988 
5989     const char* footInchSub[] = {"foot", "inch"};
5990     verifyMixedUnit(footInch, "foot-and-inch",
5991         footInchSub, UPRV_LENGTHOF(footInchSub));
5992     const char* inchFootSub[] = {"inch", "foot"};
5993     verifyMixedUnit(inchFoot, "inch-and-foot",
5994         inchFootSub, UPRV_LENGTHOF(inchFootSub));
5995 
5996     assertTrue("order matters inequality", footInch != inchFoot);
5997 
5998     MeasureUnit dimensionless;
5999     MeasureUnit dimensionless2 = MeasureUnit::forIdentifier("", status);
6000     status.errIfFailureAndReset("Dimensionless MeasureUnit.");
6001     assertTrue("dimensionless equality", dimensionless == dimensionless2);
6002 
6003     // We support starting from an "identity" MeasureUnit and then combining it
6004     // with others via product:
6005     MeasureUnit kilometer2 = dimensionless.product(kilometer, status);
6006     status.errIfFailureAndReset("dimensionless.product(kilometer, status)");
6007     verifySingleUnit(kilometer2, UMEASURE_PREFIX_KILO, 1, "kilometer");
6008     assertTrue("kilometer equality", kilometer == kilometer2);
6009 
6010     // Test out-of-range powers
6011     MeasureUnit power15 = MeasureUnit::forIdentifier("pow15-kilometer", status);
6012     verifySingleUnit(power15, UMEASURE_PREFIX_KILO, 15, "pow15-kilometer");
6013     status.errIfFailureAndReset();
6014     MeasureUnit power16a = MeasureUnit::forIdentifier("pow16-kilometer", status);
6015     status.expectErrorAndReset(U_ILLEGAL_ARGUMENT_ERROR);
6016     MeasureUnit power16b = power15.product(kilometer, status);
6017     status.expectErrorAndReset(U_ILLEGAL_ARGUMENT_ERROR);
6018     MeasureUnit powerN15 = MeasureUnit::forIdentifier("per-pow15-kilometer", status);
6019     verifySingleUnit(powerN15, UMEASURE_PREFIX_KILO, -15, "per-pow15-kilometer");
6020     status.errIfFailureAndReset();
6021     MeasureUnit powerN16a = MeasureUnit::forIdentifier("per-pow16-kilometer", status);
6022     status.expectErrorAndReset(U_ILLEGAL_ARGUMENT_ERROR);
6023     MeasureUnit powerN16b = powerN15.product(overQuarticKilometer1, status);
6024     status.expectErrorAndReset(U_ILLEGAL_ARGUMENT_ERROR);
6025 }
6026 
TestDimensionlessBehaviour()6027 void MeasureFormatTest::TestDimensionlessBehaviour() {
6028     IcuTestErrorCode status(*this, "TestDimensionlessBehaviour");
6029     MeasureUnit dimensionless;
6030     MeasureUnit modified;
6031 
6032     // At the time of writing, each of the seven groups below caused
6033     // Parser::from("") to be called:
6034 
6035     // splitToSingleUnits
6036     auto pair = dimensionless.splitToSingleUnits(status);
6037     int32_t count = pair.second;
6038     status.errIfFailureAndReset("dimensionless.splitToSingleUnits(...)");
6039     assertEquals("no singles in dimensionless", 0, count);
6040 
6041     // product(dimensionless)
6042     MeasureUnit mile = MeasureUnit::getMile();
6043     mile = mile.product(dimensionless, status);
6044     status.errIfFailureAndReset("mile.product(dimensionless, ...)");
6045     verifySingleUnit(mile, UMEASURE_PREFIX_ONE, 1, "mile");
6046 
6047     // dimensionless.getPrefix()
6048     UMeasurePrefix unitPrefix = dimensionless.getPrefix(status);
6049     status.errIfFailureAndReset("dimensionless.getPrefix(...)");
6050     assertEquals("dimensionless SIPrefix", UMEASURE_PREFIX_ONE, unitPrefix);
6051 
6052     // dimensionless.withPrefix()
6053     modified = dimensionless.withPrefix(UMEASURE_PREFIX_KILO, status);
6054     status.errIfFailureAndReset("dimensionless.withPrefix(...)");
6055     pair = dimensionless.splitToSingleUnits(status);
6056     count = pair.second;
6057     assertEquals("no singles in modified", 0, count);
6058     unitPrefix = modified.getPrefix(status);
6059     status.errIfFailureAndReset("modified.getPrefix(...)");
6060     assertEquals("modified SIPrefix", UMEASURE_PREFIX_ONE, unitPrefix);
6061 
6062     // dimensionless.getComplexity()
6063     UMeasureUnitComplexity complexity = dimensionless.getComplexity(status);
6064     status.errIfFailureAndReset("dimensionless.getComplexity(...)");
6065     assertEquals("dimensionless complexity", UMEASURE_UNIT_SINGLE, complexity);
6066 
6067     // Dimensionality is mostly meaningless for dimensionless units, but it's
6068     // still considered a SINGLE unit, so this code doesn't throw errors:
6069 
6070     // dimensionless.getDimensionality()
6071     int32_t dimensionality = dimensionless.getDimensionality(status);
6072     status.errIfFailureAndReset("dimensionless.getDimensionality(...)");
6073     assertEquals("dimensionless dimensionality", 0, dimensionality);
6074 
6075     // dimensionless.withDimensionality()
6076     dimensionless.withDimensionality(-1, status);
6077     status.errIfFailureAndReset("dimensionless.withDimensionality(...)");
6078     dimensionality = dimensionless.getDimensionality(status);
6079     status.errIfFailureAndReset("dimensionless.getDimensionality(...)");
6080     assertEquals("dimensionless dimensionality", 0, dimensionality);
6081 }
6082 
6083 // ICU-21060
Test21060_AddressSanitizerProblem()6084 void MeasureFormatTest::Test21060_AddressSanitizerProblem() {
6085     IcuTestErrorCode status(*this, "Test21060_AddressSanitizerProblem");
6086 
6087     MeasureUnit first = MeasureUnit::forIdentifier("", status);
6088     status.errIfFailureAndReset();
6089 
6090     // Experimentally, a compound unit like "kilogram-meter" failed. A single
6091     // unit like "kilogram" or "meter" did not fail, did not trigger the
6092     // problem.
6093     MeasureUnit crux = MeasureUnit::forIdentifier("per-meter", status);
6094 
6095     // Heap allocation of a new CharString for first.identifier happens here:
6096     first = first.product(crux, status);
6097 
6098     // Constructing second from first's identifier resulted in a failure later,
6099     // as second held a reference to a substring of first's identifier:
6100     MeasureUnit second = MeasureUnit::forIdentifier(first.getIdentifier(), status);
6101 
6102     // Heap is freed here, as an old first.identifier CharString is deallocated
6103     // and a new CharString is allocated:
6104     first = first.product(crux, status);
6105 
6106     // Proving we've had no failure yet:
6107     status.errIfFailureAndReset();
6108 
6109     // heap-use-after-free failure happened here, since a SingleUnitImpl had
6110     // held onto a StringPiece pointing at a substring of an identifier that was
6111     // freed above:
6112     second = second.product(crux, status);
6113 
6114     status.errIfFailureAndReset();
6115 }
6116 
Test21223_FrenchDuration()6117 void MeasureFormatTest::Test21223_FrenchDuration() {
6118     IcuTestErrorCode status(*this, "Test21223_FrenchDuration");
6119     MeasureFormat mf("fr-FR", UMEASFMT_WIDTH_NARROW, status);
6120     Measure H5M10[] = {
6121         {5, MeasureUnit::createHour(status), status},
6122         {10, MeasureUnit::createMinute(status), status}
6123     };
6124     UnicodeString result;
6125     FieldPosition pos;
6126     mf.formatMeasures(H5M10, UPRV_LENGTHOF(H5M10), result, pos, status);
6127     assertEquals("Should have consistent spacing", u"5h 10min", result);
6128 
6129     // Test additional locales:
6130     // int32_t localeCount;
6131     // const Locale* locales = Locale::getAvailableLocales(localeCount);
6132     // for (int32_t i=0; i<localeCount; i++) {
6133     //     auto& loc = locales[i];
6134     //     MeasureFormat mf1(loc, UMEASFMT_WIDTH_NARROW, status);
6135     //     mf1.formatMeasures(H5M10, UPRV_LENGTHOF(H5M10), result.remove(), pos, status);
6136     //     assertFalse(result + u" " + loc.getName(), true);
6137     // }
6138 }
6139 
TestInternalMeasureUnitImpl()6140 void MeasureFormatTest::TestInternalMeasureUnitImpl() {
6141     IcuTestErrorCode status(*this, "TestInternalMeasureUnitImpl");
6142     MeasureUnitImpl mu1 = MeasureUnitImpl::forIdentifier("meter", status);
6143     status.assertSuccess();
6144     assertEquals("mu1 initial identifier", "", mu1.identifier.data());
6145     assertEquals("mu1 initial complexity", UMEASURE_UNIT_SINGLE, mu1.complexity);
6146     assertEquals("mu1 initial units length", 1, mu1.singleUnits.length());
6147     if (mu1.singleUnits.length() > 0) {
6148         assertEquals("mu1 initial units[0]", "meter", mu1.singleUnits[0]->getSimpleUnitID());
6149     }
6150 
6151     // Producing identifier via build(): the std::move() means mu1 gets modified
6152     // while it also gets assigned to tmp's internal fImpl.
6153     MeasureUnit tmp = std::move(mu1).build(status);
6154     status.assertSuccess();
6155     assertEquals("mu1 post-move-build identifier", "meter", mu1.identifier.data());
6156     assertEquals("mu1 post-move-build complexity", UMEASURE_UNIT_SINGLE, mu1.complexity);
6157     assertEquals("mu1 post-move-build units length", 1, mu1.singleUnits.length());
6158     if (mu1.singleUnits.length() > 0) {
6159         assertEquals("mu1 post-move-build units[0]", "meter", mu1.singleUnits[0]->getSimpleUnitID());
6160     }
6161     assertEquals("MeasureUnit tmp identifier", "meter", tmp.getIdentifier());
6162 
6163     // This temporary variable is used when forMeasureUnit's first parameter
6164     // lacks an fImpl instance:
6165     MeasureUnitImpl tmpMemory;
6166     const MeasureUnitImpl &tmpImplRef = MeasureUnitImpl::forMeasureUnit(tmp, tmpMemory, status);
6167     status.assertSuccess();
6168     assertEquals("tmpMemory identifier", "", tmpMemory.identifier.data());
6169     assertEquals("tmpMemory complexity", UMEASURE_UNIT_SINGLE, tmpMemory.complexity);
6170     assertEquals("tmpMemory units length", 1, tmpMemory.singleUnits.length());
6171     if (mu1.singleUnits.length() > 0) {
6172         assertEquals("tmpMemory units[0]", "meter", tmpMemory.singleUnits[0]->getSimpleUnitID());
6173     }
6174     assertEquals("tmpImplRef identifier", "", tmpImplRef.identifier.data());
6175     assertEquals("tmpImplRef complexity", UMEASURE_UNIT_SINGLE, tmpImplRef.complexity);
6176 
6177     MeasureUnitImpl mu2 = MeasureUnitImpl::forIdentifier("newton-meter", status);
6178     status.assertSuccess();
6179     mu1 = std::move(mu2);
6180     assertEquals("mu1 = move(mu2): identifier", "", mu1.identifier.data());
6181     assertEquals("mu1 = move(mu2): complexity", UMEASURE_UNIT_COMPOUND, mu1.complexity);
6182     assertEquals("mu1 = move(mu2): units length", 2, mu1.singleUnits.length());
6183     if (mu1.singleUnits.length() >= 2) {
6184         assertEquals("mu1 = move(mu2): units[0]", "newton", mu1.singleUnits[0]->getSimpleUnitID());
6185         assertEquals("mu1 = move(mu2): units[1]", "meter", mu1.singleUnits[1]->getSimpleUnitID());
6186     }
6187 
6188     mu1 = MeasureUnitImpl::forIdentifier("hour-and-minute-and-second", status);
6189     status.assertSuccess();
6190     assertEquals("mu1 = HMS: identifier", "", mu1.identifier.data());
6191     assertEquals("mu1 = HMS: complexity", UMEASURE_UNIT_MIXED, mu1.complexity);
6192     assertEquals("mu1 = HMS: units length", 3, mu1.singleUnits.length());
6193     if (mu1.singleUnits.length() >= 3) {
6194         assertEquals("mu1 = HMS: units[0]", "hour", mu1.singleUnits[0]->getSimpleUnitID());
6195         assertEquals("mu1 = HMS: units[1]", "minute", mu1.singleUnits[1]->getSimpleUnitID());
6196         assertEquals("mu1 = HMS: units[2]", "second", mu1.singleUnits[2]->getSimpleUnitID());
6197     }
6198 
6199     MeasureUnitImpl m2 = MeasureUnitImpl::forIdentifier("", status);
6200     m2.appendSingleUnit(SingleUnitImpl::forMeasureUnit(MeasureUnit::getMeter(), status), status);
6201     m2.appendSingleUnit(SingleUnitImpl::forMeasureUnit(MeasureUnit::getMeter(), status), status);
6202     status.assertSuccess();
6203     assertEquals("append meter twice: complexity", UMEASURE_UNIT_SINGLE, m2.complexity);
6204     assertEquals("append meter twice: units length", 1, m2.singleUnits.length());
6205     if (mu1.singleUnits.length() >= 1) {
6206         assertEquals("append meter twice: units[0]", "meter", m2.singleUnits[0]->getSimpleUnitID());
6207     }
6208     assertEquals("append meter twice: identifier", "square-meter",
6209                  std::move(m2).build(status).getIdentifier());
6210 
6211     MeasureUnitImpl mcm = MeasureUnitImpl::forIdentifier("", status);
6212     mcm.appendSingleUnit(SingleUnitImpl::forMeasureUnit(MeasureUnit::getMeter(), status), status);
6213     mcm.appendSingleUnit(SingleUnitImpl::forMeasureUnit(MeasureUnit::getCentimeter(), status), status);
6214     status.assertSuccess();
6215     assertEquals("append meter & centimeter: complexity", UMEASURE_UNIT_COMPOUND, mcm.complexity);
6216     assertEquals("append meter & centimeter: units length", 2, mcm.singleUnits.length());
6217     if (mu1.singleUnits.length() >= 2) {
6218         assertEquals("append meter & centimeter: units[0]", "meter",
6219                      mcm.singleUnits[0]->getSimpleUnitID());
6220         assertEquals("append meter & centimeter: units[1]", "meter",
6221                      mcm.singleUnits[1]->getSimpleUnitID());
6222     }
6223     assertEquals("append meter & centimeter: identifier", "meter-centimeter",
6224                  std::move(mcm).build(status).getIdentifier());
6225 
6226     MeasureUnitImpl m2m = MeasureUnitImpl::forIdentifier("meter-square-meter", status);
6227     status.assertSuccess();
6228     assertEquals("meter-square-meter: complexity", UMEASURE_UNIT_SINGLE, m2m.complexity);
6229     assertEquals("meter-square-meter: units length", 1, m2m.singleUnits.length());
6230     if (mu1.singleUnits.length() >= 1) {
6231         assertEquals("meter-square-meter: units[0]", "meter", m2m.singleUnits[0]->getSimpleUnitID());
6232     }
6233     assertEquals("meter-square-meter: identifier", "cubic-meter",
6234                  std::move(m2m).build(status).getIdentifier());
6235 }
6236 
TestMeasureEquality()6237 void MeasureFormatTest::TestMeasureEquality() {
6238     IcuTestErrorCode errorCode(*this, "TestMeasureEquality");
6239     Measure measures[] = {
6240         { 1., MeasureUnit::createLiter(errorCode), errorCode },
6241         { 1., MeasureUnit::createLiter(errorCode), errorCode },
6242         { 2., MeasureUnit::createLiter(errorCode), errorCode },
6243         { 1., MeasureUnit::createGram(errorCode), errorCode }
6244     };
6245     static const char *const names[] = { "1 liter", "another liter", "2 liters", "1 gram" };
6246 
6247     // Verify that C++20 -Wambiguous-reversed-operator isn't triggered.
6248     assertTrue("Equal", measures[0] == measures[1]);
6249     assertTrue("Not Equal", measures[2] != measures[3]);
6250 
6251     for (int32_t i = 0; i < UPRV_LENGTHOF(measures); ++i) {
6252         for (int32_t j = 0; j < UPRV_LENGTHOF(measures); ++j) {
6253             const Measure &a = measures[i];
6254             const UObject &b = measures[j];  // UObject for "other"
6255             std::string eq = std::string(names[i]) + std::string(" == ") + std::string(names[j]);
6256             std::string ne = std::string(names[i]) + std::string(" != ") + std::string(names[j]);
6257             // 1l = 1l
6258             bool expectedEquals = i == j || (i <= 1 && j <= 1);
6259             assertEquals(eq.c_str(), expectedEquals, a == b);
6260             assertEquals(ne.c_str(), !expectedEquals, a != b);
6261         }
6262     }
6263 
6264     UnicodeString s(u"?");
6265     for (int32_t i = 0; i < UPRV_LENGTHOF(measures); ++i) {
6266         const Measure &a = measures[i];
6267         std::string eq = std::string(names[i]) + std::string(" == UnicodeString");
6268         std::string ne = std::string(names[i]) + std::string(" != UnicodeString");
6269         assertEquals(eq.c_str(), false, a == s);
6270         assertEquals(ne.c_str(), true, a != s);
6271     }
6272 }
6273 
6274 
verifyFieldPosition(const char * description,const MeasureFormat & fmt,const UnicodeString & prefix,const Measure * measures,int32_t measureCount,NumberFormat::EAlignmentFields field,int32_t start,int32_t end)6275 void MeasureFormatTest::verifyFieldPosition(
6276         const char *description,
6277         const MeasureFormat &fmt,
6278         const UnicodeString &prefix,
6279         const Measure *measures,
6280         int32_t measureCount,
6281         NumberFormat::EAlignmentFields field,
6282         int32_t start,
6283         int32_t end) {
6284     // 8 char lead
6285     UnicodeString result(prefix);
6286     FieldPosition pos(field);
6287     UErrorCode status = U_ZERO_ERROR;
6288     CharString ch;
6289     const char *descPrefix = ch.append(description, status)
6290             .append(": ", status).data();
6291     CharString beginIndex;
6292     beginIndex.append(descPrefix, status).append("beginIndex", status);
6293     CharString endIndex;
6294     endIndex.append(descPrefix, status).append("endIndex", status);
6295     fmt.formatMeasures(measures, measureCount, result, pos, status);
6296     if (!assertSuccess("Error formatting", status)) {
6297         return;
6298     }
6299     assertEquals(beginIndex.data(), start, pos.getBeginIndex());
6300     assertEquals(endIndex.data(), end, pos.getEndIndex());
6301 }
6302 
verifyFormat(const char * description,const MeasureFormat & fmt,const Measure * measures,int32_t measureCount,const char * expected)6303 void MeasureFormatTest::verifyFormat(
6304         const char *description,
6305         const MeasureFormat &fmt,
6306         const Measure *measures,
6307         int32_t measureCount,
6308         const char *expected) {
6309     verifyFormatWithPrefix(
6310             description,
6311             fmt,
6312             "",
6313             measures,
6314             measureCount,
6315             expected);
6316 }
6317 
verifyFormatWithPrefix(const char * description,const MeasureFormat & fmt,const UnicodeString & prefix,const Measure * measures,int32_t measureCount,const char * expected)6318 void MeasureFormatTest::verifyFormatWithPrefix(
6319         const char *description,
6320         const MeasureFormat &fmt,
6321         const UnicodeString &prefix,
6322         const Measure *measures,
6323         int32_t measureCount,
6324         const char *expected) {
6325     UnicodeString result(prefix);
6326     FieldPosition pos(FieldPosition::DONT_CARE);
6327     UErrorCode status = U_ZERO_ERROR;
6328     fmt.formatMeasures(measures, measureCount, result, pos, status);
6329     if (!assertSuccess("Error formatting", status)) {
6330         return;
6331     }
6332     assertEquals(description, ctou(expected), result);
6333 }
6334 
verifyFormat(const char * description,const MeasureFormat & fmt,const ExpectedResult * expectedResults,int32_t count)6335 void MeasureFormatTest::verifyFormat(
6336         const char *description,
6337         const MeasureFormat &fmt,
6338         const ExpectedResult *expectedResults,
6339         int32_t count) {
6340     for (int32_t i = 0; i < count; ++i) {
6341         verifyFormat(description, fmt, expectedResults[i].measures, expectedResults[i].count, expectedResults[i].expected);
6342     }
6343 }
6344 
verifySingleUnit(const MeasureUnit & unit,UMeasurePrefix unitPrefix,int8_t power,const char * identifier)6345 void MeasureFormatTest::verifySingleUnit(
6346         const MeasureUnit& unit,
6347         UMeasurePrefix unitPrefix,
6348         int8_t power,
6349         const char* identifier) {
6350     IcuTestErrorCode status(*this, "verifySingleUnit");
6351     UnicodeString uid(identifier, -1, US_INV);
6352     assertEquals(uid + ": SI or binary prefix",
6353         unitPrefix,
6354         unit.getPrefix(status));
6355     status.errIfFailureAndReset("%s: SI or binary prefix", identifier);
6356     assertEquals(uid + ": Power",
6357         static_cast<int32_t>(power),
6358         static_cast<int32_t>(unit.getDimensionality(status)));
6359     status.errIfFailureAndReset("%s: Power", identifier);
6360     assertEquals(uid + ": Identifier",
6361         identifier,
6362         unit.getIdentifier());
6363     status.errIfFailureAndReset("%s: Identifier", identifier);
6364     assertTrue(uid + ": Constructor",
6365         unit == MeasureUnit::forIdentifier(identifier, status));
6366     status.errIfFailureAndReset("%s: Constructor", identifier);
6367     assertEquals(uid + ": Complexity",
6368         UMEASURE_UNIT_SINGLE,
6369         unit.getComplexity(status));
6370     status.errIfFailureAndReset("%s: Complexity", identifier);
6371 }
6372 
verifyCompoundUnit(const MeasureUnit & unit,const char * identifier,const char ** subIdentifiers,int32_t subIdentifierCount)6373 void MeasureFormatTest::verifyCompoundUnit(
6374         const MeasureUnit& unit,
6375         const char* identifier,
6376         const char** subIdentifiers,
6377         int32_t subIdentifierCount) {
6378     IcuTestErrorCode status(*this, "verifyCompoundUnit");
6379     UnicodeString uid(identifier, -1, US_INV);
6380     assertEquals(uid + ": Identifier",
6381         identifier,
6382         unit.getIdentifier());
6383     status.errIfFailureAndReset("%s: Identifier", identifier);
6384     assertTrue(uid + ": Constructor",
6385         unit == MeasureUnit::forIdentifier(identifier, status));
6386     status.errIfFailureAndReset("%s: Constructor", identifier);
6387     assertEquals(uid + ": Complexity",
6388         UMEASURE_UNIT_COMPOUND,
6389         unit.getComplexity(status));
6390     status.errIfFailureAndReset("%s: Complexity", identifier);
6391 
6392     auto pair = unit.splitToSingleUnits(status);
6393     const LocalArray<MeasureUnit>& subUnits = pair.first;
6394     int32_t length = pair.second;
6395     assertEquals(uid + ": Length", subIdentifierCount, length);
6396     for (int32_t i = 0;; i++) {
6397         if (i >= subIdentifierCount || i >= length) break;
6398         assertEquals(uid + ": Sub-unit #" + Int64ToUnicodeString(i),
6399             subIdentifiers[i],
6400             subUnits[i].getIdentifier());
6401         assertEquals(uid + ": Sub-unit Complexity",
6402             UMEASURE_UNIT_SINGLE,
6403             subUnits[i].getComplexity(status));
6404     }
6405 }
6406 
verifyMixedUnit(const MeasureUnit & unit,const char * identifier,const char ** subIdentifiers,int32_t subIdentifierCount)6407 void MeasureFormatTest::verifyMixedUnit(
6408         const MeasureUnit& unit,
6409         const char* identifier,
6410         const char** subIdentifiers,
6411         int32_t subIdentifierCount) {
6412     IcuTestErrorCode status(*this, "verifyMixedUnit");
6413     UnicodeString uid(identifier, -1, US_INV);
6414     assertEquals(uid + ": Identifier",
6415         identifier,
6416         unit.getIdentifier());
6417     status.errIfFailureAndReset("%s: Identifier", identifier);
6418     assertTrue(uid + ": Constructor",
6419         unit == MeasureUnit::forIdentifier(identifier, status));
6420     status.errIfFailureAndReset("%s: Constructor", identifier);
6421     assertEquals(uid + ": Complexity",
6422         UMEASURE_UNIT_MIXED,
6423         unit.getComplexity(status));
6424     status.errIfFailureAndReset("%s: Complexity", identifier);
6425 
6426     auto pair = unit.splitToSingleUnits(status);
6427     const LocalArray<MeasureUnit>& subUnits = pair.first;
6428     int32_t length = pair.second;
6429     assertEquals(uid + ": Length", subIdentifierCount, length);
6430     for (int32_t i = 0;; i++) {
6431         if (i >= subIdentifierCount || i >= length) break;
6432         assertEquals(uid + ": Sub-unit #" + Int64ToUnicodeString(i),
6433             subIdentifiers[i],
6434             subUnits[i].getIdentifier());
6435     }
6436 }
6437 
createMeasureFormatTest()6438 extern IntlTest *createMeasureFormatTest() {
6439     return new MeasureFormatTest();
6440 }
6441 
6442 #endif
6443