| Index: source/test/intltest/measfmttest.cpp
|
| diff --git a/source/test/intltest/measfmttest.cpp b/source/test/intltest/measfmttest.cpp
|
| index ccbc75729a70ae4435f4ecc99a7b8e49329f9f8b..f2f2d09734c8f2a0885eb6fef16d5195e0960eff 100644
|
| --- a/source/test/intltest/measfmttest.cpp
|
| +++ b/source/test/intltest/measfmttest.cpp
|
| @@ -1,6 +1,6 @@
|
| /*
|
| *******************************************************************************
|
| -* Copyright (C) 2014, International Business Machines Corporation and *
|
| +* Copyright (C) 2014-2015, International Business Machines Corporation and *
|
| * others. All Rights Reserved. *
|
| *******************************************************************************
|
| *
|
| @@ -40,6 +40,8 @@ private:
|
| void TestBasic();
|
| void TestCompatible53_1();
|
| void TestCompatible54_1();
|
| + void TestCompatible55_1();
|
| + void TestCompatible56_1();
|
| void TestGetAvailable();
|
| void TestExamplesInDocs();
|
| void TestFormatPeriodEn();
|
| @@ -47,7 +49,6 @@ private:
|
| void TestGreek();
|
| void TestFormatSingleArg();
|
| void TestFormatMeasuresZeroArg();
|
| - void TestMultiplesWithPer();
|
| void TestSimplePer();
|
| void TestNumeratorPlurals();
|
| void TestMultiples();
|
| @@ -55,11 +56,11 @@ private:
|
| void TestCurrencies();
|
| void TestFieldPosition();
|
| void TestFieldPositionMultiple();
|
| - void TestFieldPositionMultipleWithPer();
|
| void TestBadArg();
|
| void TestEquality();
|
| void TestGroupingSeparator();
|
| void TestDoubleZero();
|
| + void TestUnitPerUnitResolution();
|
| void verifyFormat(
|
| const char *description,
|
| const MeasureFormat &fmt,
|
| @@ -85,11 +86,16 @@ private:
|
| const MeasureUnit &unit,
|
| const MeasureUnit &perUnit,
|
| const char *expected);
|
| - void helperTestMultiplesWithPer(
|
| + void helperTestSimplePer(
|
| const Locale &locale,
|
| UMeasureFormatWidth width,
|
| + double value,
|
| const MeasureUnit &unit,
|
| - const char *expected);
|
| + const MeasureUnit &perUnit,
|
| + const char *expected,
|
| + int32_t field,
|
| + int32_t expected_start,
|
| + int32_t expected_end);
|
| void helperTestMultiples(
|
| const Locale &locale,
|
| UMeasureFormatWidth width,
|
| @@ -103,16 +109,6 @@ private:
|
| NumberFormat::EAlignmentFields field,
|
| int32_t start,
|
| int32_t end);
|
| - void verifyFieldPositionWithPer(
|
| - const char *description,
|
| - const MeasureFormat &fmt,
|
| - const UnicodeString &prefix,
|
| - const Measure *measures,
|
| - int32_t measureCount,
|
| - const MeasureUnit &perUnit,
|
| - NumberFormat::EAlignmentFields field,
|
| - int32_t start,
|
| - int32_t end);
|
| };
|
|
|
| void MeasureFormatTest::runIndexedTest(
|
| @@ -124,6 +120,8 @@ void MeasureFormatTest::runIndexedTest(
|
| TESTCASE_AUTO(TestBasic);
|
| TESTCASE_AUTO(TestCompatible53_1);
|
| TESTCASE_AUTO(TestCompatible54_1);
|
| + TESTCASE_AUTO(TestCompatible55_1);
|
| + TESTCASE_AUTO(TestCompatible56_1);
|
| TESTCASE_AUTO(TestGetAvailable);
|
| TESTCASE_AUTO(TestExamplesInDocs);
|
| TESTCASE_AUTO(TestFormatPeriodEn);
|
| @@ -131,7 +129,6 @@ void MeasureFormatTest::runIndexedTest(
|
| TESTCASE_AUTO(TestGreek);
|
| TESTCASE_AUTO(TestFormatSingleArg);
|
| TESTCASE_AUTO(TestFormatMeasuresZeroArg);
|
| - TESTCASE_AUTO(TestMultiplesWithPer);
|
| TESTCASE_AUTO(TestSimplePer);
|
| TESTCASE_AUTO(TestNumeratorPlurals);
|
| TESTCASE_AUTO(TestMultiples);
|
| @@ -139,11 +136,11 @@ void MeasureFormatTest::runIndexedTest(
|
| TESTCASE_AUTO(TestCurrencies);
|
| TESTCASE_AUTO(TestFieldPosition);
|
| TESTCASE_AUTO(TestFieldPositionMultiple);
|
| - TESTCASE_AUTO(TestFieldPositionMultipleWithPer);
|
| TESTCASE_AUTO(TestBadArg);
|
| TESTCASE_AUTO(TestEquality);
|
| TESTCASE_AUTO(TestGroupingSeparator);
|
| TESTCASE_AUTO(TestDoubleZero);
|
| + TESTCASE_AUTO(TestUnitPerUnitResolution);
|
| TESTCASE_AUTO_END;
|
| }
|
|
|
| @@ -326,6 +323,269 @@ void MeasureFormatTest::TestCompatible54_1() {
|
| assertSuccess("", status);
|
| }
|
|
|
| +void MeasureFormatTest::TestCompatible55_1() {
|
| + UErrorCode status = U_ZERO_ERROR;
|
| + LocalPointer<MeasureUnit> measureUnit;
|
| + measureUnit.adoptInstead(MeasureUnit::createGForce(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createMeterPerSecondSquared(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createArcMinute(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createArcSecond(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createDegree(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createRadian(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createAcre(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createHectare(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createSquareCentimeter(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createSquareFoot(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createSquareInch(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createSquareKilometer(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createSquareMeter(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createSquareMile(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createSquareYard(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createLiterPerKilometer(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createMilePerGallon(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createBit(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createByte(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createGigabit(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createGigabyte(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createKilobit(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createKilobyte(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createMegabit(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createMegabyte(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createTerabit(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createTerabyte(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createDay(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createHour(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createMicrosecond(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createMillisecond(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createMinute(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createMonth(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createNanosecond(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createSecond(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createWeek(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createYear(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createAmpere(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createMilliampere(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createOhm(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createVolt(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createCalorie(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createFoodcalorie(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createJoule(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createKilocalorie(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createKilojoule(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createKilowattHour(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createGigahertz(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createHertz(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createKilohertz(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createMegahertz(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createAstronomicalUnit(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createCentimeter(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createDecimeter(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createFathom(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createFoot(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createFurlong(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createInch(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createKilometer(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createLightYear(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createMeter(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createMicrometer(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createMile(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createMillimeter(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createNanometer(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createNauticalMile(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createParsec(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createPicometer(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createYard(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createLux(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createCarat(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createGram(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createKilogram(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createMetricTon(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createMicrogram(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createMilligram(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createOunce(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createOunceTroy(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createPound(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createStone(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createTon(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createGigawatt(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createHorsepower(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createKilowatt(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createMegawatt(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createMilliwatt(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createWatt(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createHectopascal(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createInchHg(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createMillibar(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createMillimeterOfMercury(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createPoundPerSquareInch(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createKarat(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createKilometerPerHour(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createMeterPerSecond(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createMilePerHour(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createCelsius(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createFahrenheit(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createGenericTemperature(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createKelvin(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createAcreFoot(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createBushel(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createCentiliter(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createCubicCentimeter(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createCubicFoot(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createCubicInch(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createCubicKilometer(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createCubicMeter(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createCubicMile(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createCubicYard(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createCup(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createDeciliter(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createFluidOunce(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createGallon(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createHectoliter(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createLiter(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createMegaliter(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createMilliliter(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createPint(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createQuart(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createTablespoon(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createTeaspoon(status));
|
| + assertSuccess("", status);
|
| +}
|
| +
|
| +void MeasureFormatTest::TestCompatible56_1() {
|
| + UErrorCode status = U_ZERO_ERROR;
|
| + LocalPointer<MeasureUnit> measureUnit;
|
| + measureUnit.adoptInstead(MeasureUnit::createGForce(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createMeterPerSecondSquared(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createArcMinute(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createArcSecond(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createDegree(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createRadian(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createRevolutionAngle(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createAcre(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createHectare(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createSquareCentimeter(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createSquareFoot(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createSquareInch(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createSquareKilometer(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createSquareMeter(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createSquareMile(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createSquareYard(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createLiterPer100Kilometers(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createLiterPerKilometer(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createMilePerGallon(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createBit(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createByte(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createGigabit(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createGigabyte(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createKilobit(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createKilobyte(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createMegabit(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createMegabyte(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createTerabit(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createTerabyte(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createCentury(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createDay(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createHour(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createMicrosecond(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createMillisecond(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createMinute(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createMonth(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createNanosecond(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createSecond(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createWeek(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createYear(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createAmpere(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createMilliampere(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createOhm(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createVolt(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createCalorie(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createFoodcalorie(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createJoule(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createKilocalorie(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createKilojoule(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createKilowattHour(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createGigahertz(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createHertz(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createKilohertz(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createMegahertz(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createAstronomicalUnit(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createCentimeter(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createDecimeter(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createFathom(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createFoot(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createFurlong(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createInch(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createKilometer(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createLightYear(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createMeter(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createMicrometer(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createMile(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createMileScandinavian(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createMillimeter(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createNanometer(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createNauticalMile(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createParsec(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createPicometer(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createYard(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createLux(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createCarat(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createGram(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createKilogram(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createMetricTon(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createMicrogram(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createMilligram(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createOunce(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createOunceTroy(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createPound(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createStone(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createTon(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createGigawatt(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createHorsepower(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createKilowatt(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createMegawatt(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createMilliwatt(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createWatt(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createHectopascal(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createInchHg(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createMillibar(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createMillimeterOfMercury(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createPoundPerSquareInch(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createKarat(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createKilometerPerHour(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createKnot(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createMeterPerSecond(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createMilePerHour(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createCelsius(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createFahrenheit(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createGenericTemperature(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createKelvin(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createAcreFoot(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createBushel(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createCentiliter(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createCubicCentimeter(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createCubicFoot(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createCubicInch(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createCubicKilometer(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createCubicMeter(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createCubicMile(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createCubicYard(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createCup(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createCupMetric(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createDeciliter(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createFluidOunce(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createGallon(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createHectoliter(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createLiter(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createMegaliter(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createMilliliter(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createPint(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createPintMetric(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createQuart(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createTablespoon(status));
|
| + measureUnit.adoptInstead(MeasureUnit::createTeaspoon(status));
|
| + assertSuccess("", status);
|
| +}
|
| +
|
| void MeasureFormatTest::TestBasic() {
|
| UErrorCode status = U_ZERO_ERROR;
|
| MeasureUnit *ptr1 = MeasureUnit::createArcMinute(status);
|
| @@ -589,11 +849,11 @@ void MeasureFormatTest::TestFormatPeriodEn() {
|
| {t_2y_5M_3w_4d, UPRV_LENGTHOF(t_2y_5M_3w_4d), "2 years, 5 months, 3 weeks, 4 days"}};
|
|
|
| ExpectedResult abbrevData[] = {
|
| - {t_1m_59_9996s, UPRV_LENGTHOF(t_1m_59_9996s), "1 min, 59.9996 secs"},
|
| - {t_19m, UPRV_LENGTHOF(t_19m), "19 mins"},
|
| - {t_1h_23_5s, UPRV_LENGTHOF(t_1h_23_5s), "1 hr, 23.5 secs"},
|
| - {t_1h_23_5m, UPRV_LENGTHOF(t_1h_23_5m), "1 hr, 23.5 mins"},
|
| - {t_1h_0m_23s, UPRV_LENGTHOF(t_1h_0m_23s), "1 hr, 0 mins, 23 secs"},
|
| + {t_1m_59_9996s, UPRV_LENGTHOF(t_1m_59_9996s), "1 min, 59.9996 sec"},
|
| + {t_19m, UPRV_LENGTHOF(t_19m), "19 min"},
|
| + {t_1h_23_5s, UPRV_LENGTHOF(t_1h_23_5s), "1 hr, 23.5 sec"},
|
| + {t_1h_23_5m, UPRV_LENGTHOF(t_1h_23_5m), "1 hr, 23.5 min"},
|
| + {t_1h_0m_23s, UPRV_LENGTHOF(t_1h_0m_23s), "1 hr, 0 min, 23 sec"},
|
| {t_2y_5M_3w_4d, UPRV_LENGTHOF(t_2y_5M_3w_4d), "2 yrs, 5 mths, 3 wks, 4 days"}};
|
|
|
| ExpectedResult narrowData[] = {
|
| @@ -871,32 +1131,6 @@ void MeasureFormatTest::TestFormatMeasuresZeroArg() {
|
| verifyFormat("TestFormatMeasuresZeroArg", fmt, NULL, 0, "");
|
| }
|
|
|
| -void MeasureFormatTest::TestMultiplesWithPer() {
|
| - Locale en("en");
|
| - UErrorCode status = U_ZERO_ERROR;
|
| - LocalPointer<MeasureUnit> second(MeasureUnit::createSecond(status));
|
| - LocalPointer<MeasureUnit> minute(MeasureUnit::createMinute(status));
|
| - if (!assertSuccess("", status)) {
|
| - return;
|
| - }
|
| -
|
| - // Per unit test.
|
| - helperTestMultiplesWithPer(
|
| - en, UMEASFMT_WIDTH_WIDE, *second, "2 miles, 1 foot, 2.3 inches per second");
|
| - helperTestMultiplesWithPer(
|
| - en, UMEASFMT_WIDTH_SHORT, *second, "2 mi, 1 ft, 2.3 inps");
|
| - helperTestMultiplesWithPer(
|
| - en, UMEASFMT_WIDTH_NARROW, *second, "2mi 1\\u2032 2.3\\u2033/s");
|
| -
|
| - // Fallback compound per test
|
| - helperTestMultiplesWithPer(
|
| - en, UMEASFMT_WIDTH_WIDE, *minute, "2 miles, 1 foot, 2.3 inches per minute");
|
| - helperTestMultiplesWithPer(
|
| - en, UMEASFMT_WIDTH_SHORT, *minute, "2 mi, 1 ft, 2.3 in/min");
|
| - helperTestMultiplesWithPer(
|
| - en, UMEASFMT_WIDTH_NARROW, *minute, "2mi 1\\u2032 2.3\\u2033/m");
|
| -}
|
| -
|
| void MeasureFormatTest::TestSimplePer() {
|
| Locale en("en");
|
| UErrorCode status = U_ZERO_ERROR;
|
| @@ -908,13 +1142,59 @@ void MeasureFormatTest::TestSimplePer() {
|
| }
|
|
|
| helperTestSimplePer(
|
| - en, UMEASFMT_WIDTH_SHORT, 1.0, *pound, *second, "1 lbps");
|
| + en, UMEASFMT_WIDTH_WIDE,
|
| + 1.0, *pound, *second, "1 pound per second");
|
| + helperTestSimplePer(
|
| + en, UMEASFMT_WIDTH_WIDE,
|
| + 2.0, *pound, *second, "2 pounds per second");
|
| + helperTestSimplePer(
|
| + en, UMEASFMT_WIDTH_WIDE,
|
| + 1.0, *pound, *minute, "1 pound per minute");
|
| + helperTestSimplePer(
|
| + en, UMEASFMT_WIDTH_WIDE,
|
| + 2.0, *pound, *minute, "2 pounds per minute");
|
| +
|
| + helperTestSimplePer(
|
| + en, UMEASFMT_WIDTH_SHORT, 1.0, *pound, *second, "1 lb/s");
|
| helperTestSimplePer(
|
| - en, UMEASFMT_WIDTH_SHORT, 2.0, *pound, *second, "2 lbps");
|
| + en, UMEASFMT_WIDTH_SHORT, 2.0, *pound, *second, "2 lb/s");
|
| helperTestSimplePer(
|
| en, UMEASFMT_WIDTH_SHORT, 1.0, *pound, *minute, "1 lb/min");
|
| helperTestSimplePer(
|
| en, UMEASFMT_WIDTH_SHORT, 2.0, *pound, *minute, "2 lb/min");
|
| +
|
| + helperTestSimplePer(
|
| + en, UMEASFMT_WIDTH_NARROW, 1.0, *pound, *second, "1#/s");
|
| + helperTestSimplePer(
|
| + en, UMEASFMT_WIDTH_NARROW, 2.0, *pound, *second, "2#/s");
|
| + helperTestSimplePer(
|
| + en, UMEASFMT_WIDTH_NARROW, 1.0, *pound, *minute, "1#/min");
|
| + helperTestSimplePer(
|
| + en, UMEASFMT_WIDTH_NARROW, 2.0, *pound, *minute, "2#/min");
|
| +
|
| + helperTestSimplePer(
|
| + en, UMEASFMT_WIDTH_SHORT,
|
| + 23.3, *pound, *second, "23.3 lb/s",
|
| + NumberFormat::kDecimalSeparatorField,
|
| + 2, 3);
|
| +
|
| + helperTestSimplePer(
|
| + en, UMEASFMT_WIDTH_SHORT,
|
| + 23.3, *pound, *second, "23.3 lb/s",
|
| + NumberFormat::kIntegerField,
|
| + 0, 2);
|
| +
|
| + helperTestSimplePer(
|
| + en, UMEASFMT_WIDTH_SHORT,
|
| + 23.3, *pound, *minute, "23.3 lb/min",
|
| + NumberFormat::kDecimalSeparatorField,
|
| + 2, 3);
|
| +
|
| + helperTestSimplePer(
|
| + en, UMEASFMT_WIDTH_SHORT,
|
| + 23.3, *pound, *minute, "23.3 lb/min",
|
| + NumberFormat::kIntegerField,
|
| + 0, 2);
|
| }
|
|
|
| void MeasureFormatTest::TestNumeratorPlurals() {
|
| @@ -927,13 +1207,20 @@ void MeasureFormatTest::TestNumeratorPlurals() {
|
| }
|
|
|
| helperTestSimplePer(
|
| - pl, UMEASFMT_WIDTH_WIDE, 1.0, *foot, *second, "1 stopa na sekund\\u0119");
|
| + pl,
|
| + UMEASFMT_WIDTH_WIDE,
|
| + 1.0, *foot, *second, "1 stopa na sekund\\u0119");
|
| helperTestSimplePer(
|
| - pl, UMEASFMT_WIDTH_WIDE, 2.0, *foot, *second, "2 stopy na sekund\\u0119");
|
| + pl,
|
| + UMEASFMT_WIDTH_WIDE,
|
| + 2.0, *foot, *second, "2 stopy na sekund\\u0119");
|
| helperTestSimplePer(
|
| - pl, UMEASFMT_WIDTH_WIDE, 5.0, *foot, *second, "5 st\\u00f3p na sekund\\u0119");
|
| + pl,
|
| + UMEASFMT_WIDTH_WIDE,
|
| + 5.0, *foot, *second, "5 st\\u00f3p na sekund\\u0119");
|
| helperTestSimplePer(
|
| - pl, UMEASFMT_WIDTH_WIDE, 1.5, *foot, *second, "1,5 stopy na sekund\\u0119");
|
| + pl, UMEASFMT_WIDTH_WIDE,
|
| + 1.5, *foot, *second, "1,5 stopy na sekund\\u0119");
|
| }
|
|
|
| void MeasureFormatTest::helperTestSimplePer(
|
| @@ -943,55 +1230,42 @@ void MeasureFormatTest::helperTestSimplePer(
|
| const MeasureUnit &unit,
|
| const MeasureUnit &perUnit,
|
| const char *expected) {
|
| - UErrorCode status = U_ZERO_ERROR;
|
| - FieldPosition pos(0);
|
| - MeasureFormat fmt(locale, width, status);
|
| - if (!assertSuccess("Error creating format object", status)) {
|
| - return;
|
| - }
|
| - Measure measure(value, (MeasureUnit *) unit.clone(), status);
|
| - if (!assertSuccess("Error creating measure object", status)) {
|
| - return;
|
| - }
|
| - UnicodeString buffer;
|
| - fmt.formatMeasuresPer(
|
| - &measure,
|
| - 1,
|
| + helperTestSimplePer(
|
| + locale,
|
| + width,
|
| + value,
|
| + unit,
|
| perUnit,
|
| - buffer,
|
| - pos,
|
| - status);
|
| - if (!assertSuccess("Error formatting measures with per", status)) {
|
| - return;
|
| - }
|
| - assertEquals(
|
| - "TestSimplePer",
|
| - UnicodeString(expected).unescape(),
|
| - buffer);
|
| + expected,
|
| + FieldPosition::DONT_CARE,
|
| + 0,
|
| + 0);
|
| }
|
|
|
| -void MeasureFormatTest::helperTestMultiplesWithPer(
|
| +void MeasureFormatTest::helperTestSimplePer(
|
| const Locale &locale,
|
| UMeasureFormatWidth width,
|
| + double value,
|
| + const MeasureUnit &unit,
|
| const MeasureUnit &perUnit,
|
| - const char *expected) {
|
| + const char *expected,
|
| + int32_t field,
|
| + int32_t expected_start,
|
| + int32_t expected_end) {
|
| UErrorCode status = U_ZERO_ERROR;
|
| - FieldPosition pos(0);
|
| + FieldPosition pos(field);
|
| MeasureFormat fmt(locale, width, status);
|
| if (!assertSuccess("Error creating format object", status)) {
|
| return;
|
| }
|
| - Measure measures[] = {
|
| - Measure(2, MeasureUnit::createMile(status), status),
|
| - Measure(1, MeasureUnit::createFoot(status), status),
|
| - Measure(2.3, MeasureUnit::createInch(status), status)};
|
| - if (!assertSuccess("Error creating measures", status)) {
|
| + Measure measure(value, (MeasureUnit *) unit.clone(), status);
|
| + if (!assertSuccess("Error creating measure object", status)) {
|
| return;
|
| }
|
| - UnicodeString buffer;
|
| - fmt.formatMeasuresPer(
|
| - measures,
|
| - UPRV_LENGTHOF(measures),
|
| + UnicodeString prefix("prefix: ");
|
| + UnicodeString buffer(prefix);
|
| + fmt.formatMeasurePerUnit(
|
| + measure,
|
| perUnit,
|
| buffer,
|
| pos,
|
| @@ -999,10 +1273,18 @@ void MeasureFormatTest::helperTestMultiplesWithPer(
|
| if (!assertSuccess("Error formatting measures with per", status)) {
|
| return;
|
| }
|
| + UnicodeString uexpected(expected);
|
| + uexpected = prefix + uexpected;
|
| assertEquals(
|
| - "TestMultiplesWithPer",
|
| - UnicodeString(expected).unescape(),
|
| + "TestSimplePer",
|
| + uexpected.unescape(),
|
| buffer);
|
| + if (field != FieldPosition::DONT_CARE) {
|
| + assertEquals(
|
| + "Start", expected_start, pos.getBeginIndex() - prefix.length());
|
| + assertEquals(
|
| + "End", expected_end, pos.getEndIndex() - prefix.length());
|
| + }
|
| }
|
|
|
| void MeasureFormatTest::TestMultiples() {
|
| @@ -1011,8 +1293,8 @@ void MeasureFormatTest::TestMultiples() {
|
| helperTestMultiples(en, UMEASFMT_WIDTH_WIDE, "2 miles, 1 foot, 2.3 inches");
|
| helperTestMultiples(en, UMEASFMT_WIDTH_SHORT, "2 mi, 1 ft, 2.3 in");
|
| helperTestMultiples(en, UMEASFMT_WIDTH_NARROW, "2mi 1\\u2032 2.3\\u2033");
|
| - helperTestMultiples(ru, UMEASFMT_WIDTH_WIDE, "2 \\u043C\\u0438\\u043B\\u0438, 1 \\u0444\\u0443\\u0442 \\u0438 2,3 \\u0434\\u044E\\u0439\\u043C\\u0430");
|
| - helperTestMultiples(ru, UMEASFMT_WIDTH_SHORT, "2 \\u043C\\u0438\\u043B\\u0438, 1 \\u0444\\u0443\\u0442, 2,3 \\u0434\\u044E\\u0439\\u043C.");
|
| + helperTestMultiples(ru, UMEASFMT_WIDTH_WIDE, "2 \\u043C\\u0438\\u043B\\u0438 1 \\u0444\\u0443\\u0442 \\u0438 2,3 \\u0434\\u044E\\u0439\\u043C\\u0430");
|
| + helperTestMultiples(ru, UMEASFMT_WIDTH_SHORT, "2 \\u043C\\u0438\\u043B\\u0438 1 \\u0444\\u0443\\u0442 \\u0438 2,3 \\u0434\\u044E\\u0439\\u043C.");
|
| helperTestMultiples(ru, UMEASFMT_WIDTH_NARROW, "2 \\u043C\\u0438\\u043B\\u044C 1 \\u0444\\u0443\\u0442 2,3 \\u0434\\u044E\\u0439\\u043C\\u0430");
|
| }
|
|
|
| @@ -1181,99 +1463,6 @@ void MeasureFormatTest::TestFieldPositionMultiple() {
|
| 0);
|
| }
|
|
|
| -void MeasureFormatTest::TestFieldPositionMultipleWithPer() {
|
| - UErrorCode status = U_ZERO_ERROR;
|
| - MeasureFormat fmt("en", UMEASFMT_WIDTH_SHORT, status);
|
| - if (!assertSuccess("Error creating format object", status)) {
|
| - return;
|
| - }
|
| - Measure first[] = {
|
| - Measure(354, MeasureUnit::createMeter(status), status),
|
| - Measure(23, MeasureUnit::createCentimeter(status), status)};
|
| - Measure second[] = {
|
| - Measure(354, MeasureUnit::createMeter(status), status),
|
| - Measure(23, MeasureUnit::createCentimeter(status), status),
|
| - Measure(5.4, MeasureUnit::createMillimeter(status), status)};
|
| - Measure third[] = {
|
| - Measure(3, MeasureUnit::createMeter(status), status),
|
| - Measure(23, MeasureUnit::createCentimeter(status), status),
|
| - Measure(5, MeasureUnit::createMillimeter(status), status)};
|
| - if (!assertSuccess("Error creating measure objects", status)) {
|
| - return;
|
| - }
|
| - UnicodeString prefix("123456: ");
|
| -
|
| - LocalPointer<MeasureUnit> secondUnit(MeasureUnit::createSecond(status));
|
| - LocalPointer<MeasureUnit> minuteUnit(MeasureUnit::createMinute(status));
|
| - if (!assertSuccess("Error creating format object", status)) {
|
| - return;
|
| - }
|
| -
|
| - // per unit test
|
| - verifyFieldPositionWithPer(
|
| - "Integer",
|
| - fmt,
|
| - prefix,
|
| - first,
|
| - UPRV_LENGTHOF(first),
|
| - *secondUnit,
|
| - NumberFormat::kIntegerField,
|
| - 8,
|
| - 11);
|
| - verifyFieldPositionWithPer(
|
| - "Decimal separator",
|
| - fmt,
|
| - prefix,
|
| - second,
|
| - UPRV_LENGTHOF(second),
|
| - *secondUnit,
|
| - NumberFormat::kDecimalSeparatorField,
|
| - 23,
|
| - 24);
|
| - verifyFieldPositionWithPer(
|
| - "no decimal separator",
|
| - fmt,
|
| - prefix,
|
| - third,
|
| - UPRV_LENGTHOF(third),
|
| - *secondUnit,
|
| - NumberFormat::kDecimalSeparatorField,
|
| - 0,
|
| - 0);
|
| -
|
| - // Fallback to compound per test
|
| - verifyFieldPositionWithPer(
|
| - "Integer",
|
| - fmt,
|
| - prefix,
|
| - first,
|
| - UPRV_LENGTHOF(first),
|
| - *minuteUnit,
|
| - NumberFormat::kIntegerField,
|
| - 8,
|
| - 11);
|
| - verifyFieldPositionWithPer(
|
| - "Decimal separator",
|
| - fmt,
|
| - prefix,
|
| - second,
|
| - UPRV_LENGTHOF(second),
|
| - *minuteUnit,
|
| - NumberFormat::kDecimalSeparatorField,
|
| - 23,
|
| - 24);
|
| - verifyFieldPositionWithPer(
|
| - "no decimal separator",
|
| - fmt,
|
| - prefix,
|
| - third,
|
| - UPRV_LENGTHOF(third),
|
| - *minuteUnit,
|
| - NumberFormat::kDecimalSeparatorField,
|
| - 0,
|
| - 0);
|
| -}
|
| -
|
| void MeasureFormatTest::TestBadArg() {
|
| UErrorCode status = U_ZERO_ERROR;
|
| MeasureFormat fmt("en", UMEASFMT_WIDTH_SHORT, status);
|
| @@ -1323,8 +1512,8 @@ void MeasureFormatTest::TestGroupingSeparator() {
|
| return;
|
| }
|
| Measure ms[] = {
|
| - Measure(INT32_MAX, MeasureUnit::createYear(status), status),
|
| - Measure(INT32_MIN, MeasureUnit::createMonth(status), status),
|
| + Measure((int32_t)INT32_MAX, MeasureUnit::createYear(status), status),
|
| + Measure((int32_t)INT32_MIN, MeasureUnit::createMonth(status), status),
|
| Measure(-987, MeasureUnit::createDay(status), status),
|
| Measure(1362, MeasureUnit::createHour(status), status),
|
| Measure(987, MeasureUnit::createMinute(status), status)};
|
| @@ -1336,7 +1525,7 @@ void MeasureFormatTest::TestGroupingSeparator() {
|
| }
|
| assertEquals(
|
| "grouping separator",
|
| - "2,147,483,647 yrs, -2,147,483,648 mths, -987 days, 1,362 hrs, 987 mins",
|
| + "2,147,483,647 yrs, -2,147,483,648 mths, -987 days, 1,362 hr, 987 min",
|
| appendTo);
|
| assertEquals("begin index", 9, pos.getBeginIndex());
|
| assertEquals("end index", 10, pos.getEndIndex());
|
| @@ -1379,44 +1568,36 @@ void MeasureFormatTest::TestDoubleZero() {
|
| appendTo);
|
| }
|
|
|
| -void MeasureFormatTest::verifyFieldPosition(
|
| - const char *description,
|
| - const MeasureFormat &fmt,
|
| - const UnicodeString &prefix,
|
| - const Measure *measures,
|
| - int32_t measureCount,
|
| - NumberFormat::EAlignmentFields field,
|
| - int32_t start,
|
| - int32_t end) {
|
| - // 8 char lead
|
| - UnicodeString result(prefix);
|
| - FieldPosition pos(field);
|
| +void MeasureFormatTest::TestUnitPerUnitResolution() {
|
| UErrorCode status = U_ZERO_ERROR;
|
| - CharString ch;
|
| - const char *descPrefix = ch.append(description, status)
|
| - .append(": ", status).data();
|
| - CharString beginIndex;
|
| - beginIndex.append(descPrefix, status).append("beginIndex", status);
|
| - CharString endIndex;
|
| - endIndex.append(descPrefix, status).append("endIndex", status);
|
| - fmt.formatMeasures(measures, measureCount, result, pos, status);
|
| - if (!assertSuccess("Error formatting", status)) {
|
| + Locale en("en");
|
| + MeasureFormat fmt("en", UMEASFMT_WIDTH_SHORT, status);
|
| + Measure measure(50, MeasureUnit::createPound(status), status);
|
| + LocalPointer<MeasureUnit> sqInch(MeasureUnit::createSquareInch(status));
|
| + if (!assertSuccess("Create of format unit and per unit", status)) {
|
| return;
|
| }
|
| - assertEquals(beginIndex.data(), start, pos.getBeginIndex());
|
| - assertEquals(endIndex.data(), end, pos.getEndIndex());
|
| + FieldPosition pos(0);
|
| + UnicodeString actual;
|
| + fmt.formatMeasurePerUnit(
|
| + measure,
|
| + *sqInch,
|
| + actual,
|
| + pos,
|
| + status);
|
| + assertEquals("", "50 psi", actual);
|
| }
|
|
|
| -void MeasureFormatTest::verifyFieldPositionWithPer(
|
| +void MeasureFormatTest::verifyFieldPosition(
|
| const char *description,
|
| const MeasureFormat &fmt,
|
| const UnicodeString &prefix,
|
| const Measure *measures,
|
| int32_t measureCount,
|
| - const MeasureUnit &perUnit,
|
| NumberFormat::EAlignmentFields field,
|
| int32_t start,
|
| int32_t end) {
|
| + // 8 char lead
|
| UnicodeString result(prefix);
|
| FieldPosition pos(field);
|
| UErrorCode status = U_ZERO_ERROR;
|
| @@ -1427,13 +1608,7 @@ void MeasureFormatTest::verifyFieldPositionWithPer(
|
| beginIndex.append(descPrefix, status).append("beginIndex", status);
|
| CharString endIndex;
|
| endIndex.append(descPrefix, status).append("endIndex", status);
|
| - fmt.formatMeasuresPer(
|
| - measures,
|
| - measureCount,
|
| - perUnit,
|
| - result,
|
| - pos,
|
| - status);
|
| + fmt.formatMeasures(measures, measureCount, result, pos, status);
|
| if (!assertSuccess("Error formatting", status)) {
|
| return;
|
| }
|
|
|