Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(66)

Side by Side Diff: source/test/intltest/measfmttest.cpp

Issue 1621843002: ICU 56 update step 1 (Closed) Base URL: https://chromium.googlesource.com/chromium/deps/icu.git@561
Patch Set: Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « source/test/intltest/loctest.cpp ('k') | source/test/intltest/nmfmtrt.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 ******************************************************************************* 2 *******************************************************************************
3 * Copyright (C) 2014, International Business Machines Corporation and * 3 * Copyright (C) 2014-2015, International Business Machines Corporation and *
4 * others. All Rights Reserved. * 4 * others. All Rights Reserved. *
5 ******************************************************************************* 5 *******************************************************************************
6 * 6 *
7 * File MEASFMTTEST.CPP 7 * File MEASFMTTEST.CPP
8 * 8 *
9 ******************************************************************************* 9 *******************************************************************************
10 */ 10 */
11 #include <stdio.h> 11 #include <stdio.h>
12 #include <stdlib.h> 12 #include <stdlib.h>
13 13
(...skipping 19 matching lines...) Expand all
33 class MeasureFormatTest : public IntlTest { 33 class MeasureFormatTest : public IntlTest {
34 public: 34 public:
35 MeasureFormatTest() { 35 MeasureFormatTest() {
36 } 36 }
37 37
38 void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par= 0); 38 void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par= 0);
39 private: 39 private:
40 void TestBasic(); 40 void TestBasic();
41 void TestCompatible53_1(); 41 void TestCompatible53_1();
42 void TestCompatible54_1(); 42 void TestCompatible54_1();
43 void TestCompatible55_1();
44 void TestCompatible56_1();
43 void TestGetAvailable(); 45 void TestGetAvailable();
44 void TestExamplesInDocs(); 46 void TestExamplesInDocs();
45 void TestFormatPeriodEn(); 47 void TestFormatPeriodEn();
46 void Test10219FractionalPlurals(); 48 void Test10219FractionalPlurals();
47 void TestGreek(); 49 void TestGreek();
48 void TestFormatSingleArg(); 50 void TestFormatSingleArg();
49 void TestFormatMeasuresZeroArg(); 51 void TestFormatMeasuresZeroArg();
50 void TestMultiplesWithPer();
51 void TestSimplePer(); 52 void TestSimplePer();
52 void TestNumeratorPlurals(); 53 void TestNumeratorPlurals();
53 void TestMultiples(); 54 void TestMultiples();
54 void TestGram(); 55 void TestGram();
55 void TestCurrencies(); 56 void TestCurrencies();
56 void TestFieldPosition(); 57 void TestFieldPosition();
57 void TestFieldPositionMultiple(); 58 void TestFieldPositionMultiple();
58 void TestFieldPositionMultipleWithPer();
59 void TestBadArg(); 59 void TestBadArg();
60 void TestEquality(); 60 void TestEquality();
61 void TestGroupingSeparator(); 61 void TestGroupingSeparator();
62 void TestDoubleZero(); 62 void TestDoubleZero();
63 void TestUnitPerUnitResolution();
63 void verifyFormat( 64 void verifyFormat(
64 const char *description, 65 const char *description,
65 const MeasureFormat &fmt, 66 const MeasureFormat &fmt,
66 const Measure *measures, 67 const Measure *measures,
67 int32_t measureCount, 68 int32_t measureCount,
68 const char *expected); 69 const char *expected);
69 void verifyFormatWithPrefix( 70 void verifyFormatWithPrefix(
70 const char *description, 71 const char *description,
71 const MeasureFormat &fmt, 72 const MeasureFormat &fmt,
72 const UnicodeString &prefix, 73 const UnicodeString &prefix,
73 const Measure *measures, 74 const Measure *measures,
74 int32_t measureCount, 75 int32_t measureCount,
75 const char *expected); 76 const char *expected);
76 void verifyFormat( 77 void verifyFormat(
77 const char *description, 78 const char *description,
78 const MeasureFormat &fmt, 79 const MeasureFormat &fmt,
79 const ExpectedResult *expectedResults, 80 const ExpectedResult *expectedResults,
80 int32_t count); 81 int32_t count);
81 void helperTestSimplePer( 82 void helperTestSimplePer(
82 const Locale &locale, 83 const Locale &locale,
83 UMeasureFormatWidth width, 84 UMeasureFormatWidth width,
84 double value, 85 double value,
85 const MeasureUnit &unit, 86 const MeasureUnit &unit,
86 const MeasureUnit &perUnit, 87 const MeasureUnit &perUnit,
87 const char *expected); 88 const char *expected);
88 void helperTestMultiplesWithPer( 89 void helperTestSimplePer(
89 const Locale &locale, 90 const Locale &locale,
90 UMeasureFormatWidth width, 91 UMeasureFormatWidth width,
92 double value,
91 const MeasureUnit &unit, 93 const MeasureUnit &unit,
92 const char *expected); 94 const MeasureUnit &perUnit,
95 const char *expected,
96 int32_t field,
97 int32_t expected_start,
98 int32_t expected_end);
93 void helperTestMultiples( 99 void helperTestMultiples(
94 const Locale &locale, 100 const Locale &locale,
95 UMeasureFormatWidth width, 101 UMeasureFormatWidth width,
96 const char *expected); 102 const char *expected);
97 void verifyFieldPosition( 103 void verifyFieldPosition(
98 const char *description, 104 const char *description,
99 const MeasureFormat &fmt, 105 const MeasureFormat &fmt,
100 const UnicodeString &prefix, 106 const UnicodeString &prefix,
101 const Measure *measures, 107 const Measure *measures,
102 int32_t measureCount, 108 int32_t measureCount,
103 NumberFormat::EAlignmentFields field, 109 NumberFormat::EAlignmentFields field,
104 int32_t start, 110 int32_t start,
105 int32_t end); 111 int32_t end);
106 void verifyFieldPositionWithPer(
107 const char *description,
108 const MeasureFormat &fmt,
109 const UnicodeString &prefix,
110 const Measure *measures,
111 int32_t measureCount,
112 const MeasureUnit &perUnit,
113 NumberFormat::EAlignmentFields field,
114 int32_t start,
115 int32_t end);
116 }; 112 };
117 113
118 void MeasureFormatTest::runIndexedTest( 114 void MeasureFormatTest::runIndexedTest(
119 int32_t index, UBool exec, const char *&name, char *) { 115 int32_t index, UBool exec, const char *&name, char *) {
120 if (exec) { 116 if (exec) {
121 logln("TestSuite MeasureFormatTest: "); 117 logln("TestSuite MeasureFormatTest: ");
122 } 118 }
123 TESTCASE_AUTO_BEGIN; 119 TESTCASE_AUTO_BEGIN;
124 TESTCASE_AUTO(TestBasic); 120 TESTCASE_AUTO(TestBasic);
125 TESTCASE_AUTO(TestCompatible53_1); 121 TESTCASE_AUTO(TestCompatible53_1);
126 TESTCASE_AUTO(TestCompatible54_1); 122 TESTCASE_AUTO(TestCompatible54_1);
123 TESTCASE_AUTO(TestCompatible55_1);
124 TESTCASE_AUTO(TestCompatible56_1);
127 TESTCASE_AUTO(TestGetAvailable); 125 TESTCASE_AUTO(TestGetAvailable);
128 TESTCASE_AUTO(TestExamplesInDocs); 126 TESTCASE_AUTO(TestExamplesInDocs);
129 TESTCASE_AUTO(TestFormatPeriodEn); 127 TESTCASE_AUTO(TestFormatPeriodEn);
130 TESTCASE_AUTO(Test10219FractionalPlurals); 128 TESTCASE_AUTO(Test10219FractionalPlurals);
131 TESTCASE_AUTO(TestGreek); 129 TESTCASE_AUTO(TestGreek);
132 TESTCASE_AUTO(TestFormatSingleArg); 130 TESTCASE_AUTO(TestFormatSingleArg);
133 TESTCASE_AUTO(TestFormatMeasuresZeroArg); 131 TESTCASE_AUTO(TestFormatMeasuresZeroArg);
134 TESTCASE_AUTO(TestMultiplesWithPer);
135 TESTCASE_AUTO(TestSimplePer); 132 TESTCASE_AUTO(TestSimplePer);
136 TESTCASE_AUTO(TestNumeratorPlurals); 133 TESTCASE_AUTO(TestNumeratorPlurals);
137 TESTCASE_AUTO(TestMultiples); 134 TESTCASE_AUTO(TestMultiples);
138 TESTCASE_AUTO(TestGram); 135 TESTCASE_AUTO(TestGram);
139 TESTCASE_AUTO(TestCurrencies); 136 TESTCASE_AUTO(TestCurrencies);
140 TESTCASE_AUTO(TestFieldPosition); 137 TESTCASE_AUTO(TestFieldPosition);
141 TESTCASE_AUTO(TestFieldPositionMultiple); 138 TESTCASE_AUTO(TestFieldPositionMultiple);
142 TESTCASE_AUTO(TestFieldPositionMultipleWithPer);
143 TESTCASE_AUTO(TestBadArg); 139 TESTCASE_AUTO(TestBadArg);
144 TESTCASE_AUTO(TestEquality); 140 TESTCASE_AUTO(TestEquality);
145 TESTCASE_AUTO(TestGroupingSeparator); 141 TESTCASE_AUTO(TestGroupingSeparator);
146 TESTCASE_AUTO(TestDoubleZero); 142 TESTCASE_AUTO(TestDoubleZero);
143 TESTCASE_AUTO(TestUnitPerUnitResolution);
147 TESTCASE_AUTO_END; 144 TESTCASE_AUTO_END;
148 } 145 }
149 146
150 void MeasureFormatTest::TestCompatible53_1() { 147 void MeasureFormatTest::TestCompatible53_1() {
151 UErrorCode status = U_ZERO_ERROR; 148 UErrorCode status = U_ZERO_ERROR;
152 LocalPointer<MeasureUnit> measureUnit; 149 LocalPointer<MeasureUnit> measureUnit;
153 measureUnit.adoptInstead(MeasureUnit::createGForce(status)); 150 measureUnit.adoptInstead(MeasureUnit::createGForce(status));
154 measureUnit.adoptInstead(MeasureUnit::createArcMinute(status)); 151 measureUnit.adoptInstead(MeasureUnit::createArcMinute(status));
155 measureUnit.adoptInstead(MeasureUnit::createArcSecond(status)); 152 measureUnit.adoptInstead(MeasureUnit::createArcSecond(status));
156 measureUnit.adoptInstead(MeasureUnit::createDegree(status)); 153 measureUnit.adoptInstead(MeasureUnit::createDegree(status));
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
319 measureUnit.adoptInstead(MeasureUnit::createLiter(status)); 316 measureUnit.adoptInstead(MeasureUnit::createLiter(status));
320 measureUnit.adoptInstead(MeasureUnit::createMegaliter(status)); 317 measureUnit.adoptInstead(MeasureUnit::createMegaliter(status));
321 measureUnit.adoptInstead(MeasureUnit::createMilliliter(status)); 318 measureUnit.adoptInstead(MeasureUnit::createMilliliter(status));
322 measureUnit.adoptInstead(MeasureUnit::createPint(status)); 319 measureUnit.adoptInstead(MeasureUnit::createPint(status));
323 measureUnit.adoptInstead(MeasureUnit::createQuart(status)); 320 measureUnit.adoptInstead(MeasureUnit::createQuart(status));
324 measureUnit.adoptInstead(MeasureUnit::createTablespoon(status)); 321 measureUnit.adoptInstead(MeasureUnit::createTablespoon(status));
325 measureUnit.adoptInstead(MeasureUnit::createTeaspoon(status)); 322 measureUnit.adoptInstead(MeasureUnit::createTeaspoon(status));
326 assertSuccess("", status); 323 assertSuccess("", status);
327 } 324 }
328 325
326 void MeasureFormatTest::TestCompatible55_1() {
327 UErrorCode status = U_ZERO_ERROR;
328 LocalPointer<MeasureUnit> measureUnit;
329 measureUnit.adoptInstead(MeasureUnit::createGForce(status));
330 measureUnit.adoptInstead(MeasureUnit::createMeterPerSecondSquared(status));
331 measureUnit.adoptInstead(MeasureUnit::createArcMinute(status));
332 measureUnit.adoptInstead(MeasureUnit::createArcSecond(status));
333 measureUnit.adoptInstead(MeasureUnit::createDegree(status));
334 measureUnit.adoptInstead(MeasureUnit::createRadian(status));
335 measureUnit.adoptInstead(MeasureUnit::createAcre(status));
336 measureUnit.adoptInstead(MeasureUnit::createHectare(status));
337 measureUnit.adoptInstead(MeasureUnit::createSquareCentimeter(status));
338 measureUnit.adoptInstead(MeasureUnit::createSquareFoot(status));
339 measureUnit.adoptInstead(MeasureUnit::createSquareInch(status));
340 measureUnit.adoptInstead(MeasureUnit::createSquareKilometer(status));
341 measureUnit.adoptInstead(MeasureUnit::createSquareMeter(status));
342 measureUnit.adoptInstead(MeasureUnit::createSquareMile(status));
343 measureUnit.adoptInstead(MeasureUnit::createSquareYard(status));
344 measureUnit.adoptInstead(MeasureUnit::createLiterPerKilometer(status));
345 measureUnit.adoptInstead(MeasureUnit::createMilePerGallon(status));
346 measureUnit.adoptInstead(MeasureUnit::createBit(status));
347 measureUnit.adoptInstead(MeasureUnit::createByte(status));
348 measureUnit.adoptInstead(MeasureUnit::createGigabit(status));
349 measureUnit.adoptInstead(MeasureUnit::createGigabyte(status));
350 measureUnit.adoptInstead(MeasureUnit::createKilobit(status));
351 measureUnit.adoptInstead(MeasureUnit::createKilobyte(status));
352 measureUnit.adoptInstead(MeasureUnit::createMegabit(status));
353 measureUnit.adoptInstead(MeasureUnit::createMegabyte(status));
354 measureUnit.adoptInstead(MeasureUnit::createTerabit(status));
355 measureUnit.adoptInstead(MeasureUnit::createTerabyte(status));
356 measureUnit.adoptInstead(MeasureUnit::createDay(status));
357 measureUnit.adoptInstead(MeasureUnit::createHour(status));
358 measureUnit.adoptInstead(MeasureUnit::createMicrosecond(status));
359 measureUnit.adoptInstead(MeasureUnit::createMillisecond(status));
360 measureUnit.adoptInstead(MeasureUnit::createMinute(status));
361 measureUnit.adoptInstead(MeasureUnit::createMonth(status));
362 measureUnit.adoptInstead(MeasureUnit::createNanosecond(status));
363 measureUnit.adoptInstead(MeasureUnit::createSecond(status));
364 measureUnit.adoptInstead(MeasureUnit::createWeek(status));
365 measureUnit.adoptInstead(MeasureUnit::createYear(status));
366 measureUnit.adoptInstead(MeasureUnit::createAmpere(status));
367 measureUnit.adoptInstead(MeasureUnit::createMilliampere(status));
368 measureUnit.adoptInstead(MeasureUnit::createOhm(status));
369 measureUnit.adoptInstead(MeasureUnit::createVolt(status));
370 measureUnit.adoptInstead(MeasureUnit::createCalorie(status));
371 measureUnit.adoptInstead(MeasureUnit::createFoodcalorie(status));
372 measureUnit.adoptInstead(MeasureUnit::createJoule(status));
373 measureUnit.adoptInstead(MeasureUnit::createKilocalorie(status));
374 measureUnit.adoptInstead(MeasureUnit::createKilojoule(status));
375 measureUnit.adoptInstead(MeasureUnit::createKilowattHour(status));
376 measureUnit.adoptInstead(MeasureUnit::createGigahertz(status));
377 measureUnit.adoptInstead(MeasureUnit::createHertz(status));
378 measureUnit.adoptInstead(MeasureUnit::createKilohertz(status));
379 measureUnit.adoptInstead(MeasureUnit::createMegahertz(status));
380 measureUnit.adoptInstead(MeasureUnit::createAstronomicalUnit(status));
381 measureUnit.adoptInstead(MeasureUnit::createCentimeter(status));
382 measureUnit.adoptInstead(MeasureUnit::createDecimeter(status));
383 measureUnit.adoptInstead(MeasureUnit::createFathom(status));
384 measureUnit.adoptInstead(MeasureUnit::createFoot(status));
385 measureUnit.adoptInstead(MeasureUnit::createFurlong(status));
386 measureUnit.adoptInstead(MeasureUnit::createInch(status));
387 measureUnit.adoptInstead(MeasureUnit::createKilometer(status));
388 measureUnit.adoptInstead(MeasureUnit::createLightYear(status));
389 measureUnit.adoptInstead(MeasureUnit::createMeter(status));
390 measureUnit.adoptInstead(MeasureUnit::createMicrometer(status));
391 measureUnit.adoptInstead(MeasureUnit::createMile(status));
392 measureUnit.adoptInstead(MeasureUnit::createMillimeter(status));
393 measureUnit.adoptInstead(MeasureUnit::createNanometer(status));
394 measureUnit.adoptInstead(MeasureUnit::createNauticalMile(status));
395 measureUnit.adoptInstead(MeasureUnit::createParsec(status));
396 measureUnit.adoptInstead(MeasureUnit::createPicometer(status));
397 measureUnit.adoptInstead(MeasureUnit::createYard(status));
398 measureUnit.adoptInstead(MeasureUnit::createLux(status));
399 measureUnit.adoptInstead(MeasureUnit::createCarat(status));
400 measureUnit.adoptInstead(MeasureUnit::createGram(status));
401 measureUnit.adoptInstead(MeasureUnit::createKilogram(status));
402 measureUnit.adoptInstead(MeasureUnit::createMetricTon(status));
403 measureUnit.adoptInstead(MeasureUnit::createMicrogram(status));
404 measureUnit.adoptInstead(MeasureUnit::createMilligram(status));
405 measureUnit.adoptInstead(MeasureUnit::createOunce(status));
406 measureUnit.adoptInstead(MeasureUnit::createOunceTroy(status));
407 measureUnit.adoptInstead(MeasureUnit::createPound(status));
408 measureUnit.adoptInstead(MeasureUnit::createStone(status));
409 measureUnit.adoptInstead(MeasureUnit::createTon(status));
410 measureUnit.adoptInstead(MeasureUnit::createGigawatt(status));
411 measureUnit.adoptInstead(MeasureUnit::createHorsepower(status));
412 measureUnit.adoptInstead(MeasureUnit::createKilowatt(status));
413 measureUnit.adoptInstead(MeasureUnit::createMegawatt(status));
414 measureUnit.adoptInstead(MeasureUnit::createMilliwatt(status));
415 measureUnit.adoptInstead(MeasureUnit::createWatt(status));
416 measureUnit.adoptInstead(MeasureUnit::createHectopascal(status));
417 measureUnit.adoptInstead(MeasureUnit::createInchHg(status));
418 measureUnit.adoptInstead(MeasureUnit::createMillibar(status));
419 measureUnit.adoptInstead(MeasureUnit::createMillimeterOfMercury(status));
420 measureUnit.adoptInstead(MeasureUnit::createPoundPerSquareInch(status));
421 measureUnit.adoptInstead(MeasureUnit::createKarat(status));
422 measureUnit.adoptInstead(MeasureUnit::createKilometerPerHour(status));
423 measureUnit.adoptInstead(MeasureUnit::createMeterPerSecond(status));
424 measureUnit.adoptInstead(MeasureUnit::createMilePerHour(status));
425 measureUnit.adoptInstead(MeasureUnit::createCelsius(status));
426 measureUnit.adoptInstead(MeasureUnit::createFahrenheit(status));
427 measureUnit.adoptInstead(MeasureUnit::createGenericTemperature(status));
428 measureUnit.adoptInstead(MeasureUnit::createKelvin(status));
429 measureUnit.adoptInstead(MeasureUnit::createAcreFoot(status));
430 measureUnit.adoptInstead(MeasureUnit::createBushel(status));
431 measureUnit.adoptInstead(MeasureUnit::createCentiliter(status));
432 measureUnit.adoptInstead(MeasureUnit::createCubicCentimeter(status));
433 measureUnit.adoptInstead(MeasureUnit::createCubicFoot(status));
434 measureUnit.adoptInstead(MeasureUnit::createCubicInch(status));
435 measureUnit.adoptInstead(MeasureUnit::createCubicKilometer(status));
436 measureUnit.adoptInstead(MeasureUnit::createCubicMeter(status));
437 measureUnit.adoptInstead(MeasureUnit::createCubicMile(status));
438 measureUnit.adoptInstead(MeasureUnit::createCubicYard(status));
439 measureUnit.adoptInstead(MeasureUnit::createCup(status));
440 measureUnit.adoptInstead(MeasureUnit::createDeciliter(status));
441 measureUnit.adoptInstead(MeasureUnit::createFluidOunce(status));
442 measureUnit.adoptInstead(MeasureUnit::createGallon(status));
443 measureUnit.adoptInstead(MeasureUnit::createHectoliter(status));
444 measureUnit.adoptInstead(MeasureUnit::createLiter(status));
445 measureUnit.adoptInstead(MeasureUnit::createMegaliter(status));
446 measureUnit.adoptInstead(MeasureUnit::createMilliliter(status));
447 measureUnit.adoptInstead(MeasureUnit::createPint(status));
448 measureUnit.adoptInstead(MeasureUnit::createQuart(status));
449 measureUnit.adoptInstead(MeasureUnit::createTablespoon(status));
450 measureUnit.adoptInstead(MeasureUnit::createTeaspoon(status));
451 assertSuccess("", status);
452 }
453
454 void MeasureFormatTest::TestCompatible56_1() {
455 UErrorCode status = U_ZERO_ERROR;
456 LocalPointer<MeasureUnit> measureUnit;
457 measureUnit.adoptInstead(MeasureUnit::createGForce(status));
458 measureUnit.adoptInstead(MeasureUnit::createMeterPerSecondSquared(status));
459 measureUnit.adoptInstead(MeasureUnit::createArcMinute(status));
460 measureUnit.adoptInstead(MeasureUnit::createArcSecond(status));
461 measureUnit.adoptInstead(MeasureUnit::createDegree(status));
462 measureUnit.adoptInstead(MeasureUnit::createRadian(status));
463 measureUnit.adoptInstead(MeasureUnit::createRevolutionAngle(status));
464 measureUnit.adoptInstead(MeasureUnit::createAcre(status));
465 measureUnit.adoptInstead(MeasureUnit::createHectare(status));
466 measureUnit.adoptInstead(MeasureUnit::createSquareCentimeter(status));
467 measureUnit.adoptInstead(MeasureUnit::createSquareFoot(status));
468 measureUnit.adoptInstead(MeasureUnit::createSquareInch(status));
469 measureUnit.adoptInstead(MeasureUnit::createSquareKilometer(status));
470 measureUnit.adoptInstead(MeasureUnit::createSquareMeter(status));
471 measureUnit.adoptInstead(MeasureUnit::createSquareMile(status));
472 measureUnit.adoptInstead(MeasureUnit::createSquareYard(status));
473 measureUnit.adoptInstead(MeasureUnit::createLiterPer100Kilometers(status));
474 measureUnit.adoptInstead(MeasureUnit::createLiterPerKilometer(status));
475 measureUnit.adoptInstead(MeasureUnit::createMilePerGallon(status));
476 measureUnit.adoptInstead(MeasureUnit::createBit(status));
477 measureUnit.adoptInstead(MeasureUnit::createByte(status));
478 measureUnit.adoptInstead(MeasureUnit::createGigabit(status));
479 measureUnit.adoptInstead(MeasureUnit::createGigabyte(status));
480 measureUnit.adoptInstead(MeasureUnit::createKilobit(status));
481 measureUnit.adoptInstead(MeasureUnit::createKilobyte(status));
482 measureUnit.adoptInstead(MeasureUnit::createMegabit(status));
483 measureUnit.adoptInstead(MeasureUnit::createMegabyte(status));
484 measureUnit.adoptInstead(MeasureUnit::createTerabit(status));
485 measureUnit.adoptInstead(MeasureUnit::createTerabyte(status));
486 measureUnit.adoptInstead(MeasureUnit::createCentury(status));
487 measureUnit.adoptInstead(MeasureUnit::createDay(status));
488 measureUnit.adoptInstead(MeasureUnit::createHour(status));
489 measureUnit.adoptInstead(MeasureUnit::createMicrosecond(status));
490 measureUnit.adoptInstead(MeasureUnit::createMillisecond(status));
491 measureUnit.adoptInstead(MeasureUnit::createMinute(status));
492 measureUnit.adoptInstead(MeasureUnit::createMonth(status));
493 measureUnit.adoptInstead(MeasureUnit::createNanosecond(status));
494 measureUnit.adoptInstead(MeasureUnit::createSecond(status));
495 measureUnit.adoptInstead(MeasureUnit::createWeek(status));
496 measureUnit.adoptInstead(MeasureUnit::createYear(status));
497 measureUnit.adoptInstead(MeasureUnit::createAmpere(status));
498 measureUnit.adoptInstead(MeasureUnit::createMilliampere(status));
499 measureUnit.adoptInstead(MeasureUnit::createOhm(status));
500 measureUnit.adoptInstead(MeasureUnit::createVolt(status));
501 measureUnit.adoptInstead(MeasureUnit::createCalorie(status));
502 measureUnit.adoptInstead(MeasureUnit::createFoodcalorie(status));
503 measureUnit.adoptInstead(MeasureUnit::createJoule(status));
504 measureUnit.adoptInstead(MeasureUnit::createKilocalorie(status));
505 measureUnit.adoptInstead(MeasureUnit::createKilojoule(status));
506 measureUnit.adoptInstead(MeasureUnit::createKilowattHour(status));
507 measureUnit.adoptInstead(MeasureUnit::createGigahertz(status));
508 measureUnit.adoptInstead(MeasureUnit::createHertz(status));
509 measureUnit.adoptInstead(MeasureUnit::createKilohertz(status));
510 measureUnit.adoptInstead(MeasureUnit::createMegahertz(status));
511 measureUnit.adoptInstead(MeasureUnit::createAstronomicalUnit(status));
512 measureUnit.adoptInstead(MeasureUnit::createCentimeter(status));
513 measureUnit.adoptInstead(MeasureUnit::createDecimeter(status));
514 measureUnit.adoptInstead(MeasureUnit::createFathom(status));
515 measureUnit.adoptInstead(MeasureUnit::createFoot(status));
516 measureUnit.adoptInstead(MeasureUnit::createFurlong(status));
517 measureUnit.adoptInstead(MeasureUnit::createInch(status));
518 measureUnit.adoptInstead(MeasureUnit::createKilometer(status));
519 measureUnit.adoptInstead(MeasureUnit::createLightYear(status));
520 measureUnit.adoptInstead(MeasureUnit::createMeter(status));
521 measureUnit.adoptInstead(MeasureUnit::createMicrometer(status));
522 measureUnit.adoptInstead(MeasureUnit::createMile(status));
523 measureUnit.adoptInstead(MeasureUnit::createMileScandinavian(status));
524 measureUnit.adoptInstead(MeasureUnit::createMillimeter(status));
525 measureUnit.adoptInstead(MeasureUnit::createNanometer(status));
526 measureUnit.adoptInstead(MeasureUnit::createNauticalMile(status));
527 measureUnit.adoptInstead(MeasureUnit::createParsec(status));
528 measureUnit.adoptInstead(MeasureUnit::createPicometer(status));
529 measureUnit.adoptInstead(MeasureUnit::createYard(status));
530 measureUnit.adoptInstead(MeasureUnit::createLux(status));
531 measureUnit.adoptInstead(MeasureUnit::createCarat(status));
532 measureUnit.adoptInstead(MeasureUnit::createGram(status));
533 measureUnit.adoptInstead(MeasureUnit::createKilogram(status));
534 measureUnit.adoptInstead(MeasureUnit::createMetricTon(status));
535 measureUnit.adoptInstead(MeasureUnit::createMicrogram(status));
536 measureUnit.adoptInstead(MeasureUnit::createMilligram(status));
537 measureUnit.adoptInstead(MeasureUnit::createOunce(status));
538 measureUnit.adoptInstead(MeasureUnit::createOunceTroy(status));
539 measureUnit.adoptInstead(MeasureUnit::createPound(status));
540 measureUnit.adoptInstead(MeasureUnit::createStone(status));
541 measureUnit.adoptInstead(MeasureUnit::createTon(status));
542 measureUnit.adoptInstead(MeasureUnit::createGigawatt(status));
543 measureUnit.adoptInstead(MeasureUnit::createHorsepower(status));
544 measureUnit.adoptInstead(MeasureUnit::createKilowatt(status));
545 measureUnit.adoptInstead(MeasureUnit::createMegawatt(status));
546 measureUnit.adoptInstead(MeasureUnit::createMilliwatt(status));
547 measureUnit.adoptInstead(MeasureUnit::createWatt(status));
548 measureUnit.adoptInstead(MeasureUnit::createHectopascal(status));
549 measureUnit.adoptInstead(MeasureUnit::createInchHg(status));
550 measureUnit.adoptInstead(MeasureUnit::createMillibar(status));
551 measureUnit.adoptInstead(MeasureUnit::createMillimeterOfMercury(status));
552 measureUnit.adoptInstead(MeasureUnit::createPoundPerSquareInch(status));
553 measureUnit.adoptInstead(MeasureUnit::createKarat(status));
554 measureUnit.adoptInstead(MeasureUnit::createKilometerPerHour(status));
555 measureUnit.adoptInstead(MeasureUnit::createKnot(status));
556 measureUnit.adoptInstead(MeasureUnit::createMeterPerSecond(status));
557 measureUnit.adoptInstead(MeasureUnit::createMilePerHour(status));
558 measureUnit.adoptInstead(MeasureUnit::createCelsius(status));
559 measureUnit.adoptInstead(MeasureUnit::createFahrenheit(status));
560 measureUnit.adoptInstead(MeasureUnit::createGenericTemperature(status));
561 measureUnit.adoptInstead(MeasureUnit::createKelvin(status));
562 measureUnit.adoptInstead(MeasureUnit::createAcreFoot(status));
563 measureUnit.adoptInstead(MeasureUnit::createBushel(status));
564 measureUnit.adoptInstead(MeasureUnit::createCentiliter(status));
565 measureUnit.adoptInstead(MeasureUnit::createCubicCentimeter(status));
566 measureUnit.adoptInstead(MeasureUnit::createCubicFoot(status));
567 measureUnit.adoptInstead(MeasureUnit::createCubicInch(status));
568 measureUnit.adoptInstead(MeasureUnit::createCubicKilometer(status));
569 measureUnit.adoptInstead(MeasureUnit::createCubicMeter(status));
570 measureUnit.adoptInstead(MeasureUnit::createCubicMile(status));
571 measureUnit.adoptInstead(MeasureUnit::createCubicYard(status));
572 measureUnit.adoptInstead(MeasureUnit::createCup(status));
573 measureUnit.adoptInstead(MeasureUnit::createCupMetric(status));
574 measureUnit.adoptInstead(MeasureUnit::createDeciliter(status));
575 measureUnit.adoptInstead(MeasureUnit::createFluidOunce(status));
576 measureUnit.adoptInstead(MeasureUnit::createGallon(status));
577 measureUnit.adoptInstead(MeasureUnit::createHectoliter(status));
578 measureUnit.adoptInstead(MeasureUnit::createLiter(status));
579 measureUnit.adoptInstead(MeasureUnit::createMegaliter(status));
580 measureUnit.adoptInstead(MeasureUnit::createMilliliter(status));
581 measureUnit.adoptInstead(MeasureUnit::createPint(status));
582 measureUnit.adoptInstead(MeasureUnit::createPintMetric(status));
583 measureUnit.adoptInstead(MeasureUnit::createQuart(status));
584 measureUnit.adoptInstead(MeasureUnit::createTablespoon(status));
585 measureUnit.adoptInstead(MeasureUnit::createTeaspoon(status));
586 assertSuccess("", status);
587 }
588
329 void MeasureFormatTest::TestBasic() { 589 void MeasureFormatTest::TestBasic() {
330 UErrorCode status = U_ZERO_ERROR; 590 UErrorCode status = U_ZERO_ERROR;
331 MeasureUnit *ptr1 = MeasureUnit::createArcMinute(status); 591 MeasureUnit *ptr1 = MeasureUnit::createArcMinute(status);
332 MeasureUnit *ptr2 = MeasureUnit::createArcMinute(status); 592 MeasureUnit *ptr2 = MeasureUnit::createArcMinute(status);
333 if (!(*ptr1 == *ptr2)) { 593 if (!(*ptr1 == *ptr2)) {
334 errln("Expect == to work."); 594 errln("Expect == to work.");
335 } 595 }
336 if (*ptr1 != *ptr2) { 596 if (*ptr1 != *ptr2) {
337 errln("Expect != to work."); 597 errln("Expect != to work.");
338 } 598 }
(...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after
582 842
583 ExpectedResult fullData[] = { 843 ExpectedResult fullData[] = {
584 {t_1m_59_9996s, UPRV_LENGTHOF(t_1m_59_9996s), "1 minute, 59.9996 sec onds"}, 844 {t_1m_59_9996s, UPRV_LENGTHOF(t_1m_59_9996s), "1 minute, 59.9996 sec onds"},
585 {t_19m, UPRV_LENGTHOF(t_19m), "19 minutes"}, 845 {t_19m, UPRV_LENGTHOF(t_19m), "19 minutes"},
586 {t_1h_23_5s, UPRV_LENGTHOF(t_1h_23_5s), "1 hour, 23.5 seconds"}, 846 {t_1h_23_5s, UPRV_LENGTHOF(t_1h_23_5s), "1 hour, 23.5 seconds"},
587 {t_1h_23_5m, UPRV_LENGTHOF(t_1h_23_5m), "1 hour, 23.5 minutes"}, 847 {t_1h_23_5m, UPRV_LENGTHOF(t_1h_23_5m), "1 hour, 23.5 minutes"},
588 {t_1h_0m_23s, UPRV_LENGTHOF(t_1h_0m_23s), "1 hour, 0 minutes, 23 sec onds"}, 848 {t_1h_0m_23s, UPRV_LENGTHOF(t_1h_0m_23s), "1 hour, 0 minutes, 23 sec onds"},
589 {t_2y_5M_3w_4d, UPRV_LENGTHOF(t_2y_5M_3w_4d), "2 years, 5 months, 3 weeks, 4 days"}}; 849 {t_2y_5M_3w_4d, UPRV_LENGTHOF(t_2y_5M_3w_4d), "2 years, 5 months, 3 weeks, 4 days"}};
590 850
591 ExpectedResult abbrevData[] = { 851 ExpectedResult abbrevData[] = {
592 {t_1m_59_9996s, UPRV_LENGTHOF(t_1m_59_9996s), "1 min, 59.9996 secs"} , 852 {t_1m_59_9996s, UPRV_LENGTHOF(t_1m_59_9996s), "1 min, 59.9996 sec"},
593 {t_19m, UPRV_LENGTHOF(t_19m), "19 mins"}, 853 {t_19m, UPRV_LENGTHOF(t_19m), "19 min"},
594 {t_1h_23_5s, UPRV_LENGTHOF(t_1h_23_5s), "1 hr, 23.5 secs"}, 854 {t_1h_23_5s, UPRV_LENGTHOF(t_1h_23_5s), "1 hr, 23.5 sec"},
595 {t_1h_23_5m, UPRV_LENGTHOF(t_1h_23_5m), "1 hr, 23.5 mins"}, 855 {t_1h_23_5m, UPRV_LENGTHOF(t_1h_23_5m), "1 hr, 23.5 min"},
596 {t_1h_0m_23s, UPRV_LENGTHOF(t_1h_0m_23s), "1 hr, 0 mins, 23 secs"}, 856 {t_1h_0m_23s, UPRV_LENGTHOF(t_1h_0m_23s), "1 hr, 0 min, 23 sec"},
597 {t_2y_5M_3w_4d, UPRV_LENGTHOF(t_2y_5M_3w_4d), "2 yrs, 5 mths, 3 wks, 4 days"}}; 857 {t_2y_5M_3w_4d, UPRV_LENGTHOF(t_2y_5M_3w_4d), "2 yrs, 5 mths, 3 wks, 4 days"}};
598 858
599 ExpectedResult narrowData[] = { 859 ExpectedResult narrowData[] = {
600 {t_1m_59_9996s, UPRV_LENGTHOF(t_1m_59_9996s), "1m 59.9996s"}, 860 {t_1m_59_9996s, UPRV_LENGTHOF(t_1m_59_9996s), "1m 59.9996s"},
601 {t_19m, UPRV_LENGTHOF(t_19m), "19m"}, 861 {t_19m, UPRV_LENGTHOF(t_19m), "19m"},
602 {t_1h_23_5s, UPRV_LENGTHOF(t_1h_23_5s), "1h 23.5s"}, 862 {t_1h_23_5s, UPRV_LENGTHOF(t_1h_23_5s), "1h 23.5s"},
603 {t_1h_23_5m, UPRV_LENGTHOF(t_1h_23_5m), "1h 23.5m"}, 863 {t_1h_23_5m, UPRV_LENGTHOF(t_1h_23_5m), "1h 23.5m"},
604 {t_1h_0m_23s, UPRV_LENGTHOF(t_1h_0m_23s), "1h 0m 23s"}, 864 {t_1h_0m_23s, UPRV_LENGTHOF(t_1h_0m_23s), "1h 0m 23s"},
605 {t_2y_5M_3w_4d, UPRV_LENGTHOF(t_2y_5M_3w_4d), "2y 5m 3w 4d"}}; 865 {t_2y_5M_3w_4d, UPRV_LENGTHOF(t_2y_5M_3w_4d), "2y 5m 3w 4d"}};
606 866
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after
864 UnicodeString("3.5 feet"), 1124 UnicodeString("3.5 feet"),
865 buffer); 1125 buffer);
866 } 1126 }
867 1127
868 void MeasureFormatTest::TestFormatMeasuresZeroArg() { 1128 void MeasureFormatTest::TestFormatMeasuresZeroArg() {
869 UErrorCode status = U_ZERO_ERROR; 1129 UErrorCode status = U_ZERO_ERROR;
870 MeasureFormat fmt("en", UMEASFMT_WIDTH_WIDE, status); 1130 MeasureFormat fmt("en", UMEASFMT_WIDTH_WIDE, status);
871 verifyFormat("TestFormatMeasuresZeroArg", fmt, NULL, 0, ""); 1131 verifyFormat("TestFormatMeasuresZeroArg", fmt, NULL, 0, "");
872 } 1132 }
873 1133
874 void MeasureFormatTest::TestMultiplesWithPer() {
875 Locale en("en");
876 UErrorCode status = U_ZERO_ERROR;
877 LocalPointer<MeasureUnit> second(MeasureUnit::createSecond(status));
878 LocalPointer<MeasureUnit> minute(MeasureUnit::createMinute(status));
879 if (!assertSuccess("", status)) {
880 return;
881 }
882
883 // Per unit test.
884 helperTestMultiplesWithPer(
885 en, UMEASFMT_WIDTH_WIDE, *second, "2 miles, 1 foot, 2.3 inches per s econd");
886 helperTestMultiplesWithPer(
887 en, UMEASFMT_WIDTH_SHORT, *second, "2 mi, 1 ft, 2.3 inps");
888 helperTestMultiplesWithPer(
889 en, UMEASFMT_WIDTH_NARROW, *second, "2mi 1\\u2032 2.3\\u2033/s");
890
891 // Fallback compound per test
892 helperTestMultiplesWithPer(
893 en, UMEASFMT_WIDTH_WIDE, *minute, "2 miles, 1 foot, 2.3 inches per m inute");
894 helperTestMultiplesWithPer(
895 en, UMEASFMT_WIDTH_SHORT, *minute, "2 mi, 1 ft, 2.3 in/min");
896 helperTestMultiplesWithPer(
897 en, UMEASFMT_WIDTH_NARROW, *minute, "2mi 1\\u2032 2.3\\u2033/m");
898 }
899
900 void MeasureFormatTest::TestSimplePer() { 1134 void MeasureFormatTest::TestSimplePer() {
901 Locale en("en"); 1135 Locale en("en");
902 UErrorCode status = U_ZERO_ERROR; 1136 UErrorCode status = U_ZERO_ERROR;
903 LocalPointer<MeasureUnit> second(MeasureUnit::createSecond(status)); 1137 LocalPointer<MeasureUnit> second(MeasureUnit::createSecond(status));
904 LocalPointer<MeasureUnit> minute(MeasureUnit::createMinute(status)); 1138 LocalPointer<MeasureUnit> minute(MeasureUnit::createMinute(status));
905 LocalPointer<MeasureUnit> pound(MeasureUnit::createPound(status)); 1139 LocalPointer<MeasureUnit> pound(MeasureUnit::createPound(status));
906 if (!assertSuccess("", status)) { 1140 if (!assertSuccess("", status)) {
907 return; 1141 return;
908 } 1142 }
909 1143
910 helperTestSimplePer( 1144 helperTestSimplePer(
911 en, UMEASFMT_WIDTH_SHORT, 1.0, *pound, *second, "1 lbps"); 1145 en, UMEASFMT_WIDTH_WIDE,
1146 1.0, *pound, *second, "1 pound per second");
912 helperTestSimplePer( 1147 helperTestSimplePer(
913 en, UMEASFMT_WIDTH_SHORT, 2.0, *pound, *second, "2 lbps"); 1148 en, UMEASFMT_WIDTH_WIDE,
1149 2.0, *pound, *second, "2 pounds per second");
1150 helperTestSimplePer(
1151 en, UMEASFMT_WIDTH_WIDE,
1152 1.0, *pound, *minute, "1 pound per minute");
1153 helperTestSimplePer(
1154 en, UMEASFMT_WIDTH_WIDE,
1155 2.0, *pound, *minute, "2 pounds per minute");
1156
1157 helperTestSimplePer(
1158 en, UMEASFMT_WIDTH_SHORT, 1.0, *pound, *second, "1 lb/s");
1159 helperTestSimplePer(
1160 en, UMEASFMT_WIDTH_SHORT, 2.0, *pound, *second, "2 lb/s");
914 helperTestSimplePer( 1161 helperTestSimplePer(
915 en, UMEASFMT_WIDTH_SHORT, 1.0, *pound, *minute, "1 lb/min"); 1162 en, UMEASFMT_WIDTH_SHORT, 1.0, *pound, *minute, "1 lb/min");
916 helperTestSimplePer( 1163 helperTestSimplePer(
917 en, UMEASFMT_WIDTH_SHORT, 2.0, *pound, *minute, "2 lb/min"); 1164 en, UMEASFMT_WIDTH_SHORT, 2.0, *pound, *minute, "2 lb/min");
1165
1166 helperTestSimplePer(
1167 en, UMEASFMT_WIDTH_NARROW, 1.0, *pound, *second, "1#/s");
1168 helperTestSimplePer(
1169 en, UMEASFMT_WIDTH_NARROW, 2.0, *pound, *second, "2#/s");
1170 helperTestSimplePer(
1171 en, UMEASFMT_WIDTH_NARROW, 1.0, *pound, *minute, "1#/min");
1172 helperTestSimplePer(
1173 en, UMEASFMT_WIDTH_NARROW, 2.0, *pound, *minute, "2#/min");
1174
1175 helperTestSimplePer(
1176 en, UMEASFMT_WIDTH_SHORT,
1177 23.3, *pound, *second, "23.3 lb/s",
1178 NumberFormat::kDecimalSeparatorField,
1179 2, 3);
1180
1181 helperTestSimplePer(
1182 en, UMEASFMT_WIDTH_SHORT,
1183 23.3, *pound, *second, "23.3 lb/s",
1184 NumberFormat::kIntegerField,
1185 0, 2);
1186
1187 helperTestSimplePer(
1188 en, UMEASFMT_WIDTH_SHORT,
1189 23.3, *pound, *minute, "23.3 lb/min",
1190 NumberFormat::kDecimalSeparatorField,
1191 2, 3);
1192
1193 helperTestSimplePer(
1194 en, UMEASFMT_WIDTH_SHORT,
1195 23.3, *pound, *minute, "23.3 lb/min",
1196 NumberFormat::kIntegerField,
1197 0, 2);
918 } 1198 }
919 1199
920 void MeasureFormatTest::TestNumeratorPlurals() { 1200 void MeasureFormatTest::TestNumeratorPlurals() {
921 Locale pl("pl"); 1201 Locale pl("pl");
922 UErrorCode status = U_ZERO_ERROR; 1202 UErrorCode status = U_ZERO_ERROR;
923 LocalPointer<MeasureUnit> second(MeasureUnit::createSecond(status)); 1203 LocalPointer<MeasureUnit> second(MeasureUnit::createSecond(status));
924 LocalPointer<MeasureUnit> foot(MeasureUnit::createFoot(status)); 1204 LocalPointer<MeasureUnit> foot(MeasureUnit::createFoot(status));
925 if (!assertSuccess("", status)) { 1205 if (!assertSuccess("", status)) {
926 return; 1206 return;
927 } 1207 }
928 1208
929 helperTestSimplePer( 1209 helperTestSimplePer(
930 pl, UMEASFMT_WIDTH_WIDE, 1.0, *foot, *second, "1 stopa na sekund\\u0 119"); 1210 pl,
1211 UMEASFMT_WIDTH_WIDE,
1212 1.0, *foot, *second, "1 stopa na sekund\\u0119");
931 helperTestSimplePer( 1213 helperTestSimplePer(
932 pl, UMEASFMT_WIDTH_WIDE, 2.0, *foot, *second, "2 stopy na sekund\\u0 119"); 1214 pl,
1215 UMEASFMT_WIDTH_WIDE,
1216 2.0, *foot, *second, "2 stopy na sekund\\u0119");
933 helperTestSimplePer( 1217 helperTestSimplePer(
934 pl, UMEASFMT_WIDTH_WIDE, 5.0, *foot, *second, "5 st\\u00f3p na sekun d\\u0119"); 1218 pl,
1219 UMEASFMT_WIDTH_WIDE,
1220 5.0, *foot, *second, "5 st\\u00f3p na sekund\\u0119");
935 helperTestSimplePer( 1221 helperTestSimplePer(
936 pl, UMEASFMT_WIDTH_WIDE, 1.5, *foot, *second, "1,5 stopy na sekund\\ u0119"); 1222 pl, UMEASFMT_WIDTH_WIDE,
1223 1.5, *foot, *second, "1,5 stopy na sekund\\u0119");
937 } 1224 }
938 1225
939 void MeasureFormatTest::helperTestSimplePer( 1226 void MeasureFormatTest::helperTestSimplePer(
940 const Locale &locale, 1227 const Locale &locale,
941 UMeasureFormatWidth width, 1228 UMeasureFormatWidth width,
942 double value, 1229 double value,
943 const MeasureUnit &unit, 1230 const MeasureUnit &unit,
944 const MeasureUnit &perUnit, 1231 const MeasureUnit &perUnit,
945 const char *expected) { 1232 const char *expected) {
1233 helperTestSimplePer(
1234 locale,
1235 width,
1236 value,
1237 unit,
1238 perUnit,
1239 expected,
1240 FieldPosition::DONT_CARE,
1241 0,
1242 0);
1243 }
1244
1245 void MeasureFormatTest::helperTestSimplePer(
1246 const Locale &locale,
1247 UMeasureFormatWidth width,
1248 double value,
1249 const MeasureUnit &unit,
1250 const MeasureUnit &perUnit,
1251 const char *expected,
1252 int32_t field,
1253 int32_t expected_start,
1254 int32_t expected_end) {
946 UErrorCode status = U_ZERO_ERROR; 1255 UErrorCode status = U_ZERO_ERROR;
947 FieldPosition pos(0); 1256 FieldPosition pos(field);
948 MeasureFormat fmt(locale, width, status); 1257 MeasureFormat fmt(locale, width, status);
949 if (!assertSuccess("Error creating format object", status)) { 1258 if (!assertSuccess("Error creating format object", status)) {
950 return; 1259 return;
951 } 1260 }
952 Measure measure(value, (MeasureUnit *) unit.clone(), status); 1261 Measure measure(value, (MeasureUnit *) unit.clone(), status);
953 if (!assertSuccess("Error creating measure object", status)) { 1262 if (!assertSuccess("Error creating measure object", status)) {
954 return; 1263 return;
955 } 1264 }
956 UnicodeString buffer; 1265 UnicodeString prefix("prefix: ");
957 fmt.formatMeasuresPer( 1266 UnicodeString buffer(prefix);
958 &measure, 1267 fmt.formatMeasurePerUnit(
959 1, 1268 measure,
960 perUnit, 1269 perUnit,
961 buffer, 1270 buffer,
962 pos, 1271 pos,
963 status);
964 if (!assertSuccess("Error formatting measures with per", status)) {
965 return;
966 }
967 assertEquals(
968 "TestSimplePer",
969 UnicodeString(expected).unescape(),
970 buffer);
971 }
972
973 void MeasureFormatTest::helperTestMultiplesWithPer(
974 const Locale &locale,
975 UMeasureFormatWidth width,
976 const MeasureUnit &perUnit,
977 const char *expected) {
978 UErrorCode status = U_ZERO_ERROR;
979 FieldPosition pos(0);
980 MeasureFormat fmt(locale, width, status);
981 if (!assertSuccess("Error creating format object", status)) {
982 return;
983 }
984 Measure measures[] = {
985 Measure(2, MeasureUnit::createMile(status), status),
986 Measure(1, MeasureUnit::createFoot(status), status),
987 Measure(2.3, MeasureUnit::createInch(status), status)};
988 if (!assertSuccess("Error creating measures", status)) {
989 return;
990 }
991 UnicodeString buffer;
992 fmt.formatMeasuresPer(
993 measures,
994 UPRV_LENGTHOF(measures),
995 perUnit,
996 buffer,
997 pos,
998 status); 1272 status);
999 if (!assertSuccess("Error formatting measures with per", status)) { 1273 if (!assertSuccess("Error formatting measures with per", status)) {
1000 return; 1274 return;
1001 } 1275 }
1276 UnicodeString uexpected(expected);
1277 uexpected = prefix + uexpected;
1002 assertEquals( 1278 assertEquals(
1003 "TestMultiplesWithPer", 1279 "TestSimplePer",
1004 UnicodeString(expected).unescape(), 1280 uexpected.unescape(),
1005 buffer); 1281 buffer);
1282 if (field != FieldPosition::DONT_CARE) {
1283 assertEquals(
1284 "Start", expected_start, pos.getBeginIndex() - prefix.length());
1285 assertEquals(
1286 "End", expected_end, pos.getEndIndex() - prefix.length());
1287 }
1006 } 1288 }
1007 1289
1008 void MeasureFormatTest::TestMultiples() { 1290 void MeasureFormatTest::TestMultiples() {
1009 Locale ru("ru"); 1291 Locale ru("ru");
1010 Locale en("en"); 1292 Locale en("en");
1011 helperTestMultiples(en, UMEASFMT_WIDTH_WIDE, "2 miles, 1 foot, 2.3 inches"); 1293 helperTestMultiples(en, UMEASFMT_WIDTH_WIDE, "2 miles, 1 foot, 2.3 inches");
1012 helperTestMultiples(en, UMEASFMT_WIDTH_SHORT, "2 mi, 1 ft, 2.3 in"); 1294 helperTestMultiples(en, UMEASFMT_WIDTH_SHORT, "2 mi, 1 ft, 2.3 in");
1013 helperTestMultiples(en, UMEASFMT_WIDTH_NARROW, "2mi 1\\u2032 2.3\\u2033"); 1295 helperTestMultiples(en, UMEASFMT_WIDTH_NARROW, "2mi 1\\u2032 2.3\\u2033");
1014 helperTestMultiples(ru, UMEASFMT_WIDTH_WIDE, "2 \\u043C\\u0438\\u043B\\u0438 , 1 \\u0444\\u0443\\u0442 \\u0438 2,3 \\u0434\\u044E\\u0439\\u043C\\u0430"); 1296 helperTestMultiples(ru, UMEASFMT_WIDTH_WIDE, "2 \\u043C\\u0438\\u043B\\u0438 1 \\u0444\\u0443\\u0442 \\u0438 2,3 \\u0434\\u044E\\u0439\\u043C\\u0430");
1015 helperTestMultiples(ru, UMEASFMT_WIDTH_SHORT, "2 \\u043C\\u0438\\u043B\\u043 8, 1 \\u0444\\u0443\\u0442, 2,3 \\u0434\\u044E\\u0439\\u043C."); 1297 helperTestMultiples(ru, UMEASFMT_WIDTH_SHORT, "2 \\u043C\\u0438\\u043B\\u043 8 1 \\u0444\\u0443\\u0442 \\u0438 2,3 \\u0434\\u044E\\u0439\\u043C.");
1016 helperTestMultiples(ru, UMEASFMT_WIDTH_NARROW, "2 \\u043C\\u0438\\u043B\\u04 4C 1 \\u0444\\u0443\\u0442 2,3 \\u0434\\u044E\\u0439\\u043C\\u0430"); 1298 helperTestMultiples(ru, UMEASFMT_WIDTH_NARROW, "2 \\u043C\\u0438\\u043B\\u04 4C 1 \\u0444\\u0443\\u0442 2,3 \\u0434\\u044E\\u0439\\u043C\\u0430");
1017 } 1299 }
1018 1300
1019 void MeasureFormatTest::helperTestMultiples( 1301 void MeasureFormatTest::helperTestMultiples(
1020 const Locale &locale, 1302 const Locale &locale,
1021 UMeasureFormatWidth width, 1303 UMeasureFormatWidth width,
1022 const char *expected) { 1304 const char *expected) {
1023 UErrorCode status = U_ZERO_ERROR; 1305 UErrorCode status = U_ZERO_ERROR;
1024 FieldPosition pos(0); 1306 FieldPosition pos(0);
1025 MeasureFormat fmt(locale, width, status); 1307 MeasureFormat fmt(locale, width, status);
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
1174 "no decimal separator", 1456 "no decimal separator",
1175 fmt, 1457 fmt,
1176 prefix, 1458 prefix,
1177 third, 1459 third,
1178 UPRV_LENGTHOF(third), 1460 UPRV_LENGTHOF(third),
1179 NumberFormat::kDecimalSeparatorField, 1461 NumberFormat::kDecimalSeparatorField,
1180 0, 1462 0,
1181 0); 1463 0);
1182 } 1464 }
1183 1465
1184 void MeasureFormatTest::TestFieldPositionMultipleWithPer() {
1185 UErrorCode status = U_ZERO_ERROR;
1186 MeasureFormat fmt("en", UMEASFMT_WIDTH_SHORT, status);
1187 if (!assertSuccess("Error creating format object", status)) {
1188 return;
1189 }
1190 Measure first[] = {
1191 Measure(354, MeasureUnit::createMeter(status), status),
1192 Measure(23, MeasureUnit::createCentimeter(status), status)};
1193 Measure second[] = {
1194 Measure(354, MeasureUnit::createMeter(status), status),
1195 Measure(23, MeasureUnit::createCentimeter(status), status),
1196 Measure(5.4, MeasureUnit::createMillimeter(status), status)};
1197 Measure third[] = {
1198 Measure(3, MeasureUnit::createMeter(status), status),
1199 Measure(23, MeasureUnit::createCentimeter(status), status),
1200 Measure(5, MeasureUnit::createMillimeter(status), status)};
1201 if (!assertSuccess("Error creating measure objects", status)) {
1202 return;
1203 }
1204 UnicodeString prefix("123456: ");
1205
1206 LocalPointer<MeasureUnit> secondUnit(MeasureUnit::createSecond(status));
1207 LocalPointer<MeasureUnit> minuteUnit(MeasureUnit::createMinute(status));
1208 if (!assertSuccess("Error creating format object", status)) {
1209 return;
1210 }
1211
1212 // per unit test
1213 verifyFieldPositionWithPer(
1214 "Integer",
1215 fmt,
1216 prefix,
1217 first,
1218 UPRV_LENGTHOF(first),
1219 *secondUnit,
1220 NumberFormat::kIntegerField,
1221 8,
1222 11);
1223 verifyFieldPositionWithPer(
1224 "Decimal separator",
1225 fmt,
1226 prefix,
1227 second,
1228 UPRV_LENGTHOF(second),
1229 *secondUnit,
1230 NumberFormat::kDecimalSeparatorField,
1231 23,
1232 24);
1233 verifyFieldPositionWithPer(
1234 "no decimal separator",
1235 fmt,
1236 prefix,
1237 third,
1238 UPRV_LENGTHOF(third),
1239 *secondUnit,
1240 NumberFormat::kDecimalSeparatorField,
1241 0,
1242 0);
1243
1244 // Fallback to compound per test
1245 verifyFieldPositionWithPer(
1246 "Integer",
1247 fmt,
1248 prefix,
1249 first,
1250 UPRV_LENGTHOF(first),
1251 *minuteUnit,
1252 NumberFormat::kIntegerField,
1253 8,
1254 11);
1255 verifyFieldPositionWithPer(
1256 "Decimal separator",
1257 fmt,
1258 prefix,
1259 second,
1260 UPRV_LENGTHOF(second),
1261 *minuteUnit,
1262 NumberFormat::kDecimalSeparatorField,
1263 23,
1264 24);
1265 verifyFieldPositionWithPer(
1266 "no decimal separator",
1267 fmt,
1268 prefix,
1269 third,
1270 UPRV_LENGTHOF(third),
1271 *minuteUnit,
1272 NumberFormat::kDecimalSeparatorField,
1273 0,
1274 0);
1275 }
1276
1277 void MeasureFormatTest::TestBadArg() { 1466 void MeasureFormatTest::TestBadArg() {
1278 UErrorCode status = U_ZERO_ERROR; 1467 UErrorCode status = U_ZERO_ERROR;
1279 MeasureFormat fmt("en", UMEASFMT_WIDTH_SHORT, status); 1468 MeasureFormat fmt("en", UMEASFMT_WIDTH_SHORT, status);
1280 if (!assertSuccess("Error creating format object", status)) { 1469 if (!assertSuccess("Error creating format object", status)) {
1281 return; 1470 return;
1282 } 1471 }
1283 FieldPosition pos(0); 1472 FieldPosition pos(0);
1284 UnicodeString buffer; 1473 UnicodeString buffer;
1285 fmt.format( 1474 fmt.format(
1286 9.3, 1475 9.3,
(...skipping 29 matching lines...) Expand all
1316 } 1505 }
1317 1506
1318 void MeasureFormatTest::TestGroupingSeparator() { 1507 void MeasureFormatTest::TestGroupingSeparator() {
1319 UErrorCode status = U_ZERO_ERROR; 1508 UErrorCode status = U_ZERO_ERROR;
1320 Locale en("en"); 1509 Locale en("en");
1321 MeasureFormat fmt(en, UMEASFMT_WIDTH_SHORT, status); 1510 MeasureFormat fmt(en, UMEASFMT_WIDTH_SHORT, status);
1322 if (!assertSuccess("Error creating format object", status)) { 1511 if (!assertSuccess("Error creating format object", status)) {
1323 return; 1512 return;
1324 } 1513 }
1325 Measure ms[] = { 1514 Measure ms[] = {
1326 Measure(INT32_MAX, MeasureUnit::createYear(status), status), 1515 Measure((int32_t)INT32_MAX, MeasureUnit::createYear(status), status) ,
1327 Measure(INT32_MIN, MeasureUnit::createMonth(status), status), 1516 Measure((int32_t)INT32_MIN, MeasureUnit::createMonth(status), status ),
1328 Measure(-987, MeasureUnit::createDay(status), status), 1517 Measure(-987, MeasureUnit::createDay(status), status),
1329 Measure(1362, MeasureUnit::createHour(status), status), 1518 Measure(1362, MeasureUnit::createHour(status), status),
1330 Measure(987, MeasureUnit::createMinute(status), status)}; 1519 Measure(987, MeasureUnit::createMinute(status), status)};
1331 FieldPosition pos(NumberFormat::kGroupingSeparatorField); 1520 FieldPosition pos(NumberFormat::kGroupingSeparatorField);
1332 UnicodeString appendTo; 1521 UnicodeString appendTo;
1333 fmt.formatMeasures(ms, 5, appendTo, pos, status); 1522 fmt.formatMeasures(ms, 5, appendTo, pos, status);
1334 if (!assertSuccess("Error formatting", status)) { 1523 if (!assertSuccess("Error formatting", status)) {
1335 return; 1524 return;
1336 } 1525 }
1337 assertEquals( 1526 assertEquals(
1338 "grouping separator", 1527 "grouping separator",
1339 "2,147,483,647 yrs, -2,147,483,648 mths, -987 days, 1,362 hrs, 987 m ins", 1528 "2,147,483,647 yrs, -2,147,483,648 mths, -987 days, 1,362 hr, 987 mi n",
1340 appendTo); 1529 appendTo);
1341 assertEquals("begin index", 9, pos.getBeginIndex()); 1530 assertEquals("begin index", 9, pos.getBeginIndex());
1342 assertEquals("end index", 10, pos.getEndIndex()); 1531 assertEquals("end index", 10, pos.getEndIndex());
1343 } 1532 }
1344 1533
1345 void MeasureFormatTest::TestDoubleZero() { 1534 void MeasureFormatTest::TestDoubleZero() {
1346 UErrorCode status = U_ZERO_ERROR; 1535 UErrorCode status = U_ZERO_ERROR;
1347 Measure measures[] = { 1536 Measure measures[] = {
1348 Measure(4.7, MeasureUnit::createHour(status), status), 1537 Measure(4.7, MeasureUnit::createHour(status), status),
1349 Measure(23, MeasureUnit::createMinute(status), status), 1538 Measure(23, MeasureUnit::createMinute(status), status),
(...skipping 22 matching lines...) Expand all
1372 fmt.formatMeasures(measures, UPRV_LENGTHOF(measures), appendTo, pos, status) ; 1561 fmt.formatMeasures(measures, UPRV_LENGTHOF(measures), appendTo, pos, status) ;
1373 if (!assertSuccess("Error formatting", status)) { 1562 if (!assertSuccess("Error formatting", status)) {
1374 return; 1563 return;
1375 } 1564 }
1376 assertEquals( 1565 assertEquals(
1377 "TestDoubleZero", 1566 "TestDoubleZero",
1378 UnicodeString("-4 hours, 23 minutes, 16.00 seconds"), 1567 UnicodeString("-4 hours, 23 minutes, 16.00 seconds"),
1379 appendTo); 1568 appendTo);
1380 } 1569 }
1381 1570
1571 void MeasureFormatTest::TestUnitPerUnitResolution() {
1572 UErrorCode status = U_ZERO_ERROR;
1573 Locale en("en");
1574 MeasureFormat fmt("en", UMEASFMT_WIDTH_SHORT, status);
1575 Measure measure(50, MeasureUnit::createPound(status), status);
1576 LocalPointer<MeasureUnit> sqInch(MeasureUnit::createSquareInch(status));
1577 if (!assertSuccess("Create of format unit and per unit", status)) {
1578 return;
1579 }
1580 FieldPosition pos(0);
1581 UnicodeString actual;
1582 fmt.formatMeasurePerUnit(
1583 measure,
1584 *sqInch,
1585 actual,
1586 pos,
1587 status);
1588 assertEquals("", "50 psi", actual);
1589 }
1590
1382 void MeasureFormatTest::verifyFieldPosition( 1591 void MeasureFormatTest::verifyFieldPosition(
1383 const char *description, 1592 const char *description,
1384 const MeasureFormat &fmt, 1593 const MeasureFormat &fmt,
1385 const UnicodeString &prefix, 1594 const UnicodeString &prefix,
1386 const Measure *measures, 1595 const Measure *measures,
1387 int32_t measureCount, 1596 int32_t measureCount,
1388 NumberFormat::EAlignmentFields field, 1597 NumberFormat::EAlignmentFields field,
1389 int32_t start, 1598 int32_t start,
1390 int32_t end) { 1599 int32_t end) {
1391 // 8 char lead 1600 // 8 char lead
1392 UnicodeString result(prefix); 1601 UnicodeString result(prefix);
1393 FieldPosition pos(field); 1602 FieldPosition pos(field);
1394 UErrorCode status = U_ZERO_ERROR; 1603 UErrorCode status = U_ZERO_ERROR;
1395 CharString ch;
1396 const char *descPrefix = ch.append(description, status)
1397 .append(": ", status).data();
1398 CharString beginIndex;
1399 beginIndex.append(descPrefix, status).append("beginIndex", status);
1400 CharString endIndex;
1401 endIndex.append(descPrefix, status).append("endIndex", status);
1402 fmt.formatMeasures(measures, measureCount, result, pos, status);
1403 if (!assertSuccess("Error formatting", status)) {
1404 return;
1405 }
1406 assertEquals(beginIndex.data(), start, pos.getBeginIndex());
1407 assertEquals(endIndex.data(), end, pos.getEndIndex());
1408 }
1409
1410 void MeasureFormatTest::verifyFieldPositionWithPer(
1411 const char *description,
1412 const MeasureFormat &fmt,
1413 const UnicodeString &prefix,
1414 const Measure *measures,
1415 int32_t measureCount,
1416 const MeasureUnit &perUnit,
1417 NumberFormat::EAlignmentFields field,
1418 int32_t start,
1419 int32_t end) {
1420 UnicodeString result(prefix);
1421 FieldPosition pos(field);
1422 UErrorCode status = U_ZERO_ERROR;
1423 CharString ch; 1604 CharString ch;
1424 const char *descPrefix = ch.append(description, status) 1605 const char *descPrefix = ch.append(description, status)
1425 .append(": ", status).data(); 1606 .append(": ", status).data();
1426 CharString beginIndex; 1607 CharString beginIndex;
1427 beginIndex.append(descPrefix, status).append("beginIndex", status); 1608 beginIndex.append(descPrefix, status).append("beginIndex", status);
1428 CharString endIndex; 1609 CharString endIndex;
1429 endIndex.append(descPrefix, status).append("endIndex", status); 1610 endIndex.append(descPrefix, status).append("endIndex", status);
1430 fmt.formatMeasuresPer( 1611 fmt.formatMeasures(measures, measureCount, result, pos, status);
1431 measures,
1432 measureCount,
1433 perUnit,
1434 result,
1435 pos,
1436 status);
1437 if (!assertSuccess("Error formatting", status)) { 1612 if (!assertSuccess("Error formatting", status)) {
1438 return; 1613 return;
1439 } 1614 }
1440 assertEquals(beginIndex.data(), start, pos.getBeginIndex()); 1615 assertEquals(beginIndex.data(), start, pos.getBeginIndex());
1441 assertEquals(endIndex.data(), end, pos.getEndIndex()); 1616 assertEquals(endIndex.data(), end, pos.getEndIndex());
1442 } 1617 }
1443 1618
1444 void MeasureFormatTest::verifyFormat( 1619 void MeasureFormatTest::verifyFormat(
1445 const char *description, 1620 const char *description,
1446 const MeasureFormat &fmt, 1621 const MeasureFormat &fmt,
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
1482 verifyFormat(description, fmt, expectedResults[i].measures, expectedResu lts[i].count, expectedResults[i].expected); 1657 verifyFormat(description, fmt, expectedResults[i].measures, expectedResu lts[i].count, expectedResults[i].expected);
1483 } 1658 }
1484 } 1659 }
1485 1660
1486 extern IntlTest *createMeasureFormatTest() { 1661 extern IntlTest *createMeasureFormatTest() {
1487 return new MeasureFormatTest(); 1662 return new MeasureFormatTest();
1488 } 1663 }
1489 1664
1490 #endif 1665 #endif
1491 1666
OLDNEW
« no previous file with comments | « source/test/intltest/loctest.cpp ('k') | source/test/intltest/nmfmtrt.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698