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