| OLD | NEW |
| (Empty) |
| 1 /* | |
| 2 ******************************************************************************* | |
| 3 * Copyright (C) 2015, International Business Machines Corporation and * | |
| 4 * others. All Rights Reserved. * | |
| 5 ******************************************************************************* | |
| 6 */ | |
| 7 #ifndef _NUMBER_FORMAT_TEST_TUPLE | |
| 8 #define _NUMBER_FORMAT_TEST_TUPLE | |
| 9 | |
| 10 #include "unicode/utypes.h" | |
| 11 | |
| 12 #if !UCONFIG_NO_FORMATTING | |
| 13 | |
| 14 #include "decimalformatpattern.h" | |
| 15 #include "unicode/decimfmt.h" | |
| 16 #include "unicode/ucurr.h" | |
| 17 | |
| 18 #define NFTT_GET_FIELD(tuple, fieldName, defaultValue) ((tuple).fieldName##Flag
? (tuple).fieldName : (defaultValue)) | |
| 19 | |
| 20 U_NAMESPACE_USE | |
| 21 | |
| 22 enum ENumberFormatTestTupleField { | |
| 23 kLocale, | |
| 24 kCurrency, | |
| 25 kPattern, | |
| 26 kFormat, | |
| 27 kOutput, | |
| 28 kComment, | |
| 29 kMinIntegerDigits, | |
| 30 kMaxIntegerDigits, | |
| 31 kMinFractionDigits, | |
| 32 kMaxFractionDigits, | |
| 33 kMinGroupingDigits, | |
| 34 kBreaks, | |
| 35 kUseSigDigits, | |
| 36 kMinSigDigits, | |
| 37 kMaxSigDigits, | |
| 38 kUseGrouping, | |
| 39 kMultiplier, | |
| 40 kRoundingIncrement, | |
| 41 kFormatWidth, | |
| 42 kPadCharacter, | |
| 43 kUseScientific, | |
| 44 kGrouping, | |
| 45 kGrouping2, | |
| 46 kRoundingMode, | |
| 47 kCurrencyUsage, | |
| 48 kMinimumExponentDigits, | |
| 49 kExponentSignAlwaysShown, | |
| 50 kDecimalSeparatorAlwaysShown, | |
| 51 kPadPosition, | |
| 52 kPositivePrefix, | |
| 53 kPositiveSuffix, | |
| 54 kNegativePrefix, | |
| 55 kNegativeSuffix, | |
| 56 kLocalizedPattern, | |
| 57 kToPattern, | |
| 58 kToLocalizedPattern, | |
| 59 kStyle, | |
| 60 kParse, | |
| 61 kLenient, | |
| 62 kPlural, | |
| 63 kParseIntegerOnly, | |
| 64 kDecimalPatternMatchRequired, | |
| 65 kParseNoExponent, | |
| 66 kOutputCurrency, | |
| 67 kNumberFormatTestTupleFieldCount | |
| 68 }; | |
| 69 | |
| 70 /** | |
| 71 * NumberFormatTestTuple represents the data for a single data driven test. | |
| 72 * It consist of named fields each of which may or may not be set. Each field | |
| 73 * has a particular meaning in the test. For more information on what each | |
| 74 * field means and how the data drive tests work, please see | |
| 75 * https://docs.google.com/document/d/1T2P0p953_Lh1pRwo-5CuPVrHlIBa_wcXElG-Hhg_W
HM/edit?usp=sharing | |
| 76 * Each field is optional. That is, a certain field may be unset for a given | |
| 77 * test. The UBool fields ending in "Flag" indicate whether the corrresponding | |
| 78 * field is set or not. TRUE means set; FALSE means unset. An unset field | |
| 79 * generally means that the corresponding setter method is not called on | |
| 80 * the NumberFormat object. | |
| 81 */ | |
| 82 | |
| 83 class NumberFormatTestTuple { | |
| 84 public: | |
| 85 Locale locale; | |
| 86 UnicodeString currency; | |
| 87 UnicodeString pattern; | |
| 88 UnicodeString format; | |
| 89 UnicodeString output; | |
| 90 UnicodeString comment; | |
| 91 int32_t minIntegerDigits; | |
| 92 int32_t maxIntegerDigits; | |
| 93 int32_t minFractionDigits; | |
| 94 int32_t maxFractionDigits; | |
| 95 int32_t minGroupingDigits; | |
| 96 UnicodeString breaks; | |
| 97 int32_t useSigDigits; | |
| 98 int32_t minSigDigits; | |
| 99 int32_t maxSigDigits; | |
| 100 int32_t useGrouping; | |
| 101 int32_t multiplier; | |
| 102 double roundingIncrement; | |
| 103 int32_t formatWidth; | |
| 104 UnicodeString padCharacter; | |
| 105 int32_t useScientific; | |
| 106 int32_t grouping; | |
| 107 int32_t grouping2; | |
| 108 DecimalFormat::ERoundingMode roundingMode; | |
| 109 UCurrencyUsage currencyUsage; | |
| 110 int32_t minimumExponentDigits; | |
| 111 int32_t exponentSignAlwaysShown; | |
| 112 int32_t decimalSeparatorAlwaysShown; | |
| 113 DecimalFormat::EPadPosition padPosition; | |
| 114 UnicodeString positivePrefix; | |
| 115 UnicodeString positiveSuffix; | |
| 116 UnicodeString negativePrefix; | |
| 117 UnicodeString negativeSuffix; | |
| 118 UnicodeString localizedPattern; | |
| 119 UnicodeString toPattern; | |
| 120 UnicodeString toLocalizedPattern; | |
| 121 UNumberFormatStyle style; | |
| 122 UnicodeString parse; | |
| 123 int32_t lenient; | |
| 124 UnicodeString plural; | |
| 125 int32_t parseIntegerOnly; | |
| 126 int32_t decimalPatternMatchRequired; | |
| 127 int32_t parseNoExponent; | |
| 128 UnicodeString outputCurrency; | |
| 129 | |
| 130 UBool localeFlag; | |
| 131 UBool currencyFlag; | |
| 132 UBool patternFlag; | |
| 133 UBool formatFlag; | |
| 134 UBool outputFlag; | |
| 135 UBool commentFlag; | |
| 136 UBool minIntegerDigitsFlag; | |
| 137 UBool maxIntegerDigitsFlag; | |
| 138 UBool minFractionDigitsFlag; | |
| 139 UBool maxFractionDigitsFlag; | |
| 140 UBool minGroupingDigitsFlag; | |
| 141 UBool breaksFlag; | |
| 142 UBool useSigDigitsFlag; | |
| 143 UBool minSigDigitsFlag; | |
| 144 UBool maxSigDigitsFlag; | |
| 145 UBool useGroupingFlag; | |
| 146 UBool multiplierFlag; | |
| 147 UBool roundingIncrementFlag; | |
| 148 UBool formatWidthFlag; | |
| 149 UBool padCharacterFlag; | |
| 150 UBool useScientificFlag; | |
| 151 UBool groupingFlag; | |
| 152 UBool grouping2Flag; | |
| 153 UBool roundingModeFlag; | |
| 154 UBool currencyUsageFlag; | |
| 155 UBool minimumExponentDigitsFlag; | |
| 156 UBool exponentSignAlwaysShownFlag; | |
| 157 UBool decimalSeparatorAlwaysShownFlag; | |
| 158 UBool padPositionFlag; | |
| 159 UBool positivePrefixFlag; | |
| 160 UBool positiveSuffixFlag; | |
| 161 UBool negativePrefixFlag; | |
| 162 UBool negativeSuffixFlag; | |
| 163 UBool localizedPatternFlag; | |
| 164 UBool toPatternFlag; | |
| 165 UBool toLocalizedPatternFlag; | |
| 166 UBool styleFlag; | |
| 167 UBool parseFlag; | |
| 168 UBool lenientFlag; | |
| 169 UBool pluralFlag; | |
| 170 UBool parseIntegerOnlyFlag; | |
| 171 UBool decimalPatternMatchRequiredFlag; | |
| 172 UBool parseNoExponentFlag; | |
| 173 UBool outputCurrencyFlag; | |
| 174 | |
| 175 NumberFormatTestTuple() { | |
| 176 clear(); | |
| 177 } | |
| 178 | |
| 179 /** | |
| 180 * Sets a particular field using the string representation of that field. | |
| 181 * @param field the field to set. | |
| 182 * @param fieldValue the string representation of the field value. | |
| 183 * @param status error returned here such as when the string representation | |
| 184 * of the field value cannot be parsed. | |
| 185 * @return TRUE on success or FALSE if an error was set in status. | |
| 186 */ | |
| 187 UBool setField( | |
| 188 ENumberFormatTestTupleField field, | |
| 189 const UnicodeString &fieldValue, | |
| 190 UErrorCode &status); | |
| 191 /** | |
| 192 * Clears a particular field. | |
| 193 * @param field the field to clear. | |
| 194 * @param status error set here. | |
| 195 * @return TRUE on success or FALSE if error was set. | |
| 196 */ | |
| 197 UBool clearField( | |
| 198 ENumberFormatTestTupleField field, | |
| 199 UErrorCode &status); | |
| 200 /** | |
| 201 * Clears every field. | |
| 202 */ | |
| 203 void clear(); | |
| 204 | |
| 205 /** | |
| 206 * Returns the string representation of the test case this object | |
| 207 * currently represents. | |
| 208 * @param appendTo the result appended here. | |
| 209 * @return appendTo | |
| 210 */ | |
| 211 UnicodeString &toString(UnicodeString &appendTo) const; | |
| 212 | |
| 213 /** | |
| 214 * Converts the name of a field to the corresponding enum value. | |
| 215 * @param name the name of the field as a string. | |
| 216 * @return the corresponding enum value or kNumberFormatTestFieldCount | |
| 217 * if name does not map to any recognized field name. | |
| 218 */ | |
| 219 static ENumberFormatTestTupleField getFieldByName(const UnicodeString &name)
; | |
| 220 private: | |
| 221 const void *getFieldAddress(int32_t fieldId) const; | |
| 222 void *getMutableFieldAddress(int32_t fieldId); | |
| 223 void setFlag(int32_t fieldId, UBool value); | |
| 224 UBool isFlag(int32_t fieldId) const; | |
| 225 }; | |
| 226 | |
| 227 #endif /* !UCONFIG_NO_FORMATTING */ | |
| 228 #endif | |
| OLD | NEW |