} // namespace
-MeasureUnit MeasureUnit::forIdentifier(const char* identifier, UErrorCode& status) {
+MeasureUnit MeasureUnit::forIdentifier(StringPiece identifier, UErrorCode& status) {
return Parser::from(identifier, status).getOnlySequenceUnit(status).build(status);
}
* @param status Set if the identifier is invalid.
* @draft ICU 67
*/
- static MeasureUnit forIdentifier(const char* identifier, UErrorCode& status);
+ static MeasureUnit forIdentifier(StringPiece identifier, UErrorCode& status);
/**
* Copy assignment operator.
meterSecond.withSIPrefix(UMEASURE_SI_PREFIX_CENTI, status);
status.expectErrorAndReset(U_ILLEGAL_ARGUMENT_ERROR);
+ // Test that StringPiece does not overflow
+ MeasureUnit kiloSquareSecond2 = MeasureUnit::forIdentifier({secondCentimeter.getIdentifier(), 17}, status);
+ verifySingleUnit(kiloSquareSecond2, UMEASURE_SI_PREFIX_KILO, 2, "square-kilosecond");
+ assertTrue("string piece equality", kiloSquareSecond == kiloSquareSecond2);
+
MeasureUnit footInch = MeasureUnit::forIdentifier("foot+inch", status);
MeasureUnit inchFoot = MeasureUnit::forIdentifier("inch+foot", status);