ICU-20337 Adding value getters to C++ MeasureUnit API.

ICU-20337 Restoring comments in MeasureUnitTest.java
This commit is contained in:
Shane Carr 2019-01-18 23:34:23 -08:00 committed by Shane F. Carr
parent 9a27ba01ef
commit a184153a2c
6 changed files with 2153 additions and 179 deletions

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -53,7 +53,7 @@
* // Create a "template" in a singleton unique_ptr but without setting a locale until the call site:
* std::unique_ptr<UnlocalizedNumberFormatter> template = NumberFormatter::with()
* .sign(UNumberSignDisplay::UNUM_SIGN_ALWAYS)
* .adoptUnit(MeasureUnit::createMeter(status))
* .unit(MeasureUnit::getMeter())
* .unitWidth(UNumberUnitWidth::UNUM_UNIT_WIDTH_FULL_NAME)
* .clone();
* template->locale(...).format(1234).toString(); // +1,234 meters in en-US
@ -1489,11 +1489,10 @@ class U_I18N_API NumberFormatterSettings {
* All units will be properly localized with locale data, and all units are compatible with notation styles,
* rounding precisions, and other number formatter settings.
*
* Pass this method any instance of {@link MeasureUnit}. For units of measure (which often involve the
* factory methods that return a pointer):
* Pass this method any instance of {@link MeasureUnit}. For units of measure:
*
* <pre>
* NumberFormatter::with().adoptUnit(MeasureUnit::createMeter(status))
* NumberFormatter::with().unit(MeasureUnit::getMeter())
* </pre>
*
* Currency:
@ -1536,11 +1535,9 @@ class U_I18N_API NumberFormatterSettings {
/**
* Like unit(), but takes ownership of a pointer. Convenient for use with the MeasureFormat factory
* methods, which return pointers that need ownership. Example:
* methods that return pointers that need ownership.
*
* <pre>
* NumberFormatter::with().adoptUnit(MeasureUnit::createMeter(status))
* </pre>
* Note: consider using the MeasureFormat factory methods that return by value.
*
* @param unit
* The unit to render.
@ -1566,8 +1563,13 @@ class U_I18N_API NumberFormatterSettings {
* Sets a unit to be used in the denominator. For example, to format "3 m/s", pass METER to the unit and SECOND to
* the perUnit.
*
* Pass this method any instance of {@link MeasureUnit}. Since MeasureUnit factory methods return pointers, the
* {@link #adoptPerUnit} version of this method is often more useful.
* Pass this method any instance of {@link MeasureUnit}. Example:
*
* <pre>
* NumberFormatter::with()
* .unit(MeasureUnit::getMeter())
* .perUnit(MeasureUnit::getSecond())
* </pre>
*
* The default is not to display any unit in the denominator.
*
@ -1594,13 +1596,9 @@ class U_I18N_API NumberFormatterSettings {
/**
* Like perUnit(), but takes ownership of a pointer. Convenient for use with the MeasureFormat factory
* methods, which return pointers that need ownership. Example:
* methods that return pointers that need ownership.
*
* <pre>
* NumberFormatter::with()
* .adoptUnit(MeasureUnit::createMeter(status))
* .adoptPerUnit(MeasureUnit::createSecond(status))
* </pre>
* Note: consider using the MeasureFormat factory methods that return by value.
*
* @param perUnit
* The unit to render in the denominator.

View file

@ -51,6 +51,7 @@ private:
void TestCompatible58();
void TestCompatible59();
void TestCompatible63();
void TestCompatible64();
void TestGetAvailable();
void TestExamplesInDocs();
void TestFormatPeriodEn();
@ -149,6 +150,7 @@ void MeasureFormatTest::runIndexedTest(
TESTCASE_AUTO(TestCompatible58);
TESTCASE_AUTO(TestCompatible59);
TESTCASE_AUTO(TestCompatible63);
TESTCASE_AUTO(TestCompatible64);
TESTCASE_AUTO(TestGetAvailable);
TESTCASE_AUTO(TestExamplesInDocs);
TESTCASE_AUTO(TestFormatPeriodEn);
@ -1189,6 +1191,291 @@ void MeasureFormatTest::TestCompatible63() {
assertSuccess("", status);
}
void MeasureFormatTest::TestCompatible64() {
UErrorCode status = U_ZERO_ERROR;
LocalPointer<MeasureUnit> 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::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::createPartPerMillion(status));
measureUnitValue = MeasureUnit::getPartPerMillion();
measureUnit.adoptInstead(MeasureUnit::createPercent(status));
measureUnitValue = MeasureUnit::getPercent();
measureUnit.adoptInstead(MeasureUnit::createPermille(status));
measureUnitValue = MeasureUnit::getPermille();
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::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::createNanosecond(status));
measureUnitValue = MeasureUnit::getNanosecond();
measureUnit.adoptInstead(MeasureUnit::createSecond(status));
measureUnitValue = MeasureUnit::getSecond();
measureUnit.adoptInstead(MeasureUnit::createWeek(status));
measureUnitValue = MeasureUnit::getWeek();
measureUnit.adoptInstead(MeasureUnit::createYear(status));
measureUnitValue = MeasureUnit::getYear();
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::createCalorie(status));
measureUnitValue = MeasureUnit::getCalorie();
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::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::createYard(status));
measureUnitValue = MeasureUnit::getYard();
measureUnit.adoptInstead(MeasureUnit::createLux(status));
measureUnitValue = MeasureUnit::getLux();
measureUnit.adoptInstead(MeasureUnit::createCarat(status));
measureUnitValue = MeasureUnit::getCarat();
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::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::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::createAcreFoot(status));
measureUnitValue = MeasureUnit::getAcreFoot();
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::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);

View file

@ -430,7 +430,7 @@ void NumberFormatterApiTest::unitMeasure() {
assertFormatDescending(
u"Meters Short and unit() method",
u"measure-unit/length-meter",
NumberFormatter::with().unit(METER),
NumberFormatter::with().unit(MeasureUnit::getMeter()),
Locale::getEnglish(),
u"87,650 m",
u"8,765 m",

View file

@ -70,7 +70,7 @@ public class MeasureUnitTest extends TestFmwk {
if (first == null || second == null) {
throw new IllegalArgumentException("OrderedPair.of requires non null values.");
}
return new OrderedPair<F, S>(first, second);
return new OrderedPair<>(first, second);
}
@Override
@ -85,9 +85,9 @@ public class MeasureUnitTest extends TestFmwk {
private static final String[] DRAFT_VERSIONS = {"61", "62", "63"};
private static final HashSet<String> DRAFT_VERSION_SET = new HashSet<String>();
private static final HashSet<String> DRAFT_VERSION_SET = new HashSet<>();
private static final HashSet<String> TIME_CODES = new HashSet<String>();
private static final HashSet<String> TIME_CODES = new HashSet<>();
private static final String[][] JAVA_VERSIONS = {
{"G_FORCE", "53"},
@ -231,7 +231,7 @@ public class MeasureUnitTest extends TestFmwk {
{"ATMOSPHERE", "63"},
};
private static final HashMap<String, String> JAVA_VERSION_MAP = new HashMap<String, String>();
private static final HashMap<String, String> JAVA_VERSION_MAP = new HashMap<>();
static {
TIME_CODES.add("year");
@ -1616,7 +1616,7 @@ public class MeasureUnitTest extends TestFmwk {
}
static void assertUnique(Collection<?> coll) {
int expectedSize = new HashSet<Object>(coll).size();
int expectedSize = new HashSet<>(coll).size();
int actualSize = coll.size();
assertEquals("Collection should contain only unique elements", expectedSize, actualSize);
}
@ -1966,14 +1966,14 @@ public class MeasureUnitTest extends TestFmwk {
@Test
public void testOldFormatWithList() {
List<Measure> measures = new ArrayList<Measure>(2);
List<Measure> measures = new ArrayList<>(2);
measures.add(new Measure(5, MeasureUnit.ACRE));
measures.add(new Measure(3000, MeasureUnit.SQUARE_FOOT));
MeasureFormat fmt = MeasureFormat.getInstance(
ULocale.ENGLISH, FormatWidth.WIDE);
assertEquals("", "5 acres, 3,000 square feet", fmt.format(measures));
assertEquals("", "5 acres", fmt.format(measures.subList(0, 1)));
List<String> badList = new ArrayList<String>();
List<String> badList = new ArrayList<>();
badList.add("be");
badList.add("you");
try {
@ -2148,7 +2148,7 @@ public class MeasureUnitTest extends TestFmwk {
@Test
public void testCLDRUnitAvailability() {
Set<MeasureUnit> knownUnits = new HashSet<MeasureUnit>();
Set<MeasureUnit> knownUnits = new HashSet<>();
Class cMeasureUnit, cTimeUnit;
try {
cMeasureUnit = Class.forName("com.ibm.icu.util.MeasureUnit");
@ -2198,8 +2198,8 @@ public class MeasureUnitTest extends TestFmwk {
static Map<MeasureUnit, Pair<MeasureUnit, MeasureUnit>> getUnitsToPerParts() {
TreeMap<String, List<MeasureUnit>> allUnits = getAllUnits();
Map<MeasureUnit, Pair<String, String>> unitsToPerStrings =
new HashMap<MeasureUnit, Pair<String, String>>();
Map<String, MeasureUnit> namesToUnits = new HashMap<String, MeasureUnit>();
new HashMap<>();
Map<String, MeasureUnit> namesToUnits = new HashMap<>();
for (Map.Entry<String, List<MeasureUnit>> entry : allUnits.entrySet()) {
String type = entry.getKey();
// Currency types are always atomic units, so we can skip these
@ -2217,7 +2217,7 @@ public class MeasureUnitTest extends TestFmwk {
}
}
Map<MeasureUnit, Pair<MeasureUnit, MeasureUnit>> unitsToPerUnits =
new HashMap<MeasureUnit, Pair<MeasureUnit, MeasureUnit>>();
new HashMap<>();
for (Map.Entry<MeasureUnit, Pair<String, String>> entry : unitsToPerStrings.entrySet()) {
Pair<String, String> perStrings = entry.getValue();
MeasureUnit unit = namesToUnits.get(perStrings.first);
@ -2232,7 +2232,7 @@ public class MeasureUnitTest extends TestFmwk {
// DO NOT DELETE THIS FUNCTION! It may appear as dead code, but we use this to generate code
// for MeasureFormat during the release process.
static void generateCXXHConstants(String thisVersion) {
Map<String, MeasureUnit> seen = new HashMap<String, MeasureUnit>();
Map<String, MeasureUnit> seen = new HashMap<>();
System.out.println();
TreeMap<String, List<MeasureUnit>> allUnits = getAllUnits();
for (Map.Entry<String, List<MeasureUnit>> entry : allUnits.entrySet()) {
@ -2249,8 +2249,9 @@ public class MeasureUnitTest extends TestFmwk {
System.out.println("#ifndef U_HIDE_DRAFT_API");
}
System.out.println(" /**");
System.out.println(" * Returns unit of " + type + ": " + code + ".");
System.out.println(" * Returns by pointer, unit of " + type + ": " + code + ".");
System.out.println(" * Caller owns returned value and must free it.");
System.out.printf(" * Also see {@link #get%s()}.\n", name);
System.out.println(" * @param status ICU error code.");
if (isDraft(javaName)) {
System.out.println(" * @draft ICU " + getVersion(javaName, thisVersion));
@ -2259,6 +2260,19 @@ public class MeasureUnitTest extends TestFmwk {
}
System.out.println(" */");
System.out.printf(" static MeasureUnit *create%s(UErrorCode &status);\n", name);
System.out.println();
System.out.println(" /**");
System.out.println(" * Returns by value, unit of " + type + ": " + code + ".");
System.out.printf(" * Also see {@link #create%s()}.\n", name);
// TODO: When the get* methods become stable in ICU 66, update their
// @draft code to be more like that for the create* methods above.
String getterVersion = getVersion(javaName, thisVersion);
if (Integer.valueOf(getterVersion) < 64) {
getterVersion = "64";
}
System.out.println(" * @draft ICU " + getterVersion);
System.out.println(" */");
System.out.printf(" static MeasureUnit get%s();\n", name);
if (isDraft(javaName)) {
System.out.println("#endif /* U_HIDE_DRAFT_API */");
}
@ -2280,7 +2294,7 @@ public class MeasureUnitTest extends TestFmwk {
// for MeasureFormat during the release process.
static void updateJAVAVersions(String thisVersion) {
System.out.println();
Map<String, MeasureUnit> seen = new HashMap<String, MeasureUnit>();
Map<String, MeasureUnit> seen = new HashMap<>();
TreeMap<String, List<MeasureUnit>> allUnits = getAllUnits();
for (Map.Entry<String, List<MeasureUnit>> entry : allUnits.entrySet()) {
String type = entry.getKey();
@ -2298,9 +2312,9 @@ public class MeasureUnitTest extends TestFmwk {
}
static TreeMap<String, List<MeasureUnit>> getAllUnits() {
TreeMap<String, List<MeasureUnit>> allUnits = new TreeMap<String, List<MeasureUnit>>();
TreeMap<String, List<MeasureUnit>> allUnits = new TreeMap<>();
for (String type : MeasureUnit.getAvailableTypes()) {
ArrayList<MeasureUnit> units = new ArrayList<MeasureUnit>(MeasureUnit.getAvailable(type));
ArrayList<MeasureUnit> units = new ArrayList<>(MeasureUnit.getAvailable(type));
Collections.sort(
units,
new Comparator<MeasureUnit>() {
@ -2366,9 +2380,9 @@ public class MeasureUnitTest extends TestFmwk {
first = true;
int offset = 0;
int typeIdx = 0;
Map<MeasureUnit, Integer> measureUnitToOffset = new HashMap<MeasureUnit, Integer>();
Map<MeasureUnit, Integer> measureUnitToOffset = new HashMap<>();
Map<MeasureUnit, Pair<Integer, Integer>> measureUnitToTypeSubType =
new HashMap<MeasureUnit, Pair<Integer, Integer>>();
new HashMap<>();
for (Map.Entry<String, List<MeasureUnit>> entry : allUnits.entrySet()) {
int subTypeIdx = 0;
for (MeasureUnit unit : entry.getValue()) {
@ -2395,7 +2409,7 @@ public class MeasureUnitTest extends TestFmwk {
// Build unit per unit offsets to corresponding type sub types sorted by
// unit first and then per unit.
TreeMap<OrderedPair<Integer, Integer>, Pair<Integer, Integer>> unitPerUnitOffsetsToTypeSubType
= new TreeMap<OrderedPair<Integer, Integer>, Pair<Integer, Integer>>();
= new TreeMap<>();
for (Map.Entry<MeasureUnit, Pair<MeasureUnit, MeasureUnit>> entry
: getUnitsToPerParts().entrySet()) {
Pair<MeasureUnit, MeasureUnit> unitPerUnit = entry.getValue();
@ -2433,7 +2447,7 @@ public class MeasureUnitTest extends TestFmwk {
System.out.println("static const int32_t kBaseSubTypeIdx = " + baseSubTypeIdx + ";");
System.out.println();
Map<String, MeasureUnit> seen = new HashMap<String, MeasureUnit>();
Map<String, MeasureUnit> seen = new HashMap<>();
for (Map.Entry<String, List<MeasureUnit>> entry : allUnits.entrySet()) {
String type = entry.getKey();
@ -2452,6 +2466,11 @@ public class MeasureUnitTest extends TestFmwk {
typeSubType.first, typeSubType.second);
System.out.println("}");
System.out.println();
System.out.printf("MeasureUnit MeasureUnit::get%s() {\n", name);
System.out.printf(" return MeasureUnit(%d, %d);\n",
typeSubType.first, typeSubType.second);
System.out.println("}");
System.out.println();
}
}
}
@ -2491,7 +2510,7 @@ public class MeasureUnitTest extends TestFmwk {
// DO NOT DELETE THIS FUNCTION! It may appear as dead code, but we use this to generate code
// for MeasureFormat during the release process.
static void generateBackwardCompatibilityTest(String version) {
Map<String, MeasureUnit> seen = new HashMap<String, MeasureUnit>();
Map<String, MeasureUnit> seen = new HashMap<>();
System.out.println();
System.out.printf(" public void TestCompatible%s() {\n", version.replace(".", "_"));
System.out.println(" MeasureUnit[] units = {");
@ -2517,10 +2536,11 @@ public class MeasureUnitTest extends TestFmwk {
// for MeasureFormat during the release process.
static void generateCXXBackwardCompatibilityTest(String version) {
System.out.println();
Map<String, MeasureUnit> seen = new HashMap<String, MeasureUnit>();
Map<String, MeasureUnit> seen = new HashMap<>();
System.out.printf("void MeasureFormatTest::TestCompatible%s() {\n", version.replace(".", "_"));
System.out.println(" UErrorCode status = U_ZERO_ERROR;");
System.out.println(" LocalPointer<MeasureUnit> measureUnit;");
System.out.println(" MeasureUnit measureUnitValue;");
TreeMap<String, List<MeasureUnit>> allUnits = getAllUnits();
for (Map.Entry<String, List<MeasureUnit>> entry : allUnits.entrySet()) {
if (isTypeHidden(entry.getKey())) {
@ -2530,6 +2550,7 @@ public class MeasureUnitTest extends TestFmwk {
String camelCase = toCamelCase(unit);
checkForDup(seen, camelCase, unit);
System.out.printf(" measureUnit.adoptInstead(MeasureUnit::create%s(status));\n", camelCase);
System.out.printf(" measureUnitValue = MeasureUnit::get%s();\n", camelCase);
}
}
System.out.println(" assertSuccess(\"\", status);");
@ -2560,7 +2581,7 @@ public class MeasureUnitTest extends TestFmwk {
// for MeasureFormat during the release process.
static void generateConstants(String thisVersion) {
System.out.println();
Map<String, MeasureUnit> seen = new HashMap<String, MeasureUnit>();
Map<String, MeasureUnit> seen = new HashMap<>();
TreeMap<String, List<MeasureUnit>> allUnits = getAllUnits();
for (Map.Entry<String, List<MeasureUnit>> entry : allUnits.entrySet()) {
String type = entry.getKey();