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