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