1c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott/******************************************************************** 2c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott * COPYRIGHT: 3c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott * Copyright (c) 1997-2009, International Business Machines Corporation and 4c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott * others. All Rights Reserved. 5c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ********************************************************************/ 6c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 7c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#include "unicode/utypes.h" 8c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 9c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#if !UCONFIG_NO_FORMATTING 10c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 11c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#include "unicode/dcfmtsym.h" 12c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#include "unicode/decimfmt.h" 13c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#include "unicode/unum.h" 14c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#include "tsdcfmsy.h" 15c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 16c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottvoid IntlTestDecimalFormatSymbols::runIndexedTest( int32_t index, UBool exec, const char* &name, char* /*par*/ ) 17c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott{ 18c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if (exec) logln("TestSuite DecimalFormatSymbols"); 19c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott switch (index) { 20c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case 0: name = "DecimalFormatSymbols test"; 21c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if (exec) { 22c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott logln("DecimalFormatSymbols test---"); logln(""); 23c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott testSymbols(/*par*/); 24c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott } 25c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott break; 26c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 27c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott default: name = ""; break; 28c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott } 29c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott} 30c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 31c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott/** 32c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott * Test the API of DecimalFormatSymbols; primarily a simple get/set set. 33c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott */ 34c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottvoid IntlTestDecimalFormatSymbols::testSymbols(/* char *par */) 35c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott{ 36c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott UErrorCode status = U_ZERO_ERROR; 37c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 38c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott DecimalFormatSymbols fr(Locale::getFrench(), status); 39c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if(U_FAILURE(status)) { 40c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott errcheckln(status, "ERROR: Couldn't create French DecimalFormatSymbols - %s", u_errorName(status)); 41c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott return; 42c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott } 43c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 44c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott status = U_ZERO_ERROR; 45c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott DecimalFormatSymbols en(Locale::getEnglish(), status); 46c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if(U_FAILURE(status)) { 47c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott errcheckln(status, "ERROR: Couldn't create English DecimalFormatSymbols - %s", u_errorName(status)); 48c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott return; 49c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott } 50c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 51c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if(en == fr || ! (en != fr) ) { 52c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott errln("ERROR: English DecimalFormatSymbols equal to French"); 53c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott } 54c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 55c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott // just do some VERY basic tests to make sure that get/set work 56c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 57c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott UnicodeString zero = en.getSymbol(DecimalFormatSymbols::kZeroDigitSymbol); 58c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fr.setSymbol(DecimalFormatSymbols::kZeroDigitSymbol, zero); 59c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if(fr.getSymbol(DecimalFormatSymbols::kZeroDigitSymbol) != en.getSymbol(DecimalFormatSymbols::kZeroDigitSymbol)) { 60c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott errln("ERROR: get/set ZeroDigit failed"); 61c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott } 62c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 63c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott UnicodeString group = en.getSymbol(DecimalFormatSymbols::kGroupingSeparatorSymbol); 64c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fr.setSymbol(DecimalFormatSymbols::kGroupingSeparatorSymbol, group); 65c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if(fr.getSymbol(DecimalFormatSymbols::kGroupingSeparatorSymbol) != en.getSymbol(DecimalFormatSymbols::kGroupingSeparatorSymbol)) { 66c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott errln("ERROR: get/set GroupingSeparator failed"); 67c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott } 68c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 69c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott UnicodeString decimal = en.getSymbol(DecimalFormatSymbols::kDecimalSeparatorSymbol); 70c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fr.setSymbol(DecimalFormatSymbols::kDecimalSeparatorSymbol, decimal); 71c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if(fr.getSymbol(DecimalFormatSymbols::kDecimalSeparatorSymbol) != en.getSymbol(DecimalFormatSymbols::kDecimalSeparatorSymbol)) { 72c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott errln("ERROR: get/set DecimalSeparator failed"); 73c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott } 74c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 75c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott UnicodeString perMill = en.getSymbol(DecimalFormatSymbols::kPerMillSymbol); 76c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fr.setSymbol(DecimalFormatSymbols::kPerMillSymbol, perMill); 77c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if(fr.getSymbol(DecimalFormatSymbols::kPerMillSymbol) != en.getSymbol(DecimalFormatSymbols::kPerMillSymbol)) { 78c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott errln("ERROR: get/set PerMill failed"); 79c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott } 80c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 81c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott UnicodeString percent = en.getSymbol(DecimalFormatSymbols::kPercentSymbol); 82c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fr.setSymbol(DecimalFormatSymbols::kPercentSymbol, percent); 83c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if(fr.getSymbol(DecimalFormatSymbols::kPercentSymbol) != en.getSymbol(DecimalFormatSymbols::kPercentSymbol)) { 84c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott errln("ERROR: get/set Percent failed"); 85c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott } 86c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 87c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott UnicodeString digit(en.getSymbol(DecimalFormatSymbols::kDigitSymbol)); 88c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fr.setSymbol(DecimalFormatSymbols::kDigitSymbol, digit); 89c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if(fr.getSymbol(DecimalFormatSymbols::kDigitSymbol) != en.getSymbol(DecimalFormatSymbols::kDigitSymbol)) { 90c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott errln("ERROR: get/set Percent failed"); 91c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott } 92c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 93c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott UnicodeString patternSeparator = en.getSymbol(DecimalFormatSymbols::kPatternSeparatorSymbol); 94c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fr.setSymbol(DecimalFormatSymbols::kPatternSeparatorSymbol, patternSeparator); 95c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if(fr.getSymbol(DecimalFormatSymbols::kPatternSeparatorSymbol) != en.getSymbol(DecimalFormatSymbols::kPatternSeparatorSymbol)) { 96c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott errln("ERROR: get/set PatternSeparator failed"); 97c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott } 98c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 99c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott UnicodeString infinity(en.getSymbol(DecimalFormatSymbols::kInfinitySymbol)); 100c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fr.setSymbol(DecimalFormatSymbols::kInfinitySymbol, infinity); 101c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott UnicodeString infinity2(fr.getSymbol(DecimalFormatSymbols::kInfinitySymbol)); 102c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if(infinity != infinity2) { 103c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott errln("ERROR: get/set Infinity failed"); 104c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott } 105c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 106c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott UnicodeString nan(en.getSymbol(DecimalFormatSymbols::kNaNSymbol)); 107c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fr.setSymbol(DecimalFormatSymbols::kNaNSymbol, nan); 108c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott UnicodeString nan2(fr.getSymbol(DecimalFormatSymbols::kNaNSymbol)); 109c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if(nan != nan2) { 110c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott errln("ERROR: get/set NaN failed"); 111c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott } 112c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 113c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott UnicodeString minusSign = en.getSymbol(DecimalFormatSymbols::kMinusSignSymbol); 114c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fr.setSymbol(DecimalFormatSymbols::kMinusSignSymbol, minusSign); 115c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if(fr.getSymbol(DecimalFormatSymbols::kMinusSignSymbol) != en.getSymbol(DecimalFormatSymbols::kMinusSignSymbol)) { 116c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott errln("ERROR: get/set MinusSign failed"); 117c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott } 118c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 119c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott UnicodeString exponential(en.getSymbol(DecimalFormatSymbols::kExponentialSymbol)); 120c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fr.setSymbol(DecimalFormatSymbols::kExponentialSymbol, exponential); 121c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if(fr.getSymbol(DecimalFormatSymbols::kExponentialSymbol) != en.getSymbol(DecimalFormatSymbols::kExponentialSymbol)) { 122c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott errln("ERROR: get/set Exponential failed"); 123c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott } 124c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 125c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott // Test get currency spacing before the currency. 126c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott status = U_ZERO_ERROR; 127c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for (int32_t i = 0; i < (int32_t)DecimalFormatSymbols::kCurrencySpacingCount; i++) { 128c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott UnicodeString enCurrencyPattern = en.getPatternForCurrencySpacing( 129c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott (DecimalFormatSymbols::ECurrencySpacing)i, TRUE, status); 130c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if(U_FAILURE(status)) { 131c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott errln("Error: cannot get CurrencyMatch for locale:en"); 132c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott status = U_ZERO_ERROR; 133c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott } 134c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott UnicodeString frCurrencyPattern = fr.getPatternForCurrencySpacing( 135c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott (DecimalFormatSymbols::ECurrencySpacing)i, TRUE, status); 136c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if(U_FAILURE(status)) { 137c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott errln("Error: cannot get CurrencyMatch for locale:fr"); 138c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott } 139c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if (enCurrencyPattern != frCurrencyPattern) { 140c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott errln("ERROR: get CurrencySpacing failed"); 141c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott } 142c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott } 143c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott // Test get currencySpacing after the currency. 144c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott status = U_ZERO_ERROR; 145c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for (int32_t i = 0; i < DecimalFormatSymbols::kCurrencySpacingCount; i++) { 146c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott UnicodeString enCurrencyPattern = en.getPatternForCurrencySpacing( 147c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott (DecimalFormatSymbols::ECurrencySpacing)i, FALSE, status); 148c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if(U_FAILURE(status)) { 149c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott errln("Error: cannot get CurrencyMatch for locale:en"); 150c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott status = U_ZERO_ERROR; 151c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott } 152c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott UnicodeString frCurrencyPattern = fr.getPatternForCurrencySpacing( 153c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott (DecimalFormatSymbols::ECurrencySpacing)i, FALSE, status); 154c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if(U_FAILURE(status)) { 155c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott errln("Error: cannot get CurrencyMatch for locale:fr"); 156c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott } 157c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if (enCurrencyPattern != frCurrencyPattern) { 158c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott errln("ERROR: get CurrencySpacing failed"); 159c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott } 160c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott } 161c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott // Test set curerncySpacing APIs 162c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott status = U_ZERO_ERROR; 163c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott UnicodeString dash = UnicodeString("-"); 164c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott en.setPatternForCurrencySpacing(DecimalFormatSymbols::kInsert, TRUE, dash); 165c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott UnicodeString enCurrencyInsert = en.getPatternForCurrencySpacing( 166c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott DecimalFormatSymbols::kInsert, TRUE, status); 167c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if (dash != enCurrencyInsert) { 168c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott errln("Error: Failed to setCurrencyInsert for locale:en"); 169c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott } 170c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 171c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott status = U_ZERO_ERROR; 172c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott DecimalFormatSymbols foo(status); 173c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 174c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott DecimalFormatSymbols bar(foo); 175c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 176c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott en = fr; 177c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 178c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if(en != fr || foo != bar) { 179c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott errln("ERROR: Copy Constructor or Assignment failed"); 180c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott } 181c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 182c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott // test get/setSymbol() 183c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if((int) UNUM_FORMAT_SYMBOL_COUNT != (int) DecimalFormatSymbols::kFormatSymbolCount) { 184c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott errln("unum.h and decimfmt.h have inconsistent numbers of format symbols!"); 185c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott return; 186c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott } 187c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 188c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott int i; 189c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for(i = 0; i < (int)DecimalFormatSymbols::kFormatSymbolCount; ++i) { 190c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott foo.setSymbol((DecimalFormatSymbols::ENumberFormatSymbol)i, UnicodeString((UChar32)(0x10330 + i))); 191c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott } 192c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for(i = 0; i < (int)DecimalFormatSymbols::kFormatSymbolCount; ++i) { 193c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if(foo.getSymbol((DecimalFormatSymbols::ENumberFormatSymbol)i) != UnicodeString((UChar32)(0x10330 + i))) { 194c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott errln("get/setSymbol did not roundtrip, got " + 195c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott foo.getSymbol((DecimalFormatSymbols::ENumberFormatSymbol)i) + 196c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ", expected " + 197c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott UnicodeString((UChar32)(0x10330 + i))); 198c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott } 199c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott } 200c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 201c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott DecimalFormatSymbols sym(Locale::getUS(), status); 202c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 203c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott UnicodeString customDecSeperator("S"); 204c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott Verify(34.5, (UnicodeString)"00.00", sym, (UnicodeString)"34.50"); 205c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott sym.setSymbol((DecimalFormatSymbols::ENumberFormatSymbol)0, customDecSeperator); 206c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott Verify(34.5, (UnicodeString)"00.00", sym, (UnicodeString)"34S50"); 207c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott sym.setSymbol((DecimalFormatSymbols::ENumberFormatSymbol)3, (UnicodeString)"P"); 208c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott Verify(34.5, (UnicodeString)"00 %", sym, (UnicodeString)"3450 P"); 209c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott sym.setSymbol((DecimalFormatSymbols::ENumberFormatSymbol)8, (UnicodeString)"D"); 210c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott Verify(34.5, CharsToUnicodeString("\\u00a4##.##"), sym, (UnicodeString)"D34.5"); 211c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott sym.setSymbol((DecimalFormatSymbols::ENumberFormatSymbol)1, (UnicodeString)"|"); 212c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott Verify(3456.5, (UnicodeString)"0,000.##", sym, (UnicodeString)"3|456S5"); 213c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 214c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott} 215c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 216c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottvoid IntlTestDecimalFormatSymbols::Verify(double value, const UnicodeString& pattern, DecimalFormatSymbols sym, const UnicodeString& expected){ 217c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott UErrorCode status = U_ZERO_ERROR; 218c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott DecimalFormat *df = new DecimalFormat(pattern, sym, status); 219c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if(U_FAILURE(status)){ 220c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott errln("ERROR: construction of decimal format failed"); 221c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott } 222c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott UnicodeString buffer; 223c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott FieldPosition pos(FieldPosition::DONT_CARE); 224c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott buffer = df->format(value, buffer, pos); 225c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if(buffer != expected){ 226c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott errln((UnicodeString)"ERROR: format failed after setSymbols()\n Expected " + 227c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott expected + ", Got " + buffer); 228c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott } 229c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott delete df; 230c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott} 231c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 232c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#endif /* #if !UCONFIG_NO_FORMATTING */ 233