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