| Index: source/test/intltest/numberformattesttuple.h
|
| diff --git a/source/test/intltest/numberformattesttuple.h b/source/test/intltest/numberformattesttuple.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..4af44b9d6ac1a6d5987d91486867995f972008ee
|
| --- /dev/null
|
| +++ b/source/test/intltest/numberformattesttuple.h
|
| @@ -0,0 +1,228 @@
|
| +/*
|
| +*******************************************************************************
|
| +* Copyright (C) 2015, International Business Machines Corporation and *
|
| +* others. All Rights Reserved. *
|
| +*******************************************************************************
|
| +*/
|
| +#ifndef _NUMBER_FORMAT_TEST_TUPLE
|
| +#define _NUMBER_FORMAT_TEST_TUPLE
|
| +
|
| +#include "unicode/utypes.h"
|
| +
|
| +#if !UCONFIG_NO_FORMATTING
|
| +
|
| +#include "decimalformatpattern.h"
|
| +#include "unicode/decimfmt.h"
|
| +#include "unicode/ucurr.h"
|
| +
|
| +#define NFTT_GET_FIELD(tuple, fieldName, defaultValue) ((tuple).fieldName##Flag ? (tuple).fieldName : (defaultValue))
|
| +
|
| +U_NAMESPACE_USE
|
| +
|
| +enum ENumberFormatTestTupleField {
|
| + kLocale,
|
| + kCurrency,
|
| + kPattern,
|
| + kFormat,
|
| + kOutput,
|
| + kComment,
|
| + kMinIntegerDigits,
|
| + kMaxIntegerDigits,
|
| + kMinFractionDigits,
|
| + kMaxFractionDigits,
|
| + kMinGroupingDigits,
|
| + kBreaks,
|
| + kUseSigDigits,
|
| + kMinSigDigits,
|
| + kMaxSigDigits,
|
| + kUseGrouping,
|
| + kMultiplier,
|
| + kRoundingIncrement,
|
| + kFormatWidth,
|
| + kPadCharacter,
|
| + kUseScientific,
|
| + kGrouping,
|
| + kGrouping2,
|
| + kRoundingMode,
|
| + kCurrencyUsage,
|
| + kMinimumExponentDigits,
|
| + kExponentSignAlwaysShown,
|
| + kDecimalSeparatorAlwaysShown,
|
| + kPadPosition,
|
| + kPositivePrefix,
|
| + kPositiveSuffix,
|
| + kNegativePrefix,
|
| + kNegativeSuffix,
|
| + kLocalizedPattern,
|
| + kToPattern,
|
| + kToLocalizedPattern,
|
| + kStyle,
|
| + kParse,
|
| + kLenient,
|
| + kPlural,
|
| + kParseIntegerOnly,
|
| + kDecimalPatternMatchRequired,
|
| + kParseNoExponent,
|
| + kOutputCurrency,
|
| + kNumberFormatTestTupleFieldCount
|
| +};
|
| +
|
| +/**
|
| + * NumberFormatTestTuple represents the data for a single data driven test.
|
| + * It consist of named fields each of which may or may not be set. Each field
|
| + * has a particular meaning in the test. For more information on what each
|
| + * field means and how the data drive tests work, please see
|
| + * https://docs.google.com/document/d/1T2P0p953_Lh1pRwo-5CuPVrHlIBa_wcXElG-Hhg_WHM/edit?usp=sharing
|
| + * Each field is optional. That is, a certain field may be unset for a given
|
| + * test. The UBool fields ending in "Flag" indicate whether the corrresponding
|
| + * field is set or not. TRUE means set; FALSE means unset. An unset field
|
| + * generally means that the corresponding setter method is not called on
|
| + * the NumberFormat object.
|
| + */
|
| +
|
| +class NumberFormatTestTuple {
|
| +public:
|
| + Locale locale;
|
| + UnicodeString currency;
|
| + UnicodeString pattern;
|
| + UnicodeString format;
|
| + UnicodeString output;
|
| + UnicodeString comment;
|
| + int32_t minIntegerDigits;
|
| + int32_t maxIntegerDigits;
|
| + int32_t minFractionDigits;
|
| + int32_t maxFractionDigits;
|
| + int32_t minGroupingDigits;
|
| + UnicodeString breaks;
|
| + int32_t useSigDigits;
|
| + int32_t minSigDigits;
|
| + int32_t maxSigDigits;
|
| + int32_t useGrouping;
|
| + int32_t multiplier;
|
| + double roundingIncrement;
|
| + int32_t formatWidth;
|
| + UnicodeString padCharacter;
|
| + int32_t useScientific;
|
| + int32_t grouping;
|
| + int32_t grouping2;
|
| + DecimalFormat::ERoundingMode roundingMode;
|
| + UCurrencyUsage currencyUsage;
|
| + int32_t minimumExponentDigits;
|
| + int32_t exponentSignAlwaysShown;
|
| + int32_t decimalSeparatorAlwaysShown;
|
| + DecimalFormat::EPadPosition padPosition;
|
| + UnicodeString positivePrefix;
|
| + UnicodeString positiveSuffix;
|
| + UnicodeString negativePrefix;
|
| + UnicodeString negativeSuffix;
|
| + UnicodeString localizedPattern;
|
| + UnicodeString toPattern;
|
| + UnicodeString toLocalizedPattern;
|
| + UNumberFormatStyle style;
|
| + UnicodeString parse;
|
| + int32_t lenient;
|
| + UnicodeString plural;
|
| + int32_t parseIntegerOnly;
|
| + int32_t decimalPatternMatchRequired;
|
| + int32_t parseNoExponent;
|
| + UnicodeString outputCurrency;
|
| +
|
| + UBool localeFlag;
|
| + UBool currencyFlag;
|
| + UBool patternFlag;
|
| + UBool formatFlag;
|
| + UBool outputFlag;
|
| + UBool commentFlag;
|
| + UBool minIntegerDigitsFlag;
|
| + UBool maxIntegerDigitsFlag;
|
| + UBool minFractionDigitsFlag;
|
| + UBool maxFractionDigitsFlag;
|
| + UBool minGroupingDigitsFlag;
|
| + UBool breaksFlag;
|
| + UBool useSigDigitsFlag;
|
| + UBool minSigDigitsFlag;
|
| + UBool maxSigDigitsFlag;
|
| + UBool useGroupingFlag;
|
| + UBool multiplierFlag;
|
| + UBool roundingIncrementFlag;
|
| + UBool formatWidthFlag;
|
| + UBool padCharacterFlag;
|
| + UBool useScientificFlag;
|
| + UBool groupingFlag;
|
| + UBool grouping2Flag;
|
| + UBool roundingModeFlag;
|
| + UBool currencyUsageFlag;
|
| + UBool minimumExponentDigitsFlag;
|
| + UBool exponentSignAlwaysShownFlag;
|
| + UBool decimalSeparatorAlwaysShownFlag;
|
| + UBool padPositionFlag;
|
| + UBool positivePrefixFlag;
|
| + UBool positiveSuffixFlag;
|
| + UBool negativePrefixFlag;
|
| + UBool negativeSuffixFlag;
|
| + UBool localizedPatternFlag;
|
| + UBool toPatternFlag;
|
| + UBool toLocalizedPatternFlag;
|
| + UBool styleFlag;
|
| + UBool parseFlag;
|
| + UBool lenientFlag;
|
| + UBool pluralFlag;
|
| + UBool parseIntegerOnlyFlag;
|
| + UBool decimalPatternMatchRequiredFlag;
|
| + UBool parseNoExponentFlag;
|
| + UBool outputCurrencyFlag;
|
| +
|
| + NumberFormatTestTuple() {
|
| + clear();
|
| + }
|
| +
|
| + /**
|
| + * Sets a particular field using the string representation of that field.
|
| + * @param field the field to set.
|
| + * @param fieldValue the string representation of the field value.
|
| + * @param status error returned here such as when the string representation
|
| + * of the field value cannot be parsed.
|
| + * @return TRUE on success or FALSE if an error was set in status.
|
| + */
|
| + UBool setField(
|
| + ENumberFormatTestTupleField field,
|
| + const UnicodeString &fieldValue,
|
| + UErrorCode &status);
|
| + /**
|
| + * Clears a particular field.
|
| + * @param field the field to clear.
|
| + * @param status error set here.
|
| + * @return TRUE on success or FALSE if error was set.
|
| + */
|
| + UBool clearField(
|
| + ENumberFormatTestTupleField field,
|
| + UErrorCode &status);
|
| + /**
|
| + * Clears every field.
|
| + */
|
| + void clear();
|
| +
|
| + /**
|
| + * Returns the string representation of the test case this object
|
| + * currently represents.
|
| + * @param appendTo the result appended here.
|
| + * @return appendTo
|
| + */
|
| + UnicodeString &toString(UnicodeString &appendTo) const;
|
| +
|
| + /**
|
| + * Converts the name of a field to the corresponding enum value.
|
| + * @param name the name of the field as a string.
|
| + * @return the corresponding enum value or kNumberFormatTestFieldCount
|
| + * if name does not map to any recognized field name.
|
| + */
|
| + static ENumberFormatTestTupleField getFieldByName(const UnicodeString &name);
|
| +private:
|
| + const void *getFieldAddress(int32_t fieldId) const;
|
| + void *getMutableFieldAddress(int32_t fieldId);
|
| + void setFlag(int32_t fieldId, UBool value);
|
| + UBool isFlag(int32_t fieldId) const;
|
| +};
|
| +
|
| +#endif /* !UCONFIG_NO_FORMATTING */
|
| +#endif
|
|
|