| Index: source/test/intltest/numberformattesttuple.cpp
|
| diff --git a/source/test/intltest/numberformattesttuple.cpp b/source/test/intltest/numberformattesttuple.cpp
|
| deleted file mode 100644
|
| index 366b893c67ac7a228ae68c40203501f047dbfa77..0000000000000000000000000000000000000000
|
| --- a/source/test/intltest/numberformattesttuple.cpp
|
| +++ /dev/null
|
| @@ -1,447 +0,0 @@
|
| -/*
|
| -*******************************************************************************
|
| -* Copyright (C) 2015, International Business Machines Corporation and *
|
| -* others. All Rights Reserved. *
|
| -*******************************************************************************
|
| -*/
|
| -
|
| -#include "numberformattesttuple.h"
|
| -
|
| -#if !UCONFIG_NO_FORMATTING
|
| -
|
| -#include "ustrfmt.h"
|
| -#include "charstr.h"
|
| -#include "cstring.h"
|
| -#include "cmemory.h"
|
| -#include "digitlst.h"
|
| -
|
| -static NumberFormatTestTuple *gNullPtr = NULL;
|
| -
|
| -#define FIELD_OFFSET(fieldName) ((int32_t) (((char *) &gNullPtr->fieldName) - ((char *) gNullPtr)))
|
| -#define FIELD_FLAG_OFFSET(fieldName) ((int32_t) (((char *) &gNullPtr->fieldName##Flag) - ((char *) gNullPtr)))
|
| -
|
| -#define FIELD_INIT(fieldName, fieldType) {#fieldName, FIELD_OFFSET(fieldName), FIELD_FLAG_OFFSET(fieldName), fieldType}
|
| -
|
| -struct Numberformattesttuple_EnumConversion {
|
| - const char *str;
|
| - int32_t value;
|
| -};
|
| -
|
| -static Numberformattesttuple_EnumConversion gRoundingEnum[] = {
|
| - {"ceiling", DecimalFormat::kRoundCeiling},
|
| - {"floor", DecimalFormat::kRoundFloor},
|
| - {"down", DecimalFormat::kRoundDown},
|
| - {"up", DecimalFormat::kRoundUp},
|
| - {"halfEven", DecimalFormat::kRoundHalfEven},
|
| - {"halfDown", DecimalFormat::kRoundHalfDown},
|
| - {"halfUp", DecimalFormat::kRoundHalfUp},
|
| - {"unnecessary", DecimalFormat::kRoundUnnecessary}};
|
| -
|
| -static Numberformattesttuple_EnumConversion gCurrencyUsageEnum[] = {
|
| - {"standard", UCURR_USAGE_STANDARD},
|
| - {"cash", UCURR_USAGE_CASH}};
|
| -
|
| -static Numberformattesttuple_EnumConversion gPadPositionEnum[] = {
|
| - {"beforePrefix", DecimalFormat::kPadBeforePrefix},
|
| - {"afterPrefix", DecimalFormat::kPadAfterPrefix},
|
| - {"beforeSuffix", DecimalFormat::kPadBeforeSuffix},
|
| - {"afterSuffix", DecimalFormat::kPadAfterSuffix}};
|
| -
|
| -static Numberformattesttuple_EnumConversion gFormatStyleEnum[] = {
|
| - {"patternDecimal", UNUM_PATTERN_DECIMAL},
|
| - {"decimal", UNUM_DECIMAL},
|
| - {"currency", UNUM_CURRENCY},
|
| - {"percent", UNUM_PERCENT},
|
| - {"scientific", UNUM_SCIENTIFIC},
|
| - {"spellout", UNUM_SPELLOUT},
|
| - {"ordinal", UNUM_ORDINAL},
|
| - {"duration", UNUM_DURATION},
|
| - {"numberingSystem", UNUM_NUMBERING_SYSTEM},
|
| - {"patternRuleBased", UNUM_PATTERN_RULEBASED},
|
| - {"currencyIso", UNUM_CURRENCY_ISO},
|
| - {"currencyPlural", UNUM_CURRENCY_PLURAL},
|
| - {"currencyAccounting", UNUM_CURRENCY_ACCOUNTING},
|
| - {"cashCurrency", UNUM_CASH_CURRENCY},
|
| - {"default", UNUM_DEFAULT},
|
| - {"ignore", UNUM_IGNORE}};
|
| -
|
| -static int32_t toEnum(
|
| - const Numberformattesttuple_EnumConversion *table,
|
| - int32_t tableLength,
|
| - const UnicodeString &str,
|
| - UErrorCode &status) {
|
| - if (U_FAILURE(status)) {
|
| - return 0;
|
| - }
|
| - CharString cstr;
|
| - cstr.appendInvariantChars(str, status);
|
| - if (U_FAILURE(status)) {
|
| - return 0;
|
| - }
|
| - for (int32_t i = 0; i < tableLength; ++i) {
|
| - if (uprv_strcmp(cstr.data(), table[i].str) == 0) {
|
| - return table[i].value;
|
| - }
|
| - }
|
| - status = U_ILLEGAL_ARGUMENT_ERROR;
|
| - return 0;
|
| -}
|
| -
|
| -static void fromEnum(
|
| - const Numberformattesttuple_EnumConversion *table,
|
| - int32_t tableLength,
|
| - int32_t val,
|
| - UnicodeString &appendTo) {
|
| - for (int32_t i = 0; i < tableLength; ++i) {
|
| - if (table[i].value == val) {
|
| - appendTo.append(table[i].str);
|
| - }
|
| - }
|
| -}
|
| -
|
| -static void identVal(
|
| - const UnicodeString &str, void *strPtr, UErrorCode & /*status*/) {
|
| - *static_cast<UnicodeString *>(strPtr) = str;
|
| -}
|
| -
|
| -static void identStr(
|
| - const void *strPtr, UnicodeString &appendTo) {
|
| - appendTo.append(*static_cast<const UnicodeString *>(strPtr));
|
| -}
|
| -
|
| -static void strToLocale(
|
| - const UnicodeString &str, void *localePtr, UErrorCode &status) {
|
| - if (U_FAILURE(status)) {
|
| - return;
|
| - }
|
| - CharString localeStr;
|
| - localeStr.appendInvariantChars(str, status);
|
| - *static_cast<Locale *>(localePtr) = Locale(localeStr.data());
|
| -}
|
| -
|
| -static void localeToStr(
|
| - const void *localePtr, UnicodeString &appendTo) {
|
| - appendTo.append(
|
| - UnicodeString(
|
| - static_cast<const Locale *>(localePtr)->getName()));
|
| -}
|
| -
|
| -static void strToInt(
|
| - const UnicodeString &str, void *intPtr, UErrorCode &status) {
|
| - if (U_FAILURE(status)) {
|
| - return;
|
| - }
|
| - int32_t len = str.length();
|
| - int32_t start = 0;
|
| - UBool neg = FALSE;
|
| - if (len > 0 && str[0] == 0x2D) { // negative
|
| - neg = TRUE;
|
| - start = 1;
|
| - }
|
| - if (start == len) {
|
| - status = U_ILLEGAL_ARGUMENT_ERROR;
|
| - return;
|
| - }
|
| - int32_t value = 0;
|
| - for (int32_t i = start; i < len; ++i) {
|
| - UChar ch = str[i];
|
| - if (ch < 0x30 || ch > 0x39) {
|
| - status = U_ILLEGAL_ARGUMENT_ERROR;
|
| - return;
|
| - }
|
| - value = value * 10 - 0x30 + (int32_t) ch;
|
| - }
|
| - if (neg) {
|
| - value = -value;
|
| - }
|
| - *static_cast<int32_t *>(intPtr) = value;
|
| -}
|
| -
|
| -static void intToStr(
|
| - const void *intPtr, UnicodeString &appendTo) {
|
| - UChar buffer[20];
|
| - int32_t x = *static_cast<const int32_t *>(intPtr);
|
| - UBool neg = FALSE;
|
| - if (x < 0) {
|
| - neg = TRUE;
|
| - x = -x;
|
| - }
|
| - if (neg) {
|
| - appendTo.append(0x2D);
|
| - }
|
| - int32_t len = uprv_itou(buffer, UPRV_LENGTHOF(buffer), (uint32_t) x, 10, 1);
|
| - appendTo.append(buffer, 0, len);
|
| -}
|
| -
|
| -static void strToDouble(
|
| - const UnicodeString &str, void *doublePtr, UErrorCode &status) {
|
| - if (U_FAILURE(status)) {
|
| - return;
|
| - }
|
| - CharString buffer;
|
| - buffer.appendInvariantChars(str, status);
|
| - if (U_FAILURE(status)) {
|
| - return;
|
| - }
|
| - *static_cast<double *>(doublePtr) = atof(buffer.data());
|
| -}
|
| -
|
| -static void doubleToStr(
|
| - const void *doublePtr, UnicodeString &appendTo) {
|
| - char buffer[256];
|
| - double x = *static_cast<const double *>(doublePtr);
|
| - sprintf(buffer, "%f", x);
|
| - appendTo.append(buffer);
|
| -}
|
| -
|
| -static void strToERounding(
|
| - const UnicodeString &str, void *roundPtr, UErrorCode &status) {
|
| - int32_t val = toEnum(
|
| - gRoundingEnum, UPRV_LENGTHOF(gRoundingEnum), str, status);
|
| - *static_cast<DecimalFormat::ERoundingMode *>(roundPtr) = (DecimalFormat::ERoundingMode) val;
|
| -}
|
| -
|
| -static void eRoundingToStr(
|
| - const void *roundPtr, UnicodeString &appendTo) {
|
| - DecimalFormat::ERoundingMode rounding =
|
| - *static_cast<const DecimalFormat::ERoundingMode *>(roundPtr);
|
| - fromEnum(
|
| - gRoundingEnum,
|
| - UPRV_LENGTHOF(gRoundingEnum),
|
| - rounding,
|
| - appendTo);
|
| -}
|
| -
|
| -static void strToCurrencyUsage(
|
| - const UnicodeString &str, void *currencyUsagePtr, UErrorCode &status) {
|
| - int32_t val = toEnum(
|
| - gCurrencyUsageEnum, UPRV_LENGTHOF(gCurrencyUsageEnum), str, status);
|
| - *static_cast<UCurrencyUsage *>(currencyUsagePtr) = (UCurrencyUsage) val;
|
| -}
|
| -
|
| -static void currencyUsageToStr(
|
| - const void *currencyUsagePtr, UnicodeString &appendTo) {
|
| - UCurrencyUsage currencyUsage =
|
| - *static_cast<const UCurrencyUsage *>(currencyUsagePtr);
|
| - fromEnum(
|
| - gCurrencyUsageEnum,
|
| - UPRV_LENGTHOF(gCurrencyUsageEnum),
|
| - currencyUsage,
|
| - appendTo);
|
| -}
|
| -
|
| -static void strToEPadPosition(
|
| - const UnicodeString &str, void *padPositionPtr, UErrorCode &status) {
|
| - int32_t val = toEnum(
|
| - gPadPositionEnum, UPRV_LENGTHOF(gPadPositionEnum), str, status);
|
| - *static_cast<DecimalFormat::EPadPosition *>(padPositionPtr) =
|
| - (DecimalFormat::EPadPosition) val;
|
| -}
|
| -
|
| -static void ePadPositionToStr(
|
| - const void *padPositionPtr, UnicodeString &appendTo) {
|
| - DecimalFormat::EPadPosition padPosition =
|
| - *static_cast<const DecimalFormat::EPadPosition *>(padPositionPtr);
|
| - fromEnum(
|
| - gPadPositionEnum,
|
| - UPRV_LENGTHOF(gPadPositionEnum),
|
| - padPosition,
|
| - appendTo);
|
| -}
|
| -
|
| -static void strToFormatStyle(
|
| - const UnicodeString &str, void *formatStylePtr, UErrorCode &status) {
|
| - int32_t val = toEnum(
|
| - gFormatStyleEnum, UPRV_LENGTHOF(gFormatStyleEnum), str, status);
|
| - *static_cast<UNumberFormatStyle *>(formatStylePtr) = (UNumberFormatStyle) val;
|
| -}
|
| -
|
| -static void formatStyleToStr(
|
| - const void *formatStylePtr, UnicodeString &appendTo) {
|
| - UNumberFormatStyle formatStyle =
|
| - *static_cast<const UNumberFormatStyle *>(formatStylePtr);
|
| - fromEnum(
|
| - gFormatStyleEnum,
|
| - UPRV_LENGTHOF(gFormatStyleEnum),
|
| - formatStyle,
|
| - appendTo);
|
| -}
|
| -
|
| -struct NumberFormatTestTupleFieldOps {
|
| - void (*toValue)(const UnicodeString &str, void *valPtr, UErrorCode &);
|
| - void (*toString)(const void *valPtr, UnicodeString &appendTo);
|
| -};
|
| -
|
| -const NumberFormatTestTupleFieldOps gStrOps = {identVal, identStr};
|
| -const NumberFormatTestTupleFieldOps gIntOps = {strToInt, intToStr};
|
| -const NumberFormatTestTupleFieldOps gLocaleOps = {strToLocale, localeToStr};
|
| -const NumberFormatTestTupleFieldOps gDoubleOps = {strToDouble, doubleToStr};
|
| -const NumberFormatTestTupleFieldOps gERoundingOps = {strToERounding, eRoundingToStr};
|
| -const NumberFormatTestTupleFieldOps gCurrencyUsageOps = {strToCurrencyUsage, currencyUsageToStr};
|
| -const NumberFormatTestTupleFieldOps gEPadPositionOps = {strToEPadPosition, ePadPositionToStr};
|
| -const NumberFormatTestTupleFieldOps gFormatStyleOps = {strToFormatStyle, formatStyleToStr};
|
| -
|
| -struct NumberFormatTestTupleFieldData {
|
| - const char *name;
|
| - int32_t offset;
|
| - int32_t flagOffset;
|
| - const NumberFormatTestTupleFieldOps *ops;
|
| -};
|
| -
|
| -// Order must correspond to ENumberFormatTestTupleField
|
| -const NumberFormatTestTupleFieldData gFieldData[] = {
|
| - FIELD_INIT(locale, &gLocaleOps),
|
| - FIELD_INIT(currency, &gStrOps),
|
| - FIELD_INIT(pattern, &gStrOps),
|
| - FIELD_INIT(format, &gStrOps),
|
| - FIELD_INIT(output, &gStrOps),
|
| - FIELD_INIT(comment, &gStrOps),
|
| - FIELD_INIT(minIntegerDigits, &gIntOps),
|
| - FIELD_INIT(maxIntegerDigits, &gIntOps),
|
| - FIELD_INIT(minFractionDigits, &gIntOps),
|
| - FIELD_INIT(maxFractionDigits, &gIntOps),
|
| - FIELD_INIT(minGroupingDigits, &gIntOps),
|
| - FIELD_INIT(breaks, &gStrOps),
|
| - FIELD_INIT(useSigDigits, &gIntOps),
|
| - FIELD_INIT(minSigDigits, &gIntOps),
|
| - FIELD_INIT(maxSigDigits, &gIntOps),
|
| - FIELD_INIT(useGrouping, &gIntOps),
|
| - FIELD_INIT(multiplier, &gIntOps),
|
| - FIELD_INIT(roundingIncrement, &gDoubleOps),
|
| - FIELD_INIT(formatWidth, &gIntOps),
|
| - FIELD_INIT(padCharacter, &gStrOps),
|
| - FIELD_INIT(useScientific, &gIntOps),
|
| - FIELD_INIT(grouping, &gIntOps),
|
| - FIELD_INIT(grouping2, &gIntOps),
|
| - FIELD_INIT(roundingMode, &gERoundingOps),
|
| - FIELD_INIT(currencyUsage, &gCurrencyUsageOps),
|
| - FIELD_INIT(minimumExponentDigits, &gIntOps),
|
| - FIELD_INIT(exponentSignAlwaysShown, &gIntOps),
|
| - FIELD_INIT(decimalSeparatorAlwaysShown, &gIntOps),
|
| - FIELD_INIT(padPosition, &gEPadPositionOps),
|
| - FIELD_INIT(positivePrefix, &gStrOps),
|
| - FIELD_INIT(positiveSuffix, &gStrOps),
|
| - FIELD_INIT(negativePrefix, &gStrOps),
|
| - FIELD_INIT(negativeSuffix, &gStrOps),
|
| - FIELD_INIT(localizedPattern, &gStrOps),
|
| - FIELD_INIT(toPattern, &gStrOps),
|
| - FIELD_INIT(toLocalizedPattern, &gStrOps),
|
| - FIELD_INIT(style, &gFormatStyleOps),
|
| - FIELD_INIT(parse, &gStrOps),
|
| - FIELD_INIT(lenient, &gIntOps),
|
| - FIELD_INIT(plural, &gStrOps),
|
| - FIELD_INIT(parseIntegerOnly, &gIntOps),
|
| - FIELD_INIT(decimalPatternMatchRequired, &gIntOps),
|
| - FIELD_INIT(parseNoExponent, &gIntOps),
|
| - FIELD_INIT(outputCurrency, &gStrOps)
|
| -};
|
| -
|
| -UBool
|
| -NumberFormatTestTuple::setField(
|
| - ENumberFormatTestTupleField fieldId,
|
| - const UnicodeString &fieldValue,
|
| - UErrorCode &status) {
|
| - if (U_FAILURE(status)) {
|
| - return FALSE;
|
| - }
|
| - if (fieldId == kNumberFormatTestTupleFieldCount) {
|
| - status = U_ILLEGAL_ARGUMENT_ERROR;
|
| - return FALSE;
|
| - }
|
| - gFieldData[fieldId].ops->toValue(
|
| - fieldValue, getMutableFieldAddress(fieldId), status);
|
| - if (U_FAILURE(status)) {
|
| - return FALSE;
|
| - }
|
| - setFlag(fieldId, TRUE);
|
| - return TRUE;
|
| -}
|
| -
|
| -UBool
|
| -NumberFormatTestTuple::clearField(
|
| - ENumberFormatTestTupleField fieldId,
|
| - UErrorCode &status) {
|
| - if (U_FAILURE(status)) {
|
| - return FALSE;
|
| - }
|
| - if (fieldId == kNumberFormatTestTupleFieldCount) {
|
| - status = U_ILLEGAL_ARGUMENT_ERROR;
|
| - return FALSE;
|
| - }
|
| - setFlag(fieldId, FALSE);
|
| - return TRUE;
|
| -}
|
| -
|
| -void
|
| -NumberFormatTestTuple::clear() {
|
| - for (int32_t i = 0; i < kNumberFormatTestTupleFieldCount; ++i) {
|
| - setFlag(i, FALSE);
|
| - }
|
| -}
|
| -
|
| -UnicodeString &
|
| -NumberFormatTestTuple::toString(
|
| - UnicodeString &appendTo) const {
|
| - appendTo.append("{");
|
| - UBool first = TRUE;
|
| - for (int32_t i = 0; i < kNumberFormatTestTupleFieldCount; ++i) {
|
| - if (!isFlag(i)) {
|
| - continue;
|
| - }
|
| - if (!first) {
|
| - appendTo.append(", ");
|
| - }
|
| - first = FALSE;
|
| - appendTo.append(gFieldData[i].name);
|
| - appendTo.append(": ");
|
| - gFieldData[i].ops->toString(getFieldAddress(i), appendTo);
|
| - }
|
| - appendTo.append("}");
|
| - return appendTo;
|
| -}
|
| -
|
| -ENumberFormatTestTupleField
|
| -NumberFormatTestTuple::getFieldByName(
|
| - const UnicodeString &name) {
|
| - CharString buffer;
|
| - UErrorCode status = U_ZERO_ERROR;
|
| - buffer.appendInvariantChars(name, status);
|
| - if (U_FAILURE(status)) {
|
| - return kNumberFormatTestTupleFieldCount;
|
| - }
|
| - int32_t result = -1;
|
| - for (int32_t i = 0; i < UPRV_LENGTHOF(gFieldData); ++i) {
|
| - if (uprv_strcmp(gFieldData[i].name, buffer.data()) == 0) {
|
| - result = i;
|
| - break;
|
| - }
|
| - }
|
| - if (result == -1) {
|
| - return kNumberFormatTestTupleFieldCount;
|
| - }
|
| - return (ENumberFormatTestTupleField) result;
|
| -}
|
| -
|
| -const void *
|
| -NumberFormatTestTuple::getFieldAddress(int32_t fieldId) const {
|
| - return reinterpret_cast<const char *>(this) + gFieldData[fieldId].offset;
|
| -}
|
| -
|
| -void *
|
| -NumberFormatTestTuple::getMutableFieldAddress(int32_t fieldId) {
|
| - return reinterpret_cast<char *>(this) + gFieldData[fieldId].offset;
|
| -}
|
| -
|
| -void
|
| -NumberFormatTestTuple::setFlag(int32_t fieldId, UBool value) {
|
| - void *flagAddr = reinterpret_cast<char *>(this) + gFieldData[fieldId].flagOffset;
|
| - *static_cast<UBool *>(flagAddr) = value;
|
| -}
|
| -
|
| -UBool
|
| -NumberFormatTestTuple::isFlag(int32_t fieldId) const {
|
| - const void *flagAddr = reinterpret_cast<const char *>(this) + gFieldData[fieldId].flagOffset;
|
| - return *static_cast<const UBool *>(flagAddr);
|
| -}
|
| -
|
| -#endif /* !UCONFIG_NO_FORMATTING */
|
|
|