| OLD | NEW |
| 1 /* | 1 /* |
| 2 ******************************************************************************* | 2 ******************************************************************************* |
| 3 * Copyright (C) 2014, International Business Machines Corporation and * | 3 * Copyright (C) 2014-2015, International Business Machines Corporation and
* |
| 4 * others. All Rights Reserved. * | 4 * others. All Rights Reserved. * |
| 5 ******************************************************************************* | 5 ******************************************************************************* |
| 6 * | 6 * |
| 7 * File numfmtspectest.cpp | 7 * File numfmtspectest.cpp |
| 8 * | 8 * |
| 9 ******************************************************************************* | 9 ******************************************************************************* |
| 10 */ | 10 */ |
| 11 #include <stdio.h> | 11 #include <stdio.h> |
| 12 #include <stdlib.h> | 12 #include <stdlib.h> |
| 13 | 13 |
| (...skipping 15 matching lines...) Expand all Loading... |
| 29 } | 29 } |
| 30 } | 30 } |
| 31 } | 31 } |
| 32 | 32 |
| 33 static NumberFormat *nfWithPattern(const char *pattern) { | 33 static NumberFormat *nfWithPattern(const char *pattern) { |
| 34 UnicodeString upattern(pattern, -1, US_INV); | 34 UnicodeString upattern(pattern, -1, US_INV); |
| 35 upattern = upattern.unescape(); | 35 upattern = upattern.unescape(); |
| 36 UErrorCode status = U_ZERO_ERROR; | 36 UErrorCode status = U_ZERO_ERROR; |
| 37 DecimalFormat *result = new DecimalFormat( | 37 DecimalFormat *result = new DecimalFormat( |
| 38 upattern, new DecimalFormatSymbols("fr", status), status); | 38 upattern, new DecimalFormatSymbols("fr", status), status); |
| 39 U_ASSERT(status == U_ZERO_ERROR); | 39 if (U_FAILURE(status)) { |
| 40 return NULL; |
| 41 } |
| 42 |
| 40 return result; | 43 return result; |
| 41 } | 44 } |
| 42 | 45 |
| 43 static UnicodeString format(double d, const NumberFormat &fmt) { | 46 static UnicodeString format(double d, const NumberFormat &fmt) { |
| 44 UnicodeString result; | 47 UnicodeString result; |
| 45 fmt.format(d, result); | 48 fmt.format(d, result); |
| 46 fixNonBreakingSpace(result); | 49 fixNonBreakingSpace(result); |
| 47 return result; | 50 return result; |
| 48 } | 51 } |
| 49 | 52 |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 89 assertPatternFr("1235", 1234.567, "0", TRUE); | 92 assertPatternFr("1235", 1234.567, "0", TRUE); |
| 90 assertPatternFr("1 234,567", 1234.567, "#,##0.###", TRUE); | 93 assertPatternFr("1 234,567", 1234.567, "#,##0.###", TRUE); |
| 91 assertPatternFr("1234,567", 1234.567, "###0.#####", TRUE); | 94 assertPatternFr("1234,567", 1234.567, "###0.#####", TRUE); |
| 92 assertPatternFr("1234,5670", 1234.567, "###0.0000#", TRUE); | 95 assertPatternFr("1234,5670", 1234.567, "###0.0000#", TRUE); |
| 93 assertPatternFr("01234,5670", 1234.567, "00000.0000", TRUE); | 96 assertPatternFr("01234,5670", 1234.567, "00000.0000", TRUE); |
| 94 assertPatternFr("1 234,57 \\u20ac", 1234.567, "#,##0.00 \\u00a4", TRUE); | 97 assertPatternFr("1 234,57 \\u20ac", 1234.567, "#,##0.00 \\u00a4", TRUE); |
| 95 } | 98 } |
| 96 | 99 |
| 97 void NumberFormatSpecificationTest::TestNfSetters() { | 100 void NumberFormatSpecificationTest::TestNfSetters() { |
| 98 LocalPointer<NumberFormat> nf(nfWithPattern("#,##0.##")); | 101 LocalPointer<NumberFormat> nf(nfWithPattern("#,##0.##")); |
| 102 if (nf == NULL) { |
| 103 dataerrln("Error creating NumberFormat"); |
| 104 return; |
| 105 } |
| 99 nf->setMaximumIntegerDigits(5); | 106 nf->setMaximumIntegerDigits(5); |
| 100 nf->setMinimumIntegerDigits(4); | 107 nf->setMinimumIntegerDigits(4); |
| 101 assertEquals("", "34 567,89", format(1234567.89, *nf), TRUE); | 108 assertEquals("", "34 567,89", format(1234567.89, *nf), TRUE); |
| 102 assertEquals("", "0 034,56", format(34.56, *nf), TRUE); | 109 assertEquals("", "0 034,56", format(34.56, *nf), TRUE); |
| 103 } | 110 } |
| 104 | 111 |
| 105 void NumberFormatSpecificationTest::TestRounding() { | 112 void NumberFormatSpecificationTest::TestRounding() { |
| 106 assertPatternFr("1,0", 1.25, "0.5", TRUE); | 113 assertPatternFr("1,0", 1.25, "0.5", TRUE); |
| 107 assertPatternFr("2,0", 1.75, "0.5", TRUE); | 114 assertPatternFr("2,0", 1.75, "0.5", TRUE); |
| 108 assertPatternFr("-1,0", -1.25, "0.5", TRUE); | 115 assertPatternFr("-1,0", -1.25, "0.5", TRUE); |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 180 assertPatternFr("EUR *433,00", 433.0, "\\u00a4\\u00a4 **####0.00"); | 187 assertPatternFr("EUR *433,00", 433.0, "\\u00a4\\u00a4 **####0.00"); |
| 181 assertPatternFr("EUR *433,00", 433.0, "\\u00a4\\u00a4 **#######0"); | 188 assertPatternFr("EUR *433,00", 433.0, "\\u00a4\\u00a4 **#######0"); |
| 182 } | 189 } |
| 183 { | 190 { |
| 184 UnicodeString upattern("\\u00a4\\u00a4 **#######0", -1, US_INV); | 191 UnicodeString upattern("\\u00a4\\u00a4 **#######0", -1, US_INV); |
| 185 upattern = upattern.unescape(); | 192 upattern = upattern.unescape(); |
| 186 UErrorCode status = U_ZERO_ERROR; | 193 UErrorCode status = U_ZERO_ERROR; |
| 187 UnicodeString result; | 194 UnicodeString result; |
| 188 DecimalFormat fmt( | 195 DecimalFormat fmt( |
| 189 upattern, new DecimalFormatSymbols("fr", status), status); | 196 upattern, new DecimalFormatSymbols("fr", status), status); |
| 190 fmt.setCurrency(kJPY); | 197 if (U_FAILURE(status)) { |
| 191 fmt.format(433.22, result); | 198 dataerrln("Error creating DecimalFormat - %s", u_errorName(status)); |
| 192 assertSuccess("", status); | 199 } else { |
| 193 assertEquals("", "JPY ****433", result, TRUE); | 200 fmt.setCurrency(kJPY); |
| 201 fmt.format(433.22, result); |
| 202 assertSuccess("", status); |
| 203 assertEquals("", "JPY ****433", result, TRUE); |
| 204 } |
| 194 } | 205 } |
| 195 { | 206 { |
| 196 UnicodeString upattern( | 207 UnicodeString upattern( |
| 197 "\\u00a4\\u00a4 **#######0;\\u00a4\\u00a4 (#)", -1, US_INV); | 208 "\\u00a4\\u00a4 **#######0;\\u00a4\\u00a4 (#)", -1, US_INV); |
| 198 upattern = upattern.unescape(); | 209 upattern = upattern.unescape(); |
| 199 UErrorCode status = U_ZERO_ERROR; | 210 UErrorCode status = U_ZERO_ERROR; |
| 200 UnicodeString result; | 211 UnicodeString result; |
| 201 DecimalFormat fmt( | 212 DecimalFormat fmt( |
| 202 upattern, | 213 upattern, |
| 203 new DecimalFormatSymbols("en_US", status), | 214 new DecimalFormatSymbols("en_US", status), |
| 204 status); | 215 status); |
| 205 fmt.format(-433.22, result); | 216 if (U_FAILURE(status)) { |
| 206 assertSuccess("", status); | 217 dataerrln("Error creating DecimalFormat - %s", u_errorName(status)); |
| 207 assertEquals("", "USD (433.22)", result, TRUE); | 218 } else { |
| 219 fmt.format(-433.22, result); |
| 220 assertSuccess("", status); |
| 221 assertEquals("", "USD (433.22)", result, TRUE); |
| 222 } |
| 208 } | 223 } |
| 209 const char *paddedSciPattern = "QU**00.#####E0"; | 224 const char *paddedSciPattern = "QU**00.#####E0"; |
| 210 assertPatternFr("QU***43,3E-1", 4.33, paddedSciPattern, TRUE); | 225 assertPatternFr("QU***43,3E-1", 4.33, paddedSciPattern, TRUE); |
| 211 { | 226 { |
| 212 UErrorCode status = U_ZERO_ERROR; | 227 UErrorCode status = U_ZERO_ERROR; |
| 213 DecimalFormatSymbols *sym = new DecimalFormatSymbols("fr", status); | 228 DecimalFormatSymbols *sym = new DecimalFormatSymbols("fr", status); |
| 214 sym->setSymbol(DecimalFormatSymbols::kExponentialSymbol, "EE"); | 229 sym->setSymbol(DecimalFormatSymbols::kExponentialSymbol, "EE"); |
| 215 DecimalFormat fmt( | 230 DecimalFormat fmt( |
| 216 paddedSciPattern, | 231 paddedSciPattern, |
| 217 sym, | 232 sym, |
| 218 status); | 233 status); |
| 219 UnicodeString result; | 234 if (U_FAILURE(status)) { |
| 220 fmt.format(4.33, result); | 235 dataerrln("Error creating DecimalFormat - %s", u_errorName(status)); |
| 221 assertSuccess("", status); | 236 } else { |
| 222 assertEquals("", "QU**43,3EE-1", result, TRUE); | 237 UnicodeString result; |
| 238 fmt.format(4.33, result); |
| 239 assertSuccess("", status); |
| 240 assertEquals("", "QU**43,3EE-1", result, TRUE); |
| 241 } |
| 223 } | 242 } |
| 224 // padding cannot work as intended with scientific notation. | 243 // padding cannot work as intended with scientific notation. |
| 225 assertPatternFr("QU**43,32E-1", 4.332, paddedSciPattern, TRUE); | 244 assertPatternFr("QU**43,32E-1", 4.332, paddedSciPattern, TRUE); |
| 226 } | 245 } |
| 227 | 246 |
| 228 void NumberFormatSpecificationTest::assertPatternFr( | 247 void NumberFormatSpecificationTest::assertPatternFr( |
| 229 const char *expected, | 248 const char *expected, |
| 230 double x, | 249 double x, |
| 231 const char *pattern, | 250 const char *pattern, |
| 232 UBool possibleDataError) { | 251 UBool possibleDataError) { |
| 233 UnicodeString upattern(pattern, -1, US_INV); | 252 UnicodeString upattern(pattern, -1, US_INV); |
| 234 UnicodeString uexpected(expected, -1, US_INV); | 253 UnicodeString uexpected(expected, -1, US_INV); |
| 235 upattern = upattern.unescape(); | 254 upattern = upattern.unescape(); |
| 236 uexpected = uexpected.unescape(); | 255 uexpected = uexpected.unescape(); |
| 237 UErrorCode status = U_ZERO_ERROR; | 256 UErrorCode status = U_ZERO_ERROR; |
| 238 UnicodeString result; | 257 UnicodeString result; |
| 239 DecimalFormat fmt( | 258 DecimalFormat fmt( |
| 240 upattern, new DecimalFormatSymbols("fr_FR", status), status); | 259 upattern, new DecimalFormatSymbols("fr_FR", status), status); |
| 260 if (U_FAILURE(status)) { |
| 261 dataerrln("Error creating DecimalFormatSymbols - %s", u_errorName(status
)); |
| 262 return; |
| 263 } |
| 241 fmt.format(x, result); | 264 fmt.format(x, result); |
| 242 fixNonBreakingSpace(result); | 265 fixNonBreakingSpace(result); |
| 243 assertSuccess("", status); | 266 assertSuccess("", status); |
| 244 assertEquals("", uexpected, result, possibleDataError); | 267 assertEquals("", uexpected, result, possibleDataError); |
| 245 } | 268 } |
| 246 | 269 |
| 247 extern IntlTest *createNumberFormatSpecificationTest() { | 270 extern IntlTest *createNumberFormatSpecificationTest() { |
| 248 return new NumberFormatSpecificationTest(); | 271 return new NumberFormatSpecificationTest(); |
| 249 } | 272 } |
| 250 | 273 |
| 251 #endif | 274 #endif |
| OLD | NEW |