Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3)

Side by Side Diff: source/test/intltest/scientificformathelpertest.cpp

Issue 1621843002: ICU 56 update step 1 (Closed) Base URL: https://chromium.googlesource.com/chromium/deps/icu.git@561
Patch Set: Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 /*
2 *******************************************************************************
3 * Copyright (C) 2014, International Business Machines Corporation and *
4 * others. All Rights Reserved. *
5 *******************************************************************************
6 *
7 * File SCIFORMATHELPERTEST.CPP
8 *
9 *******************************************************************************
10 */
11 #include "unicode/utypes.h"
12
13 #include "intltest.h"
14
15 #if !UCONFIG_NO_FORMATTING
16
17 #include "unicode/scientificformathelper.h"
18 #include "unicode/numfmt.h"
19 #include "unicode/decimfmt.h"
20 #include "unicode/localpointer.h"
21
22 class ScientificFormatHelperTest : public IntlTest {
23 public:
24 void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par= 0);
25 private:
26 void TestBasic();
27 void TestFarsi();
28 void TestPlusSignInExponentMarkup();
29 void TestPlusSignInExponentSuperscript();
30 void TestFixedDecimalMarkup();
31 void TestFixedDecimalSuperscript();
32 };
33
34 void ScientificFormatHelperTest::runIndexedTest(
35 int32_t index, UBool exec, const char *&name, char *) {
36 if (exec) {
37 logln("TestSuite ScientificFormatHelperTest: ");
38 }
39 TESTCASE_AUTO_BEGIN;
40 TESTCASE_AUTO(TestBasic);
41 TESTCASE_AUTO(TestFarsi);
42 TESTCASE_AUTO(TestPlusSignInExponentMarkup);
43 TESTCASE_AUTO(TestPlusSignInExponentSuperscript);
44 TESTCASE_AUTO(TestFixedDecimalMarkup);
45 TESTCASE_AUTO(TestFixedDecimalSuperscript);
46 TESTCASE_AUTO_END;
47 }
48
49 void ScientificFormatHelperTest::TestBasic() {
50 UErrorCode status = U_ZERO_ERROR;
51 LocalPointer<DecimalFormat> decfmt((DecimalFormat *) NumberFormat::createSci entificInstance("en", status));
52 if (U_FAILURE(status)) {
53 dataerrln("Failed call NumberFormat::createScientificInstance(\"en\", st atus) - %s", u_errorName(status));
54 return;
55 }
56 UnicodeString appendTo("String: ");
57 FieldPositionIterator fpositer;
58 decfmt->format(1.23456e-78, appendTo, &fpositer, status);
59 FieldPositionIterator fpositer2(fpositer);
60 FieldPositionIterator fpositer3(fpositer);
61 ScientificFormatHelper helper(*decfmt->getDecimalFormatSymbols(), status);
62 UnicodeString result;
63 const char *expected = "String: 1.23456\\u00d710<sup>-78</sup>";
64 assertEquals(
65 "insertMarkup",
66 UnicodeString(expected).unescape(),
67 helper.insertMarkup(appendTo, fpositer, "<sup>", "</sup>", result, s tatus));
68 result.remove();
69 expected = "String: 1.23456\\u00d710\\u207b\\u2077\\u2078";
70 assertEquals(
71 "toSuperscriptExponentDigits",
72 UnicodeString(expected).unescape(),
73 helper.toSuperscriptExponentDigits(appendTo, fpositer2, result, stat us));
74 assertSuccess("", status);
75 result.remove();
76
77 // The 'a' is an invalid exponent character.
78 helper.toSuperscriptExponentDigits("String: 1.23456e-7a", fpositer3, result, status);
79 if (status != U_INVALID_CHAR_FOUND) {
80 errln("Expected U_INVALID_CHAR_FOUND");
81 }
82 }
83
84 void ScientificFormatHelperTest::TestFarsi() {
85 UErrorCode status = U_ZERO_ERROR;
86 LocalPointer<DecimalFormat> decfmt((DecimalFormat *) NumberFormat::createSci entificInstance("fa", status));
87 if (U_FAILURE(status)) {
88 dataerrln("Failed call NumberFormat::createScientificInstance(\"fa\", st atus) - %s", u_errorName(status));
89 return;
90 }
91 UnicodeString appendTo("String: ");
92 FieldPositionIterator fpositer;
93 decfmt->format(1.23456e-78, appendTo, &fpositer, status);
94 ScientificFormatHelper helper(*decfmt->getDecimalFormatSymbols(), status);
95 UnicodeString result;
96 const char *expected = "String: \\u06F1\\u066B\\u06F2\\u06F3\\u06F4\\u06F5\\ u06F6\\u00d7\\u06F1\\u06F0<sup>\\u200E\\u2212\\u06F7\\u06F8</sup>";
97 assertEquals(
98 "insertMarkup",
99 UnicodeString(expected).unescape(),
100 helper.insertMarkup(appendTo, fpositer, "<sup>", "</sup>", result, s tatus));
101 assertSuccess("", status);
102 }
103
104 void ScientificFormatHelperTest::TestPlusSignInExponentMarkup() {
105 UErrorCode status = U_ZERO_ERROR;
106 LocalPointer<DecimalFormat> decfmt((DecimalFormat *) NumberFormat::createSci entificInstance("en", status));
107 if (U_FAILURE(status)) {
108 dataerrln("Failed call NumberFormat::createScientificInstance(\"en\", st atus) - %s", u_errorName(status));
109 return;
110 }
111 decfmt->applyPattern("0.00E+0", status);
112 assertSuccess("", status);
113 UnicodeString appendTo;
114 FieldPositionIterator fpositer;
115 decfmt->format(6.02e23, appendTo, &fpositer, status);
116 ScientificFormatHelper helper(*decfmt->getDecimalFormatSymbols(), status);
117 UnicodeString result;
118 const char *expected = "6.02\\u00d710<sup>+23</sup>";
119 assertEquals(
120 "",
121 UnicodeString(expected).unescape(),
122 helper.insertMarkup(appendTo, fpositer, "<sup>", "</sup>", result, s tatus));
123 assertSuccess("", status);
124 }
125
126 void ScientificFormatHelperTest::TestPlusSignInExponentSuperscript() {
127 UErrorCode status = U_ZERO_ERROR;
128 LocalPointer<DecimalFormat> decfmt((DecimalFormat *) NumberFormat::createSci entificInstance("en", status));
129 if (U_FAILURE(status)) {
130 dataerrln("Failed call NumberFormat::createScientificInstance(\"en\", st atus) - %s", u_errorName(status));
131 return;
132 }
133 decfmt->applyPattern("0.00E+0", status);
134 assertSuccess("", status);
135 UnicodeString appendTo;
136 FieldPositionIterator fpositer;
137 decfmt->format(6.02e23, appendTo, &fpositer, status);
138 ScientificFormatHelper helper(*decfmt->getDecimalFormatSymbols(), status);
139 UnicodeString result;
140 const char *expected = "6.02\\u00d710\\u207a\\u00b2\\u00b3";
141 assertEquals(
142 "",
143 UnicodeString(expected).unescape(),
144 helper.toSuperscriptExponentDigits(appendTo, fpositer, result, statu s));
145 assertSuccess("", status);
146 }
147
148 void ScientificFormatHelperTest::TestFixedDecimalMarkup() {
149 UErrorCode status = U_ZERO_ERROR;
150 LocalPointer<DecimalFormat> decfmt((DecimalFormat *) NumberFormat::createIns tance("en", status));
151 if (assertSuccess("NumberFormat::createInstance", status, TRUE) == FALSE) {
152 return;
153 }
154 UnicodeString appendTo;
155 FieldPositionIterator fpositer;
156 decfmt->format(123456.0, appendTo, &fpositer, status);
157 ScientificFormatHelper helper(*decfmt->getDecimalFormatSymbols(), status);
158 assertSuccess("", status);
159 UnicodeString result;
160 helper.insertMarkup(appendTo, fpositer, "<sup>", "</sup>", result, status);
161 if (status != U_ILLEGAL_ARGUMENT_ERROR) {
162 errln("Expected U_ILLEGAL_ARGUMENT_ERROR with fixed decimal number.");
163 }
164 }
165
166 void ScientificFormatHelperTest::TestFixedDecimalSuperscript() {
167 UErrorCode status = U_ZERO_ERROR;
168 LocalPointer<DecimalFormat> decfmt((DecimalFormat *) NumberFormat::createIns tance("en", status));
169 if (assertSuccess("NumberFormat::createInstance", status, TRUE) == FALSE) {
170 return;
171 }
172 UnicodeString appendTo;
173 FieldPositionIterator fpositer;
174 decfmt->format(123456.0, appendTo, &fpositer, status);
175 ScientificFormatHelper helper(*decfmt->getDecimalFormatSymbols(), status);
176 assertSuccess("", status);
177 UnicodeString result;
178 helper.toSuperscriptExponentDigits(appendTo, fpositer, result, status);
179 if (status != U_ILLEGAL_ARGUMENT_ERROR) {
180 errln("Expected U_ILLEGAL_ARGUMENT_ERROR with fixed decimal number.");
181 }
182 }
183
184 extern IntlTest *createScientificFormatHelperTest() {
185 return new ScientificFormatHelperTest();
186 }
187
188 #endif /* !UCONFIG_NO_FORMATTING */
OLDNEW
« no previous file with comments | « source/test/intltest/reldatefmttest.cpp ('k') | source/test/intltest/scientificnumberformattertest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698