X-Git-Url: https://git.saurik.com/apple/icu.git/blobdiff_plain/57a6839dcb3bba09e8228b822b290604668416fe..1a147d096ae81f4c8262f7bfc56bd19fc2dee932:/icuSources/test/intltest/measfmttest.cpp diff --git a/icuSources/test/intltest/measfmttest.cpp b/icuSources/test/intltest/measfmttest.cpp index afdb3e32..069e5500 100644 --- a/icuSources/test/intltest/measfmttest.cpp +++ b/icuSources/test/intltest/measfmttest.cpp @@ -1,6 +1,8 @@ +// © 2016 and later: Unicode, Inc. and others. +// License & terms of use: http://www.unicode.org/copyright.html /* ******************************************************************************* -* Copyright (C) 2014, International Business Machines Corporation and * +* Copyright (C) 2014-2016, International Business Machines Corporation and * * others. All Rights Reserved. * ******************************************************************************* * @@ -19,10 +21,13 @@ #include "unicode/measfmt.h" #include "unicode/measure.h" #include "unicode/measunit.h" +#include "unicode/strenum.h" #include "unicode/tmunit.h" +#include "unicode/plurrule.h" +#include "unicode/ustring.h" #include "charstr.h" - -#define LENGTHOF(array) (int32_t)(sizeof(array) / sizeof((array)[0])) +#include "cstr.h" +#include "unicode/reldatefmt.h" struct ExpectedResult { const Measure *measures; @@ -38,6 +43,15 @@ public: void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par=0); private: void TestBasic(); + void TestCompatible53(); + void TestCompatible54(); + void TestCompatible55(); + void TestCompatible56(); + void TestCompatible57(); + void TestCompatible58(); + void TestCompatible59(); + void TestCompatible63(); + void TestCompatible64(); void TestGetAvailable(); void TestExamplesInDocs(); void TestFormatPeriodEn(); @@ -45,14 +59,22 @@ private: void TestGreek(); void TestFormatSingleArg(); void TestFormatMeasuresZeroArg(); + void TestSimplePer(); + void TestNumeratorPlurals(); void TestMultiples(); + void TestManyLocaleDurations(); void TestGram(); void TestCurrencies(); + void TestDisplayNames(); void TestFieldPosition(); void TestFieldPositionMultiple(); void TestBadArg(); void TestEquality(); + void TestGroupingSeparator(); void TestDoubleZero(); + void TestUnitPerUnitResolution(); + void TestIndividualPluralFallback(); + void Test20332_PersonUnits(); void verifyFormat( const char *description, const MeasureFormat &fmt, @@ -71,10 +93,38 @@ private: const MeasureFormat &fmt, const ExpectedResult *expectedResults, int32_t count); + void helperTestSimplePer( + const Locale &locale, + UMeasureFormatWidth width, + double value, + const MeasureUnit &unit, + const MeasureUnit &perUnit, + const char *expected); + void helperTestSimplePer( + const Locale &locale, + UMeasureFormatWidth width, + double value, + const MeasureUnit &unit, + const MeasureUnit &perUnit, + const char *expected, + int32_t field, + int32_t expected_start, + int32_t expected_end); void helperTestMultiples( const Locale &locale, UMeasureFormatWidth width, const char *expected); + void helperTestManyLocaleDurations( + const char *localeID, + UMeasureFormatWidth width, + const Measure *measures, + int32_t measureCount, + const char *expected); + void helperTestDisplayName( + const MeasureUnit *unit, + const char *localeID, + UMeasureFormatWidth width, + const char *expected); void verifyFieldPosition( const char *description, const MeasureFormat &fmt, @@ -93,6 +143,15 @@ void MeasureFormatTest::runIndexedTest( } TESTCASE_AUTO_BEGIN; TESTCASE_AUTO(TestBasic); + TESTCASE_AUTO(TestCompatible53); + TESTCASE_AUTO(TestCompatible54); + TESTCASE_AUTO(TestCompatible55); + TESTCASE_AUTO(TestCompatible56); + TESTCASE_AUTO(TestCompatible57); + TESTCASE_AUTO(TestCompatible58); + TESTCASE_AUTO(TestCompatible59); + TESTCASE_AUTO(TestCompatible63); + TESTCASE_AUTO(TestCompatible64); TESTCASE_AUTO(TestGetAvailable); TESTCASE_AUTO(TestExamplesInDocs); TESTCASE_AUTO(TestFormatPeriodEn); @@ -100,17 +159,1369 @@ void MeasureFormatTest::runIndexedTest( TESTCASE_AUTO(TestGreek); TESTCASE_AUTO(TestFormatSingleArg); TESTCASE_AUTO(TestFormatMeasuresZeroArg); + TESTCASE_AUTO(TestSimplePer); + TESTCASE_AUTO(TestNumeratorPlurals); TESTCASE_AUTO(TestMultiples); + TESTCASE_AUTO(TestManyLocaleDurations); TESTCASE_AUTO(TestGram); TESTCASE_AUTO(TestCurrencies); + TESTCASE_AUTO(TestDisplayNames); TESTCASE_AUTO(TestFieldPosition); TESTCASE_AUTO(TestFieldPositionMultiple); TESTCASE_AUTO(TestBadArg); TESTCASE_AUTO(TestEquality); + TESTCASE_AUTO(TestGroupingSeparator); TESTCASE_AUTO(TestDoubleZero); + TESTCASE_AUTO(TestUnitPerUnitResolution); + TESTCASE_AUTO(TestIndividualPluralFallback); + TESTCASE_AUTO(Test20332_PersonUnits); TESTCASE_AUTO_END; } +void MeasureFormatTest::TestCompatible53() { + UErrorCode status = U_ZERO_ERROR; + LocalPointer measureUnit; + measureUnit.adoptInstead(MeasureUnit::createGForce(status)); + measureUnit.adoptInstead(MeasureUnit::createArcMinute(status)); + measureUnit.adoptInstead(MeasureUnit::createArcSecond(status)); + measureUnit.adoptInstead(MeasureUnit::createDegree(status)); + measureUnit.adoptInstead(MeasureUnit::createAcre(status)); + measureUnit.adoptInstead(MeasureUnit::createHectare(status)); + measureUnit.adoptInstead(MeasureUnit::createSquareFoot(status)); + measureUnit.adoptInstead(MeasureUnit::createSquareKilometer(status)); + measureUnit.adoptInstead(MeasureUnit::createSquareMeter(status)); + measureUnit.adoptInstead(MeasureUnit::createSquareMile(status)); + measureUnit.adoptInstead(MeasureUnit::createDay(status)); + measureUnit.adoptInstead(MeasureUnit::createHour(status)); + measureUnit.adoptInstead(MeasureUnit::createMillisecond(status)); + measureUnit.adoptInstead(MeasureUnit::createMinute(status)); + measureUnit.adoptInstead(MeasureUnit::createMonth(status)); + measureUnit.adoptInstead(MeasureUnit::createSecond(status)); + measureUnit.adoptInstead(MeasureUnit::createWeek(status)); + measureUnit.adoptInstead(MeasureUnit::createYear(status)); + measureUnit.adoptInstead(MeasureUnit::createCentimeter(status)); + measureUnit.adoptInstead(MeasureUnit::createFoot(status)); + measureUnit.adoptInstead(MeasureUnit::createInch(status)); + measureUnit.adoptInstead(MeasureUnit::createKilometer(status)); + measureUnit.adoptInstead(MeasureUnit::createLightYear(status)); + measureUnit.adoptInstead(MeasureUnit::createMeter(status)); + measureUnit.adoptInstead(MeasureUnit::createMile(status)); + measureUnit.adoptInstead(MeasureUnit::createMillimeter(status)); + measureUnit.adoptInstead(MeasureUnit::createPicometer(status)); + measureUnit.adoptInstead(MeasureUnit::createYard(status)); + measureUnit.adoptInstead(MeasureUnit::createGram(status)); + measureUnit.adoptInstead(MeasureUnit::createKilogram(status)); + measureUnit.adoptInstead(MeasureUnit::createOunce(status)); + measureUnit.adoptInstead(MeasureUnit::createPound(status)); + measureUnit.adoptInstead(MeasureUnit::createHorsepower(status)); + measureUnit.adoptInstead(MeasureUnit::createKilowatt(status)); + measureUnit.adoptInstead(MeasureUnit::createWatt(status)); + measureUnit.adoptInstead(MeasureUnit::createHectopascal(status)); + measureUnit.adoptInstead(MeasureUnit::createInchHg(status)); + measureUnit.adoptInstead(MeasureUnit::createMillibar(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::createCubicKilometer(status)); + measureUnit.adoptInstead(MeasureUnit::createCubicMile(status)); + measureUnit.adoptInstead(MeasureUnit::createLiter(status)); + assertSuccess("", status); +} + +void MeasureFormatTest::TestCompatible54() { + UErrorCode status = U_ZERO_ERROR; + LocalPointer 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::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::TestCompatible55() { + UErrorCode status = U_ZERO_ERROR; + LocalPointer 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() { + UErrorCode status = U_ZERO_ERROR; + LocalPointer 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::TestCompatible57() { + UErrorCode status = U_ZERO_ERROR; + LocalPointer 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::createKarat(status)); + measureUnit.adoptInstead(MeasureUnit::createMilligramPerDeciliter(status)); + measureUnit.adoptInstead(MeasureUnit::createMillimolePerLiter(status)); + measureUnit.adoptInstead(MeasureUnit::createPartPerMillion(status)); + measureUnit.adoptInstead(MeasureUnit::createLiterPer100Kilometers(status)); + measureUnit.adoptInstead(MeasureUnit::createLiterPerKilometer(status)); + measureUnit.adoptInstead(MeasureUnit::createMilePerGallon(status)); + measureUnit.adoptInstead(MeasureUnit::createMilePerGallonImperial(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::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::createGallonImperial(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::TestCompatible58() { + UErrorCode status = U_ZERO_ERROR; + LocalPointer 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::createKarat(status)); + measureUnit.adoptInstead(MeasureUnit::createMilligramPerDeciliter(status)); + measureUnit.adoptInstead(MeasureUnit::createMillimolePerLiter(status)); + measureUnit.adoptInstead(MeasureUnit::createPartPerMillion(status)); + measureUnit.adoptInstead(MeasureUnit::createLiterPer100Kilometers(status)); + measureUnit.adoptInstead(MeasureUnit::createLiterPerKilometer(status)); + measureUnit.adoptInstead(MeasureUnit::createMilePerGallon(status)); + measureUnit.adoptInstead(MeasureUnit::createMilePerGallonImperial(status)); + // measureUnit.adoptInstead(MeasureUnit::createEast(status)); + // measureUnit.adoptInstead(MeasureUnit::createNorth(status)); + // measureUnit.adoptInstead(MeasureUnit::createSouth(status)); + // measureUnit.adoptInstead(MeasureUnit::createWest(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::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::createGallonImperial(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::TestCompatible59() { + UErrorCode status = U_ZERO_ERROR; + LocalPointer 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::createKarat(status)); + measureUnit.adoptInstead(MeasureUnit::createMilligramPerDeciliter(status)); + measureUnit.adoptInstead(MeasureUnit::createMillimolePerLiter(status)); + measureUnit.adoptInstead(MeasureUnit::createPartPerMillion(status)); + measureUnit.adoptInstead(MeasureUnit::createLiterPer100Kilometers(status)); + measureUnit.adoptInstead(MeasureUnit::createLiterPerKilometer(status)); + measureUnit.adoptInstead(MeasureUnit::createMilePerGallon(status)); + measureUnit.adoptInstead(MeasureUnit::createMilePerGallonImperial(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::createPoint(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::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::createGallonImperial(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); +} + +// Note that TestCompatible60(), TestCompatible61(), TestCompatible62() +// would be the same as TestCompatible59(), no need to add them. + +void MeasureFormatTest::TestCompatible63() { + UErrorCode status = U_ZERO_ERROR; + LocalPointer 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::createKarat(status)); + measureUnit.adoptInstead(MeasureUnit::createMilligramPerDeciliter(status)); + measureUnit.adoptInstead(MeasureUnit::createMillimolePerLiter(status)); + measureUnit.adoptInstead(MeasureUnit::createPartPerMillion(status)); + measureUnit.adoptInstead(MeasureUnit::createPercent(status)); + measureUnit.adoptInstead(MeasureUnit::createPermille(status)); + measureUnit.adoptInstead(MeasureUnit::createLiterPer100Kilometers(status)); + measureUnit.adoptInstead(MeasureUnit::createLiterPerKilometer(status)); + measureUnit.adoptInstead(MeasureUnit::createMilePerGallon(status)); + measureUnit.adoptInstead(MeasureUnit::createMilePerGallonImperial(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::createPetabyte(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::createPoint(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::createAtmosphere(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::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::createGallonImperial(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::TestCompatible64() { + UErrorCode status = U_ZERO_ERROR; + LocalPointer measureUnit; + MeasureUnit measureUnitValue; + measureUnit.adoptInstead(MeasureUnit::createGForce(status)); + measureUnitValue = MeasureUnit::getGForce(); + measureUnit.adoptInstead(MeasureUnit::createMeterPerSecondSquared(status)); + measureUnitValue = MeasureUnit::getMeterPerSecondSquared(); + measureUnit.adoptInstead(MeasureUnit::createArcMinute(status)); + measureUnitValue = MeasureUnit::getArcMinute(); + measureUnit.adoptInstead(MeasureUnit::createArcSecond(status)); + measureUnitValue = MeasureUnit::getArcSecond(); + measureUnit.adoptInstead(MeasureUnit::createDegree(status)); + measureUnitValue = MeasureUnit::getDegree(); + measureUnit.adoptInstead(MeasureUnit::createRadian(status)); + measureUnitValue = MeasureUnit::getRadian(); + measureUnit.adoptInstead(MeasureUnit::createRevolutionAngle(status)); + measureUnitValue = MeasureUnit::getRevolutionAngle(); + measureUnit.adoptInstead(MeasureUnit::createAcre(status)); + measureUnitValue = MeasureUnit::getAcre(); + measureUnit.adoptInstead(MeasureUnit::createDunam(status)); + measureUnitValue = MeasureUnit::getDunam(); + measureUnit.adoptInstead(MeasureUnit::createHectare(status)); + measureUnitValue = MeasureUnit::getHectare(); + measureUnit.adoptInstead(MeasureUnit::createSquareCentimeter(status)); + measureUnitValue = MeasureUnit::getSquareCentimeter(); + measureUnit.adoptInstead(MeasureUnit::createSquareFoot(status)); + measureUnitValue = MeasureUnit::getSquareFoot(); + measureUnit.adoptInstead(MeasureUnit::createSquareInch(status)); + measureUnitValue = MeasureUnit::getSquareInch(); + measureUnit.adoptInstead(MeasureUnit::createSquareKilometer(status)); + measureUnitValue = MeasureUnit::getSquareKilometer(); + measureUnit.adoptInstead(MeasureUnit::createSquareMeter(status)); + measureUnitValue = MeasureUnit::getSquareMeter(); + measureUnit.adoptInstead(MeasureUnit::createSquareMile(status)); + measureUnitValue = MeasureUnit::getSquareMile(); + measureUnit.adoptInstead(MeasureUnit::createSquareYard(status)); + measureUnitValue = MeasureUnit::getSquareYard(); + measureUnit.adoptInstead(MeasureUnit::createKarat(status)); + measureUnitValue = MeasureUnit::getKarat(); + measureUnit.adoptInstead(MeasureUnit::createMilligramPerDeciliter(status)); + measureUnitValue = MeasureUnit::getMilligramPerDeciliter(); + measureUnit.adoptInstead(MeasureUnit::createMillimolePerLiter(status)); + measureUnitValue = MeasureUnit::getMillimolePerLiter(); + measureUnit.adoptInstead(MeasureUnit::createMole(status)); + measureUnitValue = MeasureUnit::getMole(); + measureUnit.adoptInstead(MeasureUnit::createPartPerMillion(status)); + measureUnitValue = MeasureUnit::getPartPerMillion(); + measureUnit.adoptInstead(MeasureUnit::createPercent(status)); + measureUnitValue = MeasureUnit::getPercent(); + measureUnit.adoptInstead(MeasureUnit::createPermille(status)); + measureUnitValue = MeasureUnit::getPermille(); + measureUnit.adoptInstead(MeasureUnit::createPermyriad(status)); + measureUnitValue = MeasureUnit::getPermyriad(); + measureUnit.adoptInstead(MeasureUnit::createLiterPer100Kilometers(status)); + measureUnitValue = MeasureUnit::getLiterPer100Kilometers(); + measureUnit.adoptInstead(MeasureUnit::createLiterPerKilometer(status)); + measureUnitValue = MeasureUnit::getLiterPerKilometer(); + measureUnit.adoptInstead(MeasureUnit::createMilePerGallon(status)); + measureUnitValue = MeasureUnit::getMilePerGallon(); + measureUnit.adoptInstead(MeasureUnit::createMilePerGallonImperial(status)); + measureUnitValue = MeasureUnit::getMilePerGallonImperial(); + measureUnit.adoptInstead(MeasureUnit::createBit(status)); + measureUnitValue = MeasureUnit::getBit(); + measureUnit.adoptInstead(MeasureUnit::createByte(status)); + measureUnitValue = MeasureUnit::getByte(); + measureUnit.adoptInstead(MeasureUnit::createGigabit(status)); + measureUnitValue = MeasureUnit::getGigabit(); + measureUnit.adoptInstead(MeasureUnit::createGigabyte(status)); + measureUnitValue = MeasureUnit::getGigabyte(); + measureUnit.adoptInstead(MeasureUnit::createKilobit(status)); + measureUnitValue = MeasureUnit::getKilobit(); + measureUnit.adoptInstead(MeasureUnit::createKilobyte(status)); + measureUnitValue = MeasureUnit::getKilobyte(); + measureUnit.adoptInstead(MeasureUnit::createMegabit(status)); + measureUnitValue = MeasureUnit::getMegabit(); + measureUnit.adoptInstead(MeasureUnit::createMegabyte(status)); + measureUnitValue = MeasureUnit::getMegabyte(); + measureUnit.adoptInstead(MeasureUnit::createPetabyte(status)); + measureUnitValue = MeasureUnit::getPetabyte(); + measureUnit.adoptInstead(MeasureUnit::createTerabit(status)); + measureUnitValue = MeasureUnit::getTerabit(); + measureUnit.adoptInstead(MeasureUnit::createTerabyte(status)); + measureUnitValue = MeasureUnit::getTerabyte(); + measureUnit.adoptInstead(MeasureUnit::createCentury(status)); + measureUnitValue = MeasureUnit::getCentury(); + measureUnit.adoptInstead(MeasureUnit::createDay(status)); + measureUnitValue = MeasureUnit::getDay(); + measureUnit.adoptInstead(MeasureUnit::createDayPerson(status)); + measureUnitValue = MeasureUnit::getDayPerson(); + measureUnit.adoptInstead(MeasureUnit::createHour(status)); + measureUnitValue = MeasureUnit::getHour(); + measureUnit.adoptInstead(MeasureUnit::createMicrosecond(status)); + measureUnitValue = MeasureUnit::getMicrosecond(); + measureUnit.adoptInstead(MeasureUnit::createMillisecond(status)); + measureUnitValue = MeasureUnit::getMillisecond(); + measureUnit.adoptInstead(MeasureUnit::createMinute(status)); + measureUnitValue = MeasureUnit::getMinute(); + measureUnit.adoptInstead(MeasureUnit::createMonth(status)); + measureUnitValue = MeasureUnit::getMonth(); + measureUnit.adoptInstead(MeasureUnit::createMonthPerson(status)); + measureUnitValue = MeasureUnit::getMonthPerson(); + measureUnit.adoptInstead(MeasureUnit::createNanosecond(status)); + measureUnitValue = MeasureUnit::getNanosecond(); + measureUnit.adoptInstead(MeasureUnit::createSecond(status)); + measureUnitValue = MeasureUnit::getSecond(); + measureUnit.adoptInstead(MeasureUnit::createWeek(status)); + measureUnitValue = MeasureUnit::getWeek(); + measureUnit.adoptInstead(MeasureUnit::createWeekPerson(status)); + measureUnitValue = MeasureUnit::getWeekPerson(); + measureUnit.adoptInstead(MeasureUnit::createYear(status)); + measureUnitValue = MeasureUnit::getYear(); + measureUnit.adoptInstead(MeasureUnit::createYearPerson(status)); + measureUnitValue = MeasureUnit::getYearPerson(); + measureUnit.adoptInstead(MeasureUnit::createAmpere(status)); + measureUnitValue = MeasureUnit::getAmpere(); + measureUnit.adoptInstead(MeasureUnit::createMilliampere(status)); + measureUnitValue = MeasureUnit::getMilliampere(); + measureUnit.adoptInstead(MeasureUnit::createOhm(status)); + measureUnitValue = MeasureUnit::getOhm(); + measureUnit.adoptInstead(MeasureUnit::createVolt(status)); + measureUnitValue = MeasureUnit::getVolt(); + measureUnit.adoptInstead(MeasureUnit::createBritishThermalUnit(status)); + measureUnitValue = MeasureUnit::getBritishThermalUnit(); + measureUnit.adoptInstead(MeasureUnit::createCalorie(status)); + measureUnitValue = MeasureUnit::getCalorie(); + measureUnit.adoptInstead(MeasureUnit::createElectronvolt(status)); + measureUnitValue = MeasureUnit::getElectronvolt(); + measureUnit.adoptInstead(MeasureUnit::createFoodcalorie(status)); + measureUnitValue = MeasureUnit::getFoodcalorie(); + measureUnit.adoptInstead(MeasureUnit::createJoule(status)); + measureUnitValue = MeasureUnit::getJoule(); + measureUnit.adoptInstead(MeasureUnit::createKilocalorie(status)); + measureUnitValue = MeasureUnit::getKilocalorie(); + measureUnit.adoptInstead(MeasureUnit::createKilojoule(status)); + measureUnitValue = MeasureUnit::getKilojoule(); + measureUnit.adoptInstead(MeasureUnit::createKilowattHour(status)); + measureUnitValue = MeasureUnit::getKilowattHour(); + measureUnit.adoptInstead(MeasureUnit::createNewton(status)); + measureUnitValue = MeasureUnit::getNewton(); + measureUnit.adoptInstead(MeasureUnit::createPoundForce(status)); + measureUnitValue = MeasureUnit::getPoundForce(); + measureUnit.adoptInstead(MeasureUnit::createGigahertz(status)); + measureUnitValue = MeasureUnit::getGigahertz(); + measureUnit.adoptInstead(MeasureUnit::createHertz(status)); + measureUnitValue = MeasureUnit::getHertz(); + measureUnit.adoptInstead(MeasureUnit::createKilohertz(status)); + measureUnitValue = MeasureUnit::getKilohertz(); + measureUnit.adoptInstead(MeasureUnit::createMegahertz(status)); + measureUnitValue = MeasureUnit::getMegahertz(); + measureUnit.adoptInstead(MeasureUnit::createAstronomicalUnit(status)); + measureUnitValue = MeasureUnit::getAstronomicalUnit(); + measureUnit.adoptInstead(MeasureUnit::createCentimeter(status)); + measureUnitValue = MeasureUnit::getCentimeter(); + measureUnit.adoptInstead(MeasureUnit::createDecimeter(status)); + measureUnitValue = MeasureUnit::getDecimeter(); + measureUnit.adoptInstead(MeasureUnit::createFathom(status)); + measureUnitValue = MeasureUnit::getFathom(); + measureUnit.adoptInstead(MeasureUnit::createFoot(status)); + measureUnitValue = MeasureUnit::getFoot(); + measureUnit.adoptInstead(MeasureUnit::createFurlong(status)); + measureUnitValue = MeasureUnit::getFurlong(); + measureUnit.adoptInstead(MeasureUnit::createInch(status)); + measureUnitValue = MeasureUnit::getInch(); + measureUnit.adoptInstead(MeasureUnit::createKilometer(status)); + measureUnitValue = MeasureUnit::getKilometer(); + measureUnit.adoptInstead(MeasureUnit::createLightYear(status)); + measureUnitValue = MeasureUnit::getLightYear(); + measureUnit.adoptInstead(MeasureUnit::createMeter(status)); + measureUnitValue = MeasureUnit::getMeter(); + measureUnit.adoptInstead(MeasureUnit::createMicrometer(status)); + measureUnitValue = MeasureUnit::getMicrometer(); + measureUnit.adoptInstead(MeasureUnit::createMile(status)); + measureUnitValue = MeasureUnit::getMile(); + measureUnit.adoptInstead(MeasureUnit::createMileScandinavian(status)); + measureUnitValue = MeasureUnit::getMileScandinavian(); + measureUnit.adoptInstead(MeasureUnit::createMillimeter(status)); + measureUnitValue = MeasureUnit::getMillimeter(); + measureUnit.adoptInstead(MeasureUnit::createNanometer(status)); + measureUnitValue = MeasureUnit::getNanometer(); + measureUnit.adoptInstead(MeasureUnit::createNauticalMile(status)); + measureUnitValue = MeasureUnit::getNauticalMile(); + measureUnit.adoptInstead(MeasureUnit::createParsec(status)); + measureUnitValue = MeasureUnit::getParsec(); + measureUnit.adoptInstead(MeasureUnit::createPicometer(status)); + measureUnitValue = MeasureUnit::getPicometer(); + measureUnit.adoptInstead(MeasureUnit::createPoint(status)); + measureUnitValue = MeasureUnit::getPoint(); + measureUnit.adoptInstead(MeasureUnit::createSolarRadius(status)); + measureUnitValue = MeasureUnit::getSolarRadius(); + measureUnit.adoptInstead(MeasureUnit::createYard(status)); + measureUnitValue = MeasureUnit::getYard(); + measureUnit.adoptInstead(MeasureUnit::createLux(status)); + measureUnitValue = MeasureUnit::getLux(); + measureUnit.adoptInstead(MeasureUnit::createSolarLuminosity(status)); + measureUnitValue = MeasureUnit::getSolarLuminosity(); + measureUnit.adoptInstead(MeasureUnit::createCarat(status)); + measureUnitValue = MeasureUnit::getCarat(); + measureUnit.adoptInstead(MeasureUnit::createDalton(status)); + measureUnitValue = MeasureUnit::getDalton(); + measureUnit.adoptInstead(MeasureUnit::createEarthMass(status)); + measureUnitValue = MeasureUnit::getEarthMass(); + measureUnit.adoptInstead(MeasureUnit::createGram(status)); + measureUnitValue = MeasureUnit::getGram(); + measureUnit.adoptInstead(MeasureUnit::createKilogram(status)); + measureUnitValue = MeasureUnit::getKilogram(); + measureUnit.adoptInstead(MeasureUnit::createMetricTon(status)); + measureUnitValue = MeasureUnit::getMetricTon(); + measureUnit.adoptInstead(MeasureUnit::createMicrogram(status)); + measureUnitValue = MeasureUnit::getMicrogram(); + measureUnit.adoptInstead(MeasureUnit::createMilligram(status)); + measureUnitValue = MeasureUnit::getMilligram(); + measureUnit.adoptInstead(MeasureUnit::createOunce(status)); + measureUnitValue = MeasureUnit::getOunce(); + measureUnit.adoptInstead(MeasureUnit::createOunceTroy(status)); + measureUnitValue = MeasureUnit::getOunceTroy(); + measureUnit.adoptInstead(MeasureUnit::createPound(status)); + measureUnitValue = MeasureUnit::getPound(); + measureUnit.adoptInstead(MeasureUnit::createSolarMass(status)); + measureUnitValue = MeasureUnit::getSolarMass(); + measureUnit.adoptInstead(MeasureUnit::createStone(status)); + measureUnitValue = MeasureUnit::getStone(); + measureUnit.adoptInstead(MeasureUnit::createTon(status)); + measureUnitValue = MeasureUnit::getTon(); + measureUnit.adoptInstead(MeasureUnit::createGigawatt(status)); + measureUnitValue = MeasureUnit::getGigawatt(); + measureUnit.adoptInstead(MeasureUnit::createHorsepower(status)); + measureUnitValue = MeasureUnit::getHorsepower(); + measureUnit.adoptInstead(MeasureUnit::createKilowatt(status)); + measureUnitValue = MeasureUnit::getKilowatt(); + measureUnit.adoptInstead(MeasureUnit::createMegawatt(status)); + measureUnitValue = MeasureUnit::getMegawatt(); + measureUnit.adoptInstead(MeasureUnit::createMilliwatt(status)); + measureUnitValue = MeasureUnit::getMilliwatt(); + measureUnit.adoptInstead(MeasureUnit::createWatt(status)); + measureUnitValue = MeasureUnit::getWatt(); + measureUnit.adoptInstead(MeasureUnit::createAtmosphere(status)); + measureUnitValue = MeasureUnit::getAtmosphere(); + measureUnit.adoptInstead(MeasureUnit::createHectopascal(status)); + measureUnitValue = MeasureUnit::getHectopascal(); + measureUnit.adoptInstead(MeasureUnit::createInchHg(status)); + measureUnitValue = MeasureUnit::getInchHg(); + measureUnit.adoptInstead(MeasureUnit::createKilopascal(status)); + measureUnitValue = MeasureUnit::getKilopascal(); + measureUnit.adoptInstead(MeasureUnit::createMegapascal(status)); + measureUnitValue = MeasureUnit::getMegapascal(); + measureUnit.adoptInstead(MeasureUnit::createMillibar(status)); + measureUnitValue = MeasureUnit::getMillibar(); + measureUnit.adoptInstead(MeasureUnit::createMillimeterOfMercury(status)); + measureUnitValue = MeasureUnit::getMillimeterOfMercury(); + measureUnit.adoptInstead(MeasureUnit::createPoundPerSquareInch(status)); + measureUnitValue = MeasureUnit::getPoundPerSquareInch(); + measureUnit.adoptInstead(MeasureUnit::createKilometerPerHour(status)); + measureUnitValue = MeasureUnit::getKilometerPerHour(); + measureUnit.adoptInstead(MeasureUnit::createKnot(status)); + measureUnitValue = MeasureUnit::getKnot(); + measureUnit.adoptInstead(MeasureUnit::createMeterPerSecond(status)); + measureUnitValue = MeasureUnit::getMeterPerSecond(); + measureUnit.adoptInstead(MeasureUnit::createMilePerHour(status)); + measureUnitValue = MeasureUnit::getMilePerHour(); + measureUnit.adoptInstead(MeasureUnit::createCelsius(status)); + measureUnitValue = MeasureUnit::getCelsius(); + measureUnit.adoptInstead(MeasureUnit::createFahrenheit(status)); + measureUnitValue = MeasureUnit::getFahrenheit(); + measureUnit.adoptInstead(MeasureUnit::createGenericTemperature(status)); + measureUnitValue = MeasureUnit::getGenericTemperature(); + measureUnit.adoptInstead(MeasureUnit::createKelvin(status)); + measureUnitValue = MeasureUnit::getKelvin(); + measureUnit.adoptInstead(MeasureUnit::createNewtonMeter(status)); + measureUnitValue = MeasureUnit::getNewtonMeter(); + measureUnit.adoptInstead(MeasureUnit::createPoundFoot(status)); + measureUnitValue = MeasureUnit::getPoundFoot(); + measureUnit.adoptInstead(MeasureUnit::createAcreFoot(status)); + measureUnitValue = MeasureUnit::getAcreFoot(); + measureUnit.adoptInstead(MeasureUnit::createBarrel(status)); + measureUnitValue = MeasureUnit::getBarrel(); + measureUnit.adoptInstead(MeasureUnit::createBushel(status)); + measureUnitValue = MeasureUnit::getBushel(); + measureUnit.adoptInstead(MeasureUnit::createCentiliter(status)); + measureUnitValue = MeasureUnit::getCentiliter(); + measureUnit.adoptInstead(MeasureUnit::createCubicCentimeter(status)); + measureUnitValue = MeasureUnit::getCubicCentimeter(); + measureUnit.adoptInstead(MeasureUnit::createCubicFoot(status)); + measureUnitValue = MeasureUnit::getCubicFoot(); + measureUnit.adoptInstead(MeasureUnit::createCubicInch(status)); + measureUnitValue = MeasureUnit::getCubicInch(); + measureUnit.adoptInstead(MeasureUnit::createCubicKilometer(status)); + measureUnitValue = MeasureUnit::getCubicKilometer(); + measureUnit.adoptInstead(MeasureUnit::createCubicMeter(status)); + measureUnitValue = MeasureUnit::getCubicMeter(); + measureUnit.adoptInstead(MeasureUnit::createCubicMile(status)); + measureUnitValue = MeasureUnit::getCubicMile(); + measureUnit.adoptInstead(MeasureUnit::createCubicYard(status)); + measureUnitValue = MeasureUnit::getCubicYard(); + measureUnit.adoptInstead(MeasureUnit::createCup(status)); + measureUnitValue = MeasureUnit::getCup(); + measureUnit.adoptInstead(MeasureUnit::createCupMetric(status)); + measureUnitValue = MeasureUnit::getCupMetric(); + measureUnit.adoptInstead(MeasureUnit::createDeciliter(status)); + measureUnitValue = MeasureUnit::getDeciliter(); + measureUnit.adoptInstead(MeasureUnit::createFluidOunce(status)); + measureUnitValue = MeasureUnit::getFluidOunce(); + measureUnit.adoptInstead(MeasureUnit::createFluidOunceImperial(status)); + measureUnitValue = MeasureUnit::getFluidOunceImperial(); + measureUnit.adoptInstead(MeasureUnit::createGallon(status)); + measureUnitValue = MeasureUnit::getGallon(); + measureUnit.adoptInstead(MeasureUnit::createGallonImperial(status)); + measureUnitValue = MeasureUnit::getGallonImperial(); + measureUnit.adoptInstead(MeasureUnit::createHectoliter(status)); + measureUnitValue = MeasureUnit::getHectoliter(); + measureUnit.adoptInstead(MeasureUnit::createLiter(status)); + measureUnitValue = MeasureUnit::getLiter(); + measureUnit.adoptInstead(MeasureUnit::createMegaliter(status)); + measureUnitValue = MeasureUnit::getMegaliter(); + measureUnit.adoptInstead(MeasureUnit::createMilliliter(status)); + measureUnitValue = MeasureUnit::getMilliliter(); + measureUnit.adoptInstead(MeasureUnit::createPint(status)); + measureUnitValue = MeasureUnit::getPint(); + measureUnit.adoptInstead(MeasureUnit::createPintMetric(status)); + measureUnitValue = MeasureUnit::getPintMetric(); + measureUnit.adoptInstead(MeasureUnit::createQuart(status)); + measureUnitValue = MeasureUnit::getQuart(); + measureUnit.adoptInstead(MeasureUnit::createTablespoon(status)); + measureUnitValue = MeasureUnit::getTablespoon(); + measureUnit.adoptInstead(MeasureUnit::createTeaspoon(status)); + measureUnitValue = MeasureUnit::getTeaspoon(); + assertSuccess("", status); +} + void MeasureFormatTest::TestBasic() { UErrorCode status = U_ZERO_ERROR; MeasureUnit *ptr1 = MeasureUnit::createArcMinute(status); @@ -216,17 +1627,17 @@ void MeasureFormatTest::TestExamplesInDocs() { if (!assertSuccess("Error creating formatters", status)) { return; } - Measure measureC(23, MeasureUnit::createCelsius(status), status); - Measure measureF(70, MeasureUnit::createFahrenheit(status), status); + Measure measureC((double)23, MeasureUnit::createCelsius(status), status); + Measure measureF((double)70, MeasureUnit::createFahrenheit(status), status); Measure feetAndInches[] = { - Measure(70, MeasureUnit::createFoot(status), status), - Measure(5.3, MeasureUnit::createInch(status), status)}; + Measure((double)70, MeasureUnit::createFoot(status), status), + Measure((double)5.3, MeasureUnit::createInch(status), status)}; Measure footAndInch[] = { - Measure(1, MeasureUnit::createFoot(status), status), - Measure(1, MeasureUnit::createInch(status), status)}; + Measure((double)1, MeasureUnit::createFoot(status), status), + Measure((double)1, MeasureUnit::createInch(status), status)}; Measure inchAndFeet[] = { - Measure(1, MeasureUnit::createInch(status), status), - Measure(2, MeasureUnit::createFoot(status), status)}; + Measure((double)1, MeasureUnit::createInch(status), status), + Measure((double)2, MeasureUnit::createFoot(status), status)}; if (!assertSuccess("Error creating measurements.", status)) { return; } @@ -235,77 +1646,77 @@ void MeasureFormatTest::TestExamplesInDocs() { fmtFr, &measureC, 1, - "23 \\u00B0C"); + "23\\u202F\\u00B0C"); verifyFormatWithPrefix( "Celsius", fmtFr, "Prefix: ", &measureC, 1, - "Prefix: 23 \\u00B0C"); + "Prefix: 23\\u202F\\u00B0C"); verifyFormat( "Fahrenheit", fmtFr, &measureF, 1, - "70 \\u00B0F"); + "70\\u202F\\u00B0F"); verifyFormat( "Feet and inches", fmtFrFull, feetAndInches, - LENGTHOF(feetAndInches), - "70 pieds et 5,3 pouces"); + UPRV_LENGTHOF(feetAndInches), + "70 pieds et 5,3\\u00A0pouces"); verifyFormatWithPrefix( "Feet and inches", fmtFrFull, "Prefix: ", feetAndInches, - LENGTHOF(feetAndInches), - "Prefix: 70 pieds et 5,3 pouces"); + UPRV_LENGTHOF(feetAndInches), + "Prefix: 70 pieds et 5,3\\u00A0pouces"); verifyFormat( "Foot and inch", fmtFrFull, footAndInch, - LENGTHOF(footAndInch), - "1 pied et 1 pouce"); + UPRV_LENGTHOF(footAndInch), + "1\\u00A0pied et 1\\u00A0pouce"); verifyFormat( "Foot and inch narrow", fmtFrNarrow, footAndInch, - LENGTHOF(footAndInch), + UPRV_LENGTHOF(footAndInch), "1\\u2032 1\\u2033"); verifyFormat( "Inch and feet", fmtEn, inchAndFeet, - LENGTHOF(inchAndFeet), + UPRV_LENGTHOF(inchAndFeet), "1 inch, 2 feet"); } void MeasureFormatTest::TestFormatPeriodEn() { UErrorCode status = U_ZERO_ERROR; - Measure t_19m[] = {Measure(19, MeasureUnit::createMinute(status), status)}; + Measure t_19m[] = {Measure((double)19, MeasureUnit::createMinute(status), status)}; Measure t_1h_23_5s[] = { - Measure(1.0, MeasureUnit::createHour(status), status), - Measure(23.5, MeasureUnit::createSecond(status), status) + Measure((double)1.0, MeasureUnit::createHour(status), status), + Measure((double)23.5, MeasureUnit::createSecond(status), status) }; Measure t_1h_23_5m[] = { - Measure(1.0, MeasureUnit::createHour(status), status), - Measure(23.5, MeasureUnit::createMinute(status), status) + Measure((double)1.0, MeasureUnit::createHour(status), status), + Measure((double)23.5, MeasureUnit::createMinute(status), status) }; Measure t_1h_0m_23s[] = { Measure( - 1.0, + (double)1.0, TimeUnit::createInstance( TimeUnit::UTIMEUNIT_HOUR, status), status), Measure( - 0.0, + (double)0.0, TimeUnit::createInstance( TimeUnit::UTIMEUNIT_MINUTE, status), status), Measure( - 23, + (double)23.0, TimeUnit::createInstance( TimeUnit::UTIMEUNIT_SECOND, status), status) @@ -364,67 +1775,67 @@ void MeasureFormatTest::TestFormatPeriodEn() { if (!assertSuccess("Error creating Measure objects", status)) { return; } - + ExpectedResult fullData[] = { - {t_1m_59_9996s, LENGTHOF(t_1m_59_9996s), "1 minute, 59.9996 seconds"}, - {t_19m, LENGTHOF(t_19m), "19 minutes"}, - {t_1h_23_5s, LENGTHOF(t_1h_23_5s), "1 hour, 23.5 seconds"}, - {t_1h_23_5m, LENGTHOF(t_1h_23_5m), "1 hour, 23.5 minutes"}, - {t_1h_0m_23s, LENGTHOF(t_1h_0m_23s), "1 hour, 0 minutes, 23 seconds"}, - {t_2y_5M_3w_4d, LENGTHOF(t_2y_5M_3w_4d), "2 years, 5 months, 3 weeks, 4 days"}}; + {t_1m_59_9996s, UPRV_LENGTHOF(t_1m_59_9996s), "1 minute, 59.9996 seconds"}, + {t_19m, UPRV_LENGTHOF(t_19m), "19 minutes"}, + {t_1h_23_5s, UPRV_LENGTHOF(t_1h_23_5s), "1 hour, 23.5 seconds"}, + {t_1h_23_5m, UPRV_LENGTHOF(t_1h_23_5m), "1 hour, 23.5 minutes"}, + {t_1h_0m_23s, UPRV_LENGTHOF(t_1h_0m_23s), "1 hour, 0 minutes, 23 seconds"}, + {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, LENGTHOF(t_1m_59_9996s), "1 min, 59.9996 secs"}, - {t_19m, LENGTHOF(t_19m), "19 mins"}, - {t_1h_23_5s, LENGTHOF(t_1h_23_5s), "1 hr, 23.5 secs"}, - {t_1h_23_5m, LENGTHOF(t_1h_23_5m), "1 hr, 23.5 mins"}, - {t_1h_0m_23s, LENGTHOF(t_1h_0m_23s), "1 hr, 0 mins, 23 secs"}, - {t_2y_5M_3w_4d, LENGTHOF(t_2y_5M_3w_4d), "2 yrs, 5 mths, 3 wks, 4 days"}}; + {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[] = { - {t_1m_59_9996s, LENGTHOF(t_1m_59_9996s), "1m 59.9996s"}, - {t_19m, LENGTHOF(t_19m), "19m"}, - {t_1h_23_5s, LENGTHOF(t_1h_23_5s), "1h 23.5s"}, - {t_1h_23_5m, LENGTHOF(t_1h_23_5m), "1h 23.5m"}, - {t_1h_0m_23s, LENGTHOF(t_1h_0m_23s), "1h 0m 23s"}, - {t_2y_5M_3w_4d, LENGTHOF(t_2y_5M_3w_4d), "2y 5m 3w 4d"}}; + {t_1m_59_9996s, UPRV_LENGTHOF(t_1m_59_9996s), "1m 59.9996s"}, + {t_19m, UPRV_LENGTHOF(t_19m), "19m"}, + {t_1h_23_5s, UPRV_LENGTHOF(t_1h_23_5s), "1h 23.5s"}, + {t_1h_23_5m, UPRV_LENGTHOF(t_1h_23_5m), "1h 23.5m"}, + {t_1h_0m_23s, UPRV_LENGTHOF(t_1h_0m_23s), "1h 0m 23s"}, + {t_2y_5M_3w_4d, UPRV_LENGTHOF(t_2y_5M_3w_4d), "2y 5mo 3w 4d"}}; ExpectedResult numericData[] = { - {t_1m_59_9996s, LENGTHOF(t_1m_59_9996s), "1:59.9996"}, - {t_19m, LENGTHOF(t_19m), "19m"}, - {t_1h_23_5s, LENGTHOF(t_1h_23_5s), "1:00:23.5"}, - {t_1h_23_5m, LENGTHOF(t_1h_23_5m), "1:23.5"}, - {t_1h_0m_23s, LENGTHOF(t_1h_0m_23s), "1:00:23"}, - {t_5h_17m, LENGTHOF(t_5h_17m), "5:17"}, - {t_neg5h_17m, LENGTHOF(t_neg5h_17m), "-5h 17m"}, - {t_19m_28s, LENGTHOF(t_19m_28s), "19:28"}, - {t_2y_5M_3w_4d, LENGTHOF(t_2y_5M_3w_4d), "2y 5m 3w 4d"}, - {t_0h_0m_9s, LENGTHOF(t_0h_0m_9s), "0:00:09"}, - {t_6h_56_92m, LENGTHOF(t_6h_56_92m), "6:56.92"}, - {t_6_7h_56_92m, LENGTHOF(t_6_7h_56_92m), "6:56.92"}, - {t_3h_4s_5m, LENGTHOF(t_3h_4s_5m), "3h 4s 5m"}, - {t_3h_5h, LENGTHOF(t_3h_5h), "3h 5h"}}; + {t_1m_59_9996s, UPRV_LENGTHOF(t_1m_59_9996s), "1:59.9996"}, + {t_19m, UPRV_LENGTHOF(t_19m), "19m"}, + {t_1h_23_5s, UPRV_LENGTHOF(t_1h_23_5s), "1:00:23.5"}, + {t_1h_23_5m, UPRV_LENGTHOF(t_1h_23_5m), "1:23.5"}, + {t_1h_0m_23s, UPRV_LENGTHOF(t_1h_0m_23s), "1:00:23"}, + {t_5h_17m, UPRV_LENGTHOF(t_5h_17m), "5:17"}, + {t_neg5h_17m, UPRV_LENGTHOF(t_neg5h_17m), "-5h 17m"}, + {t_19m_28s, UPRV_LENGTHOF(t_19m_28s), "19:28"}, + {t_2y_5M_3w_4d, UPRV_LENGTHOF(t_2y_5M_3w_4d), "2y 5mo 3w 4d"}, + {t_0h_0m_9s, UPRV_LENGTHOF(t_0h_0m_9s), "0:00:09"}, + {t_6h_56_92m, UPRV_LENGTHOF(t_6h_56_92m), "6:56.92"}, + {t_6_7h_56_92m, UPRV_LENGTHOF(t_6_7h_56_92m), "6:56.92"}, + {t_3h_4s_5m, UPRV_LENGTHOF(t_3h_4s_5m), "3h 4s 5m"}, + {t_3h_5h, UPRV_LENGTHOF(t_3h_5h), "3h 5h"}}; ExpectedResult fullDataDe[] = { - {t_1m_59_9996s, LENGTHOF(t_1m_59_9996s), "1 Minute und 59,9996 Sekunden"}, - {t_19m, LENGTHOF(t_19m), "19 Minuten"}, - {t_1h_23_5s, LENGTHOF(t_1h_23_5s), "1 Stunde und 23,5 Sekunden"}, - {t_1h_23_5m, LENGTHOF(t_1h_23_5m), "1 Stunde und 23,5 Minuten"}, - {t_1h_0m_23s, LENGTHOF(t_1h_0m_23s), "1 Stunde, 0 Minuten und 23 Sekunden"}, - {t_2y_5M_3w_4d, LENGTHOF(t_2y_5M_3w_4d), "2 Jahre, 5 Monate, 3 Wochen und 4 Tage"}}; + {t_1m_59_9996s, UPRV_LENGTHOF(t_1m_59_9996s), "1 Minute und 59,9996 Sekunden"}, + {t_19m, UPRV_LENGTHOF(t_19m), "19 Minuten"}, + {t_1h_23_5s, UPRV_LENGTHOF(t_1h_23_5s), "1 Stunde und 23,5 Sekunden"}, + {t_1h_23_5m, UPRV_LENGTHOF(t_1h_23_5m), "1 Stunde und 23,5 Minuten"}, + {t_1h_0m_23s, UPRV_LENGTHOF(t_1h_0m_23s), "1 Stunde, 0 Minuten und 23 Sekunden"}, + {t_2y_5M_3w_4d, UPRV_LENGTHOF(t_2y_5M_3w_4d), "2 Jahre, 5 Monate, 3 Wochen und 4 Tage"}}; ExpectedResult numericDataDe[] = { - {t_1m_59_9996s, LENGTHOF(t_1m_59_9996s), "1:59,9996"}, - {t_19m, LENGTHOF(t_19m), "19 Min."}, - {t_1h_23_5s, LENGTHOF(t_1h_23_5s), "1:00:23,5"}, - {t_1h_23_5m, LENGTHOF(t_1h_23_5m), "1:23,5"}, - {t_1h_0m_23s, LENGTHOF(t_1h_0m_23s), "1:00:23"}, - {t_5h_17m, LENGTHOF(t_5h_17m), "5:17"}, - {t_19m_28s, LENGTHOF(t_19m_28s), "19:28"}, - {t_2y_5M_3w_4d, LENGTHOF(t_2y_5M_3w_4d), "2 J, 5 M, 3 W und 4 T"}, - {t_0h_0m_17s, LENGTHOF(t_0h_0m_17s), "0:00:17"}, - {t_6h_56_92m, LENGTHOF(t_6h_56_92m), "6:56,92"}, - {t_3h_5h, LENGTHOF(t_3h_5h), "3 Std., 5 Std."}}; + {t_1m_59_9996s, UPRV_LENGTHOF(t_1m_59_9996s), "1:59,9996"}, + {t_19m, UPRV_LENGTHOF(t_19m), "19min"}, + {t_1h_23_5s, UPRV_LENGTHOF(t_1h_23_5s), "1:00:23,5"}, + {t_1h_23_5m, UPRV_LENGTHOF(t_1h_23_5m), "1:23,5"}, + {t_1h_0m_23s, UPRV_LENGTHOF(t_1h_0m_23s), "1:00:23"}, + {t_5h_17m, UPRV_LENGTHOF(t_5h_17m), "5:17"}, + {t_19m_28s, UPRV_LENGTHOF(t_19m_28s), "19:28"}, + {t_2y_5M_3w_4d, UPRV_LENGTHOF(t_2y_5M_3w_4d), "2J 5M 3W 4d"}, + {t_0h_0m_17s, UPRV_LENGTHOF(t_0h_0m_17s), "0:00:17"}, + {t_6h_56_92m, UPRV_LENGTHOF(t_6h_56_92m), "6:56,92"}, + {t_3h_5h, UPRV_LENGTHOF(t_3h_5h), "3h 5h"}}; Locale en(Locale::getEnglish()); LocalPointer nf(NumberFormat::createInstance(en, status)); @@ -437,35 +1848,35 @@ void MeasureFormatTest::TestFormatPeriodEn() { if (!assertSuccess("Error creating measure format en WIDE", status)) { return; } - verifyFormat("en WIDE", mf, fullData, LENGTHOF(fullData)); + verifyFormat("en WIDE", mf, fullData, UPRV_LENGTHOF(fullData)); // exercise copy constructor { MeasureFormat mf2(mf); - verifyFormat("en WIDE copy", mf2, fullData, LENGTHOF(fullData)); + verifyFormat("en WIDE copy", mf2, fullData, UPRV_LENGTHOF(fullData)); } // exercise clone { MeasureFormat *mf3 = (MeasureFormat *) mf.clone(); - verifyFormat("en WIDE copy", *mf3, fullData, LENGTHOF(fullData)); + verifyFormat("en WIDE copy", *mf3, fullData, UPRV_LENGTHOF(fullData)); delete mf3; } mf = MeasureFormat(en, UMEASFMT_WIDTH_SHORT, (NumberFormat *) nf->clone(), status); if (!assertSuccess("Error creating measure format en SHORT", status)) { return; } - verifyFormat("en SHORT", mf, abbrevData, LENGTHOF(abbrevData)); + verifyFormat("en SHORT", mf, abbrevData, UPRV_LENGTHOF(abbrevData)); mf = MeasureFormat(en, UMEASFMT_WIDTH_NARROW, (NumberFormat *) nf->clone(), status); if (!assertSuccess("Error creating measure format en NARROW", status)) { return; } - verifyFormat("en NARROW", mf, narrowData, LENGTHOF(narrowData)); + verifyFormat("en NARROW", mf, narrowData, UPRV_LENGTHOF(narrowData)); mf = MeasureFormat(en, UMEASFMT_WIDTH_NUMERIC, (NumberFormat *) nf->clone(), status); if (!assertSuccess("Error creating measure format en NUMERIC", status)) { return; } - verifyFormat("en NUMERIC", mf, numericData, LENGTHOF(numericData)); - + verifyFormat("en NUMERIC", mf, numericData, UPRV_LENGTHOF(numericData)); + Locale de(Locale::getGerman()); nf.adoptInstead(NumberFormat::createInstance(de, status)); if (!assertSuccess("Error creating number format de object", status)) { @@ -476,12 +1887,12 @@ void MeasureFormatTest::TestFormatPeriodEn() { if (!assertSuccess("Error creating measure format de WIDE", status)) { return; } - verifyFormat("de WIDE", mf, fullDataDe, LENGTHOF(fullDataDe)); + verifyFormat("de WIDE", mf, fullDataDe, UPRV_LENGTHOF(fullDataDe)); mf = MeasureFormat(de, UMEASFMT_WIDTH_NUMERIC, (NumberFormat *) nf->clone(), status); if (!assertSuccess("Error creating measure format de NUMERIC", status)) { return; } - verifyFormat("de NUMERIC", mf, numericDataDe, LENGTHOF(numericDataDe)); + verifyFormat("de NUMERIC", mf, numericDataDe, UPRV_LENGTHOF(numericDataDe)); } void MeasureFormatTest::Test10219FractionalPlurals() { @@ -492,8 +1903,8 @@ void MeasureFormatTest::Test10219FractionalPlurals() { {"1 minute", "1.0 minutes", "1.01 minutes"} }; UErrorCode status = U_ZERO_ERROR; - for (int j = 0; j < LENGTHOF(values); j++) { - for (int i = 0; i < LENGTHOF(expected[j]); i++) { + for (int j = 0; j < UPRV_LENGTHOF(values); j++) { + for (int i = 0; i < UPRV_LENGTHOF(expected[j]); i++) { DecimalFormat *df = (DecimalFormat *) NumberFormat::createInstance(en, status); if (U_FAILURE(status)) { @@ -512,7 +1923,7 @@ void MeasureFormatTest::Test10219FractionalPlurals() { return; } verifyFormat("Test10219", mf, &measure, 1, expected[j][i]); - } + } } } @@ -541,6 +1952,7 @@ void MeasureFormatTest::TestGreek() { UMEASFMT_WIDTH_SHORT}; int32_t numbers[] = {1, 7}; const char *expected[] = { + // "el_GR" 1 wide "1 \\u03B4\\u03B5\\u03C5\\u03C4\\u03B5\\u03C1\\u03CC\\u03BB\\u03B5\\u03C0\\u03C4\\u03BF", "1 \\u03BB\\u03B5\\u03C0\\u03C4\\u03CC", "1 \\u03CE\\u03C1\\u03B1", @@ -548,13 +1960,15 @@ void MeasureFormatTest::TestGreek() { "1 \\u03B5\\u03B2\\u03B4\\u03BF\\u03BC\\u03AC\\u03B4\\u03B1", "1 \\u03BC\\u03AE\\u03BD\\u03B1\\u03C2", "1 \\u03AD\\u03C4\\u03BF\\u03C2", + // "el_GR" 1 short "1 \\u03B4\\u03B5\\u03C5\\u03C4.", "1 \\u03BB\\u03B5\\u03C0.", "1 \\u03CE\\u03C1\\u03B1", "1 \\u03B7\\u03BC\\u03AD\\u03C1\\u03B1", "1 \\u03B5\\u03B2\\u03B4.", "1 \\u03BC\\u03AE\\u03BD.", - "1 \\u03AD\\u03C4\\u03BF\\u03C2", + "1 \\u03AD\\u03C4.", // year (one) + // "el_GR" 7 wide "7 \\u03B4\\u03B5\\u03C5\\u03C4\\u03B5\\u03C1\\u03CC\\u03BB\\u03B5\\u03C0\\u03C4\\u03B1", "7 \\u03BB\\u03B5\\u03C0\\u03C4\\u03AC", "7 \\u03CE\\u03C1\\u03B5\\u03C2", @@ -562,13 +1976,16 @@ void MeasureFormatTest::TestGreek() { "7 \\u03B5\\u03B2\\u03B4\\u03BF\\u03BC\\u03AC\\u03B4\\u03B5\\u03C2", "7 \\u03BC\\u03AE\\u03BD\\u03B5\\u03C2", "7 \\u03AD\\u03C4\\u03B7", + // "el_GR" 7 short "7 \\u03B4\\u03B5\\u03C5\\u03C4.", "7 \\u03BB\\u03B5\\u03C0.", - "7 \\u03CE\\u03C1\\u03B5\\u03C2", + "7 \\u03CE\\u03C1.", // hour (other) "7 \\u03B7\\u03BC\\u03AD\\u03C1\\u03B5\\u03C2", "7 \\u03B5\\u03B2\\u03B4.", "7 \\u03BC\\u03AE\\u03BD.", - "7 \\u03AD\\u03C4\\u03B7", + "7 \\u03AD\\u03C4.", // year (other) + + // "el" 1 wide "1 \\u03B4\\u03B5\\u03C5\\u03C4\\u03B5\\u03C1\\u03CC\\u03BB\\u03B5\\u03C0\\u03C4\\u03BF", "1 \\u03BB\\u03B5\\u03C0\\u03C4\\u03CC", "1 \\u03CE\\u03C1\\u03B1", @@ -576,13 +1993,15 @@ void MeasureFormatTest::TestGreek() { "1 \\u03B5\\u03B2\\u03B4\\u03BF\\u03BC\\u03AC\\u03B4\\u03B1", "1 \\u03BC\\u03AE\\u03BD\\u03B1\\u03C2", "1 \\u03AD\\u03C4\\u03BF\\u03C2", + // "el" 1 short "1 \\u03B4\\u03B5\\u03C5\\u03C4.", "1 \\u03BB\\u03B5\\u03C0.", "1 \\u03CE\\u03C1\\u03B1", "1 \\u03B7\\u03BC\\u03AD\\u03C1\\u03B1", "1 \\u03B5\\u03B2\\u03B4.", "1 \\u03BC\\u03AE\\u03BD.", - "1 \\u03AD\\u03C4\\u03BF\\u03C2", + "1 \\u03AD\\u03C4.", // year (one) + // "el" 7 wide "7 \\u03B4\\u03B5\\u03C5\\u03C4\\u03B5\\u03C1\\u03CC\\u03BB\\u03B5\\u03C0\\u03C4\\u03B1", "7 \\u03BB\\u03B5\\u03C0\\u03C4\\u03AC", "7 \\u03CE\\u03C1\\u03B5\\u03C2", @@ -590,19 +2009,20 @@ void MeasureFormatTest::TestGreek() { "7 \\u03B5\\u03B2\\u03B4\\u03BF\\u03BC\\u03AC\\u03B4\\u03B5\\u03C2", "7 \\u03BC\\u03AE\\u03BD\\u03B5\\u03C2", "7 \\u03AD\\u03C4\\u03B7", + // "el" 7 short "7 \\u03B4\\u03B5\\u03C5\\u03C4.", "7 \\u03BB\\u03B5\\u03C0.", - "7 \\u03CE\\u03C1\\u03B5\\u03C2", + "7 \\u03CE\\u03C1.", // hour (other) "7 \\u03B7\\u03BC\\u03AD\\u03C1\\u03B5\\u03C2", "7 \\u03B5\\u03B2\\u03B4.", "7 \\u03BC\\u03AE\\u03BD.", - "7 \\u03AD\\u03C4\\u03B7"}; + "7 \\u03AD\\u03C4."}; // year (other) int32_t counter = 0; - for (int32_t locIndex = 0; locIndex < LENGTHOF(locales); ++locIndex ) { - for( int32_t numIndex = 0; numIndex < LENGTHOF(numbers); ++numIndex ) { - for ( int32_t styleIndex = 0; styleIndex < LENGTHOF(styles); ++styleIndex ) { - for ( int32_t unitIndex = 0; unitIndex < LENGTHOF(units); ++unitIndex ) { + for (int32_t locIndex = 0; locIndex < UPRV_LENGTHOF(locales); ++locIndex ) { + for( int32_t numIndex = 0; numIndex < UPRV_LENGTHOF(numbers); ++numIndex ) { + for ( int32_t styleIndex = 0; styleIndex < UPRV_LENGTHOF(styles); ++styleIndex ) { + for ( int32_t unitIndex = 0; unitIndex < UPRV_LENGTHOF(units); ++unitIndex ) { Measure measure(numbers[numIndex], new MeasureUnit(units[unitIndex]), status); if (!assertSuccess("Error creating Measure", status)) { return; @@ -626,7 +2046,7 @@ void MeasureFormatTest::TestFormatSingleArg() { return; } UnicodeString buffer; - FieldPosition pos(0); + FieldPosition pos(FieldPosition::DONT_CARE); fmt.format( new Measure(3.5, MeasureUnit::createFoot(status), status), buffer, @@ -647,15 +2067,171 @@ void MeasureFormatTest::TestFormatMeasuresZeroArg() { verifyFormat("TestFormatMeasuresZeroArg", fmt, NULL, 0, ""); } +void MeasureFormatTest::TestSimplePer() { + Locale en("en"); + UErrorCode status = U_ZERO_ERROR; + LocalPointer second(MeasureUnit::createSecond(status)); + LocalPointer minute(MeasureUnit::createMinute(status)); + LocalPointer pound(MeasureUnit::createPound(status)); + if (!assertSuccess("", status)) { + return; + } + + helperTestSimplePer( + 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 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() { + Locale pl("pl"); + UErrorCode status = U_ZERO_ERROR; + LocalPointer second(MeasureUnit::createSecond(status)); + LocalPointer foot(MeasureUnit::createFoot(status)); + if (!assertSuccess("", status)) { + return; + } + + helperTestSimplePer( + 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"); + helperTestSimplePer( + 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"); +} + +void MeasureFormatTest::helperTestSimplePer( + const Locale &locale, + UMeasureFormatWidth width, + double value, + const MeasureUnit &unit, + const MeasureUnit &perUnit, + const char *expected) { + helperTestSimplePer( + locale, + width, + value, + unit, + perUnit, + expected, + FieldPosition::DONT_CARE, + 0, + 0); +} + +void MeasureFormatTest::helperTestSimplePer( + const Locale &locale, + UMeasureFormatWidth width, + double value, + const MeasureUnit &unit, + const MeasureUnit &perUnit, + const char *expected, + int32_t field, + int32_t expected_start, + int32_t expected_end) { + UErrorCode status = U_ZERO_ERROR; + FieldPosition pos(field); + 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 prefix("prefix: "); + UnicodeString buffer(prefix); + fmt.formatMeasurePerUnit( + measure, + perUnit, + buffer, + pos, + status); + if (!assertSuccess("Error formatting measures with per", status)) { + return; + } + UnicodeString uexpected(expected); + uexpected = prefix + uexpected; + assertEquals( + "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() { Locale ru("ru"); Locale en("en"); - 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_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\\u0430"); - helperTestMultiples(ru, UMEASFMT_WIDTH_NARROW, "2 \\u043C\\u0438\\u043B\\u044C 1 \\u0444\\u0443\\u0442 2,3 \\u0434\\u044E\\u0439\\u043C\\u0430"); + helperTestMultiples(ru, UMEASFMT_WIDTH_WIDE, "2 \\u043C\\u0438\\u043B\\u0438, 1 \\u0444\\u0443\\u0442, 2,3 \\u0434\\u044E\\u0439\\u043C\\u0430"); + helperTestMultiples(ru, UMEASFMT_WIDTH_SHORT, "2 \\u043C\\u0438, 1 \\u0444\\u0442, 2,3 \\u0434\\u044E\\u0439\\u043C."); + helperTestMultiples(ru, UMEASFMT_WIDTH_NARROW, "2 \\u043C\\u0438 1\\u2032 2,3\\u2033"); } void MeasureFormatTest::helperTestMultiples( @@ -663,34 +2239,96 @@ void MeasureFormatTest::helperTestMultiples( UMeasureFormatWidth width, const char *expected) { UErrorCode status = U_ZERO_ERROR; - FieldPosition pos(0); + FieldPosition pos(FieldPosition::DONT_CARE); 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.0, MeasureUnit::createMile(status), status), + Measure(1.0, MeasureUnit::createFoot(status), status), Measure(2.3, MeasureUnit::createInch(status), status)}; if (!assertSuccess("Error creating measures", status)) { return; } UnicodeString buffer; - fmt.formatMeasures(measures, LENGTHOF(measures), buffer, pos, status); + fmt.formatMeasures(measures, UPRV_LENGTHOF(measures), buffer, pos, status); if (!assertSuccess("Error formatting measures", status)) { return; } assertEquals("TestMultiples", UnicodeString(expected).unescape(), buffer); } +void MeasureFormatTest::TestManyLocaleDurations() { + UErrorCode status = U_ZERO_ERROR; + Measure measures[] = { + Measure(5.0, MeasureUnit::createHour(status), status), + Measure(37.0, MeasureUnit::createMinute(status), status)}; + if (!assertSuccess("Error creating measures", status)) { + return; + } + helperTestManyLocaleDurations("da", UMEASFMT_WIDTH_NARROW, measures, UPRV_LENGTHOF(measures), "5 t. 37 m."); // Apple data change + helperTestManyLocaleDurations("da", UMEASFMT_WIDTH_NUMERIC, measures, UPRV_LENGTHOF(measures), "5.37"); + helperTestManyLocaleDurations("de", UMEASFMT_WIDTH_NARROW, measures, UPRV_LENGTHOF(measures), "5h 37min"); // Apple data change + helperTestManyLocaleDurations("de", UMEASFMT_WIDTH_NUMERIC, measures, UPRV_LENGTHOF(measures), "5:37"); + helperTestManyLocaleDurations("en", UMEASFMT_WIDTH_NARROW, measures, UPRV_LENGTHOF(measures), "5h 37m"); + helperTestManyLocaleDurations("en", UMEASFMT_WIDTH_NUMERIC, measures, UPRV_LENGTHOF(measures), "5:37"); + helperTestManyLocaleDurations("en_GB", UMEASFMT_WIDTH_NARROW, measures, UPRV_LENGTHOF(measures), "5h 37m"); + helperTestManyLocaleDurations("en_GB", UMEASFMT_WIDTH_NUMERIC, measures, UPRV_LENGTHOF(measures), "5:37"); + helperTestManyLocaleDurations("es", UMEASFMT_WIDTH_NARROW, measures, UPRV_LENGTHOF(measures), "5h 37min"); + helperTestManyLocaleDurations("es", UMEASFMT_WIDTH_NUMERIC, measures, UPRV_LENGTHOF(measures), "5:37"); + helperTestManyLocaleDurations("fi", UMEASFMT_WIDTH_NARROW, measures, UPRV_LENGTHOF(measures), "5t 37min"); + helperTestManyLocaleDurations("fi", UMEASFMT_WIDTH_NUMERIC, measures, UPRV_LENGTHOF(measures), "5.37"); + helperTestManyLocaleDurations("fr", UMEASFMT_WIDTH_NARROW, measures, UPRV_LENGTHOF(measures), "5h 37mn"); + helperTestManyLocaleDurations("fr", UMEASFMT_WIDTH_NUMERIC, measures, UPRV_LENGTHOF(measures), "5:37"); + helperTestManyLocaleDurations("is", UMEASFMT_WIDTH_NARROW, measures, UPRV_LENGTHOF(measures), "5 klst. og 37 m\\u00EDn."); + helperTestManyLocaleDurations("is", UMEASFMT_WIDTH_NUMERIC, measures, UPRV_LENGTHOF(measures), "5:37"); + helperTestManyLocaleDurations("ja", UMEASFMT_WIDTH_NARROW, measures, UPRV_LENGTHOF(measures), "5\\u6642\\u959337\\u5206"); + helperTestManyLocaleDurations("ja", UMEASFMT_WIDTH_NUMERIC, measures, UPRV_LENGTHOF(measures), "5:37"); + helperTestManyLocaleDurations("nb", UMEASFMT_WIDTH_NARROW, measures, UPRV_LENGTHOF(measures), "5 t, 37 m"); + helperTestManyLocaleDurations("nb", UMEASFMT_WIDTH_NUMERIC, measures, UPRV_LENGTHOF(measures), "5:37"); + helperTestManyLocaleDurations("nl", UMEASFMT_WIDTH_NARROW, measures, UPRV_LENGTHOF(measures), "5 u, 37 m"); + helperTestManyLocaleDurations("nl", UMEASFMT_WIDTH_NUMERIC, measures, UPRV_LENGTHOF(measures), "5:37"); + helperTestManyLocaleDurations("nn", UMEASFMT_WIDTH_NARROW, measures, UPRV_LENGTHOF(measures), "5t og 37m"); + helperTestManyLocaleDurations("nn", UMEASFMT_WIDTH_NUMERIC, measures, UPRV_LENGTHOF(measures), "5:37"); + helperTestManyLocaleDurations("sv", UMEASFMT_WIDTH_NARROW, measures, UPRV_LENGTHOF(measures), "5h 37m"); + helperTestManyLocaleDurations("sv", UMEASFMT_WIDTH_NUMERIC, measures, UPRV_LENGTHOF(measures), "5:37"); + helperTestManyLocaleDurations("zh", UMEASFMT_WIDTH_NARROW, measures, UPRV_LENGTHOF(measures), "5\\u5C0F\\u65F637\\u5206\\u949F"); + helperTestManyLocaleDurations("zh", UMEASFMT_WIDTH_NUMERIC, measures, UPRV_LENGTHOF(measures), "5:37"); +} + +void MeasureFormatTest::helperTestManyLocaleDurations( const char *localeID, + UMeasureFormatWidth width, + const Measure *measures, + int32_t measureCount, + const char *expected) { + UErrorCode status = U_ZERO_ERROR; + MeasureFormat fmt(Locale(localeID), width, status); + if (U_FAILURE(status)) { + errln("Could not create MeasureFormat for locale %s, width %d, status: %s", localeID, (int)width, u_errorName(status)); + return; + } + UnicodeString buffer; + FieldPosition pos(FieldPosition::DONT_CARE); + fmt.formatMeasures(measures, measureCount, buffer, pos, status); + if (U_FAILURE(status)) { + errln("MeasureFormat::formatMeasures failed for locale %s, width %d, status: %s", localeID, (int)width, u_errorName(status)); + return; + } + UnicodeString expStr(UnicodeString(expected).unescape()); + if (buffer != expStr) { + errln("MeasureFormat::formatMeasures for locale " + UnicodeString(localeID) + ", width " + width + ", expected \"" + expStr + "\", got \"" + buffer + "\""); + } +} + void MeasureFormatTest::TestGram() { UErrorCode status = U_ZERO_ERROR; MeasureFormat fmt("en", UMEASFMT_WIDTH_SHORT, status); if (!assertSuccess("Error creating format object", status)) { return; } - Measure gram(1, MeasureUnit::createGram(status), status); - Measure gforce(1, MeasureUnit::createGForce(status), status); + Measure gram((double)1, MeasureUnit::createGram(status), status); + Measure gforce((double)1, MeasureUnit::createGForce(status), status); if (!assertSuccess("Error creating measures", status)) { return; } @@ -699,12 +2337,19 @@ void MeasureFormatTest::TestGram() { } void MeasureFormatTest::TestCurrencies() { - UChar USD[] = {'U', 'S', 'D', 0}; + UChar USD[4] = {}; + u_uastrcpy(USD, "USD"); UErrorCode status = U_ZERO_ERROR; + CurrencyUnit USD_unit(USD, status); + assertEquals("Currency Unit", USD, USD_unit.getISOCurrency()); + if (!assertSuccess("Error creating CurrencyUnit", status)) { + return; + } CurrencyAmount USD_1(1.0, USD, status); + assertEquals("Currency Code", USD, USD_1.getISOCurrency()); CurrencyAmount USD_2(2.0, USD, status); CurrencyAmount USD_NEG_1(-1.0, USD, status); - if (!assertSuccess("Error creating measures", status)) { + if (!assertSuccess("Error creating currencies", status)) { return; } Locale en("en"); @@ -719,9 +2364,9 @@ void MeasureFormatTest::TestCurrencies() { if (!assertSuccess("Error creating format object", status)) { return; } - verifyFormat("TestCurrenciesShort", fmt, &USD_NEG_1, 1, "-USD1.00"); - verifyFormat("TestCurrenciesShort", fmt, &USD_1, 1, "USD1.00"); - verifyFormat("TestCurrenciesShort", fmt, &USD_2, 1, "USD2.00"); + verifyFormat("TestCurrenciesShort", fmt, &USD_NEG_1, 1, "-USD\\u00A01.00"); + verifyFormat("TestCurrenciesShort", fmt, &USD_1, 1, "USD\\u00A01.00"); + verifyFormat("TestCurrenciesShort", fmt, &USD_2, 1, "USD\\u00A02.00"); fmt = MeasureFormat(en, UMEASFMT_WIDTH_NARROW, status); if (!assertSuccess("Error creating format object", status)) { return; @@ -738,6 +2383,61 @@ void MeasureFormatTest::TestCurrencies() { verifyFormat("TestCurrenciesNumeric", fmt, &USD_2, 1, "$2.00"); } +void MeasureFormatTest::TestDisplayNames() { + UErrorCode status = U_ZERO_ERROR; + helperTestDisplayName( MeasureUnit::createYear(status), "en", UMEASFMT_WIDTH_WIDE, "years" ); + helperTestDisplayName( MeasureUnit::createYear(status), "ja", UMEASFMT_WIDTH_WIDE, "\\u5E74" ); + helperTestDisplayName( MeasureUnit::createYear(status), "es", UMEASFMT_WIDTH_WIDE, "a\\u00F1os" ); + helperTestDisplayName( MeasureUnit::createYear(status), "pt", UMEASFMT_WIDTH_WIDE, "anos" ); + helperTestDisplayName( MeasureUnit::createYear(status), "pt-PT", UMEASFMT_WIDTH_WIDE, "anos" ); + helperTestDisplayName( MeasureUnit::createAmpere(status), "en", UMEASFMT_WIDTH_WIDE, "amperes" ); + helperTestDisplayName( MeasureUnit::createAmpere(status), "ja", UMEASFMT_WIDTH_WIDE, "\\u30A2\\u30F3\\u30DA\\u30A2" ); + helperTestDisplayName( MeasureUnit::createAmpere(status), "es", UMEASFMT_WIDTH_WIDE, "amperios" ); + helperTestDisplayName( MeasureUnit::createAmpere(status), "pt", UMEASFMT_WIDTH_WIDE, "amperes" ); + helperTestDisplayName( MeasureUnit::createAmpere(status), "pt-PT", UMEASFMT_WIDTH_WIDE, "amperes" ); + helperTestDisplayName( MeasureUnit::createMeterPerSecondSquared(status), "pt", UMEASFMT_WIDTH_WIDE, "metros por segundo ao quadrado" ); + helperTestDisplayName( MeasureUnit::createMeterPerSecondSquared(status), "pt-PT", UMEASFMT_WIDTH_WIDE, "metros por segundo quadrado" ); + helperTestDisplayName( MeasureUnit::createSquareKilometer(status), "pt", UMEASFMT_WIDTH_NARROW, "km\\u00B2" ); + helperTestDisplayName( MeasureUnit::createSquareKilometer(status), "pt", UMEASFMT_WIDTH_SHORT, "km\\u00B2" ); + helperTestDisplayName( MeasureUnit::createSquareKilometer(status), "pt", UMEASFMT_WIDTH_WIDE, "quil\\u00F4metros quadrados" ); + helperTestDisplayName( MeasureUnit::createSecond(status), "pt-PT", UMEASFMT_WIDTH_NARROW, "s" ); + helperTestDisplayName( MeasureUnit::createSecond(status), "pt-PT", UMEASFMT_WIDTH_SHORT, "s" ); + helperTestDisplayName( MeasureUnit::createSecond(status), "pt-PT", UMEASFMT_WIDTH_WIDE, "segundos" ); + helperTestDisplayName( MeasureUnit::createSecond(status), "pt", UMEASFMT_WIDTH_NARROW, "seg" ); + helperTestDisplayName( MeasureUnit::createSecond(status), "pt", UMEASFMT_WIDTH_SHORT, "seg" ); + helperTestDisplayName( MeasureUnit::createSecond(status), "pt", UMEASFMT_WIDTH_WIDE, "segundos" ); + assertSuccess("Error creating measure units", status); +} + +void MeasureFormatTest::helperTestDisplayName(const MeasureUnit *unit, + const char *localeID, + UMeasureFormatWidth width, + const char *expected) { + UErrorCode status = U_ZERO_ERROR; + MeasureFormat fmt(Locale(localeID), width, status); + if (U_FAILURE(status)) { + errln("Could not create MeasureFormat for locale %s, width %d, status: %s", + localeID, (int)width, u_errorName(status)); + return; + } + + UnicodeString dnam = fmt.getUnitDisplayName(*unit, status); + if (U_FAILURE(status)) { + errln("MeasureFormat::getUnitDisplayName failed for unit %s-%s, locale %s, width %d, status: %s", + unit->getType(), unit->getSubtype(), localeID, (int)width, u_errorName(status)); + return; + } + + UnicodeString expStr(UnicodeString(expected).unescape()); + if (dnam != expStr) { + errln("MeasureFormat::getUnitDisplayName for unit %s-%s, locale %s, width %d: expected \"%s\", got \"%s\"", + unit->getType(), unit->getSubtype(), localeID, (int)width, CStr(expStr)(), CStr(dnam)()); + } + + // Delete the measure unit + delete unit; +} + void MeasureFormatTest::TestFieldPosition() { UErrorCode status = U_ZERO_ERROR; MeasureFormat fmt("en", UMEASFMT_WIDTH_SHORT, status); @@ -758,7 +2458,7 @@ void MeasureFormatTest::TestFieldPosition() { NumberFormat::kDecimalSeparatorField, 10, 11); - measure = Measure(43, MeasureUnit::createFoot(status), status); + measure = Measure(43.0, MeasureUnit::createFoot(status), status); if (!assertSuccess("Error creating measure object 2", status)) { return; } @@ -780,16 +2480,16 @@ void MeasureFormatTest::TestFieldPositionMultiple() { return; } Measure first[] = { - Measure(354, MeasureUnit::createMeter(status), status), - Measure(23, MeasureUnit::createCentimeter(status), status)}; + Measure((double)354, MeasureUnit::createMeter(status), status), + Measure((double)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((double)354, MeasureUnit::createMeter(status), status), + Measure((double)23, MeasureUnit::createCentimeter(status), status), + Measure((double)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)}; + Measure((double)3, MeasureUnit::createMeter(status), status), + Measure((double)23, MeasureUnit::createCentimeter(status), status), + Measure((double)5, MeasureUnit::createMillimeter(status), status)}; if (!assertSuccess("Error creating measure objects", status)) { return; } @@ -799,7 +2499,7 @@ void MeasureFormatTest::TestFieldPositionMultiple() { fmt, prefix, first, - LENGTHOF(first), + UPRV_LENGTHOF(first), NumberFormat::kIntegerField, 8, 11); @@ -808,7 +2508,7 @@ void MeasureFormatTest::TestFieldPositionMultiple() { fmt, prefix, second, - LENGTHOF(second), + UPRV_LENGTHOF(second), NumberFormat::kDecimalSeparatorField, 23, 24); @@ -817,7 +2517,7 @@ void MeasureFormatTest::TestFieldPositionMultiple() { fmt, prefix, third, - LENGTHOF(third), + UPRV_LENGTHOF(third), NumberFormat::kDecimalSeparatorField, 0, 0); @@ -829,7 +2529,7 @@ void MeasureFormatTest::TestBadArg() { if (!assertSuccess("Error creating format object", status)) { return; } - FieldPosition pos(0); + FieldPosition pos(FieldPosition::DONT_CARE); UnicodeString buffer; fmt.format( 9.3, @@ -864,12 +2564,39 @@ void MeasureFormatTest::TestEquality() { assertTrue("Not Equal 3", fmt != fmtne3); } +void MeasureFormatTest::TestGroupingSeparator() { + UErrorCode status = U_ZERO_ERROR; + Locale en("en"); + MeasureFormat fmt(en, UMEASFMT_WIDTH_SHORT, status); + if (!assertSuccess("Error creating format object", status)) { + return; + } + Measure ms[] = { + Measure((int32_t)INT32_MAX, MeasureUnit::createYear(status), status), + Measure((int32_t)INT32_MIN, MeasureUnit::createMonth(status), status), + Measure(-987.0, MeasureUnit::createDay(status), status), + Measure(1362.0, MeasureUnit::createHour(status), status), + Measure(987.0, MeasureUnit::createMinute(status), status)}; + FieldPosition pos(NumberFormat::kGroupingSeparatorField); + UnicodeString appendTo; + fmt.formatMeasures(ms, 5, appendTo, pos, status); + if (!assertSuccess("Error formatting", status)) { + return; + } + assertEquals( + "grouping separator", + "2,147,483,647 yrs, -2,147,483,648 mths, -987 days, 1,362 hr, 987 min", + appendTo); + assertEquals("begin index", 1, pos.getBeginIndex()); + assertEquals("end index", 2, pos.getEndIndex()); +} + void MeasureFormatTest::TestDoubleZero() { UErrorCode status = U_ZERO_ERROR; Measure measures[] = { Measure(4.7, MeasureUnit::createHour(status), status), - Measure(23, MeasureUnit::createMinute(status), status), - Measure(16, MeasureUnit::createSecond(status), status)}; + Measure(23.0, MeasureUnit::createMinute(status), status), + Measure(16.0, MeasureUnit::createSecond(status), status)}; Locale en("en"); NumberFormat *nf = NumberFormat::createInstance(en, status); MeasureFormat fmt("en", UMEASFMT_WIDTH_WIDE, nf, status); @@ -881,7 +2608,7 @@ void MeasureFormatTest::TestDoubleZero() { } nf->setMinimumFractionDigits(2); nf->setMaximumFractionDigits(2); - fmt.formatMeasures(measures, LENGTHOF(measures), appendTo, pos, status); + fmt.formatMeasures(measures, UPRV_LENGTHOF(measures), appendTo, pos, status); if (!assertSuccess("Error formatting", status)) { return; } @@ -891,7 +2618,7 @@ void MeasureFormatTest::TestDoubleZero() { appendTo); measures[0] = Measure(-4.7, MeasureUnit::createHour(status), status); appendTo.remove(); - fmt.formatMeasures(measures, LENGTHOF(measures), appendTo, pos, status); + fmt.formatMeasures(measures, UPRV_LENGTHOF(measures), appendTo, pos, status); if (!assertSuccess("Error formatting", status)) { return; } @@ -901,6 +2628,70 @@ void MeasureFormatTest::TestDoubleZero() { appendTo); } +void MeasureFormatTest::TestUnitPerUnitResolution() { + UErrorCode status = U_ZERO_ERROR; + Locale en("en"); + MeasureFormat fmt("en", UMEASFMT_WIDTH_SHORT, status); + Measure measure(50.0, MeasureUnit::createPound(status), status); + LocalPointer sqInch(MeasureUnit::createSquareInch(status)); + if (!assertSuccess("Create of format unit and per unit", status)) { + return; + } + FieldPosition pos(FieldPosition::DONT_CARE); + UnicodeString actual; + fmt.formatMeasurePerUnit( + measure, + *sqInch, + actual, + pos, + status); + assertEquals("", "50 psi", actual); +} + +void MeasureFormatTest::TestIndividualPluralFallback() { + // See ticket #11986 "incomplete fallback in MeasureFormat". + // In CLDR 28, fr_CA temperature-generic/short has only the "one" form, + // and falls back to fr for the "other" form. + IcuTestErrorCode errorCode(*this, "TestIndividualPluralFallback"); + MeasureFormat mf("fr_CA", UMEASFMT_WIDTH_SHORT, errorCode); + LocalPointer twoDeg( + new Measure(2.0, MeasureUnit::createGenericTemperature(errorCode), errorCode), errorCode); + UnicodeString expected = UNICODE_STRING_SIMPLE("2\\u00B0").unescape(); + UnicodeString actual; + assertEquals("2 deg temp in fr_CA", expected, mf.format(twoDeg.orphan(), actual, errorCode), TRUE); +} + +void MeasureFormatTest::Test20332_PersonUnits() { + IcuTestErrorCode status(*this, "Test20332_PersonUnits"); + const struct TestCase { + const char* locale; + MeasureUnit* unitToAdopt; + UMeasureFormatWidth width; + const char* expected; + } cases[] = { + {"en-us", MeasureUnit::createYearPerson(status), UMEASFMT_WIDTH_NARROW, "25y"}, + {"en-us", MeasureUnit::createYearPerson(status), UMEASFMT_WIDTH_SHORT, "25 yrs"}, + {"en-us", MeasureUnit::createYearPerson(status), UMEASFMT_WIDTH_WIDE, "25 years"}, + {"en-us", MeasureUnit::createMonthPerson(status), UMEASFMT_WIDTH_NARROW, "25mo"}, + {"en-us", MeasureUnit::createMonthPerson(status), UMEASFMT_WIDTH_SHORT, "25 mths"}, + {"en-us", MeasureUnit::createMonthPerson(status), UMEASFMT_WIDTH_WIDE, "25 months"}, + {"en-us", MeasureUnit::createWeekPerson(status), UMEASFMT_WIDTH_NARROW, "25w"}, + {"en-us", MeasureUnit::createWeekPerson(status), UMEASFMT_WIDTH_SHORT, "25 wks"}, + {"en-us", MeasureUnit::createWeekPerson(status), UMEASFMT_WIDTH_WIDE, "25 weeks"}, + {"en-us", MeasureUnit::createDayPerson(status), UMEASFMT_WIDTH_NARROW, "25d"}, + {"en-us", MeasureUnit::createDayPerson(status), UMEASFMT_WIDTH_SHORT, "25 days"}, + {"en-us", MeasureUnit::createDayPerson(status), UMEASFMT_WIDTH_WIDE, "25 days"} + }; + for (const auto& cas : cases) { + MeasureFormat mf(cas.locale, cas.width, status); + if (status.errIfFailureAndReset()) { return; } + Measure measure(25, cas.unitToAdopt, status); + if (status.errIfFailureAndReset()) { return; } + verifyFormat(cas.locale, mf, &measure, 1, cas.expected); + } +} + + void MeasureFormatTest::verifyFieldPosition( const char *description, const MeasureFormat &fmt, @@ -952,13 +2743,13 @@ void MeasureFormatTest::verifyFormatWithPrefix( int32_t measureCount, const char *expected) { UnicodeString result(prefix); - FieldPosition pos(0); + FieldPosition pos(FieldPosition::DONT_CARE); UErrorCode status = U_ZERO_ERROR; fmt.formatMeasures(measures, measureCount, result, pos, status); if (!assertSuccess("Error formatting", status)) { return; } - assertEquals(description, UnicodeString(expected).unescape(), result); + assertEquals(description, ctou(expected), result); } void MeasureFormatTest::verifyFormat(