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

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

Issue 845603002: Update ICU to 54.1 step 1 (Closed) Base URL: https://chromium.googlesource.com/chromium/deps/icu.git@master
Patch Set: remove unusued directories Created 5 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
« no previous file with comments | « source/test/intltest/numrgts.cpp ('k') | source/test/intltest/quantityformattertest.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 ******************************************************************************* 2 *******************************************************************************
3 * Copyright (C) 2007-2013, International Business Machines Corporation and 3 * Copyright (C) 2007-2014, International Business Machines Corporation and
4 * others. All Rights Reserved. 4 * others. All Rights Reserved.
5 ******************************************************************************** 5 ********************************************************************************
6 6
7 * File PLURRULTS.cpp 7 * File PLURRULTS.cpp
8 * 8 *
9 ******************************************************************************** 9 ********************************************************************************
10 */ 10 */
11 11
12 #include "unicode/utypes.h" 12 #include "unicode/utypes.h"
13 13
14 #if !UCONFIG_NO_FORMATTING 14 #if !UCONFIG_NO_FORMATTING
15 15
16 #include <stdlib.h> 16 #include <stdlib.h>
17 #include <stdarg.h> 17 #include <stdarg.h>
18 #include <string.h> 18 #include <string.h>
19 19
20 #include "unicode/localpointer.h" 20 #include "unicode/localpointer.h"
21 #include "unicode/plurrule.h" 21 #include "unicode/plurrule.h"
22 #include "unicode/stringpiece.h" 22 #include "unicode/stringpiece.h"
23 23
24 #include "cmemory.h" 24 #include "cmemory.h"
25 #include "digitlst.h" 25 #include "digitlst.h"
26 #include "plurrule_impl.h" 26 #include "plurrule_impl.h"
27 #include "plurults.h" 27 #include "plurults.h"
28 #include "uhash.h" 28 #include "uhash.h"
29 29
30 #define LENGTHOF(array) (int32_t)(sizeof(array)/sizeof(array[0]))
31
32 void setupResult(const int32_t testSource[], char result[], int32_t* max); 30 void setupResult(const int32_t testSource[], char result[], int32_t* max);
33 UBool checkEqual(const PluralRules &test, char *result, int32_t max); 31 UBool checkEqual(const PluralRules &test, char *result, int32_t max);
34 UBool testEquality(const PluralRules &test); 32 UBool testEquality(const PluralRules &test);
35 33
36 // This is an API test, not a unit test. It doesn't test very many cases, and d oesn't 34 // This is an API test, not a unit test. It doesn't test very many cases, and d oesn't
37 // try to test the full functionality. It just calls each function in the class and 35 // try to test the full functionality. It just calls each function in the class and
38 // verifies that it works on a basic level. 36 // verifies that it works on a basic level.
39 37
40 void PluralRulesTest::runIndexedTest( int32_t index, UBool exec, const char* &na me, char* /*par*/ ) 38 void PluralRulesTest::runIndexedTest( int32_t index, UBool exec, const char* &na me, char* /*par*/ )
41 { 39 {
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
214 UnicodeString decimalRule= UNICODE_STRING_SIMPLE("a: n not in 0..100;"); 212 UnicodeString decimalRule= UNICODE_STRING_SIMPLE("a: n not in 0..100;");
215 UnicodeString KEYWORD_A = UNICODE_STRING_SIMPLE("a"); 213 UnicodeString KEYWORD_A = UNICODE_STRING_SIMPLE("a");
216 status = U_ZERO_ERROR; 214 status = U_ZERO_ERROR;
217 newRules.adoptInstead(test->createRules(decimalRule, status)); 215 newRules.adoptInstead(test->createRules(decimalRule, status));
218 if (U_FAILURE(status)) { 216 if (U_FAILURE(status)) {
219 dataerrln("ERROR: Could not create PluralRules for testing fractions - e xitting"); 217 dataerrln("ERROR: Could not create PluralRules for testing fractions - e xitting");
220 return; 218 return;
221 } 219 }
222 double fData[] = {-101, -100, -1, -0.0, 0, 0.1, 1, 1.999, 2.0, 100, 100.001 }; 220 double fData[] = {-101, -100, -1, -0.0, 0, 0.1, 1, 1.999, 2.0, 100, 100.001 };
223 UBool isKeywordA[] = {TRUE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, TRUE, FALSE, FALSE, TRUE }; 221 UBool isKeywordA[] = {TRUE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, TRUE, FALSE, FALSE, TRUE };
224 for (int32_t i=0; i<LENGTHOF(fData); i++) { 222 for (int32_t i=0; i<UPRV_LENGTHOF(fData); i++) {
225 if ((newRules->select(fData[i])== KEYWORD_A) != isKeywordA[i]) { 223 if ((newRules->select(fData[i])== KEYWORD_A) != isKeywordA[i]) {
226 errln("File %s, Line %d, ERROR: plural rules for decimal fractions test failed!\n" 224 errln("File %s, Line %d, ERROR: plural rules for decimal fractions test failed!\n"
227 " number = %g, expected %s", __FILE__, __LINE__, fData[i], i sKeywordA?"TRUE":"FALSE"); 225 " number = %g, expected %s", __FILE__, __LINE__, fData[i], i sKeywordA[i]?"TRUE":"FALSE");
228 } 226 }
229 } 227 }
230 228
231 // ======= Test Equality 229 // ======= Test Equality
232 logln("Testing Equality of PluralRules"); 230 logln("Testing Equality of PluralRules");
233 231
234 if ( !testEquality(*test) ) { 232 if ( !testEquality(*test) ) {
235 errln("ERROR: complex plural rules failed! - exitting"); 233 errln("ERROR: complex plural rules failed! - exitting");
236 return; 234 return;
237 } 235 }
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
391 if (U_FAILURE(status)) { 389 if (U_FAILURE(status)) {
392 break; 390 break;
393 } 391 }
394 StringEnumeration *keywords = rules->getKeywords(status); 392 StringEnumeration *keywords = rules->getKeywords(status);
395 if (U_FAILURE(status)) { 393 if (U_FAILURE(status)) {
396 delete rules; 394 delete rules;
397 break; 395 break;
398 } 396 }
399 const UnicodeString* keyword; 397 const UnicodeString* keyword;
400 while (NULL != (keyword = keywords->snext(status))) { 398 while (NULL != (keyword = keywords->snext(status))) {
401 int32_t count = rules->getSamples(*keyword, values, LENGTHOF(values), stat us); 399 int32_t count = rules->getSamples(*keyword, values, UPRV_LENGTHOF(values), status);
402 if (U_FAILURE(status)) { 400 if (U_FAILURE(status)) {
403 errln(UNICODE_STRING_SIMPLE("getSamples() failed for locale ") + 401 errln(UNICODE_STRING_SIMPLE("getSamples() failed for locale ") +
404 locales[i].getName() + 402 locales[i].getName() +
405 UNICODE_STRING_SIMPLE(", keyword ") + *keyword); 403 UNICODE_STRING_SIMPLE(", keyword ") + *keyword);
406 continue; 404 continue;
407 } 405 }
408 if (count == 0) { 406 if (count == 0) {
409 // TODO: Lots of these. 407 // TODO: Lots of these.
410 // errln(UNICODE_STRING_SIMPLE("no samples for keyword ") + *keyword + UNICODE_STRING_SIMPLE(" in locale ") + locales[i].getName() ); 408 // errln(UNICODE_STRING_SIMPLE("no samples for keyword ") + *keyword + UNICODE_STRING_SIMPLE(" in locale ") + locales[i].getName() );
411 } 409 }
412 if (count > LENGTHOF(values)) { 410 if (count > UPRV_LENGTHOF(values)) {
413 errln(UNICODE_STRING_SIMPLE("getSamples()=") + count + 411 errln(UNICODE_STRING_SIMPLE("getSamples()=") + count +
414 UNICODE_STRING_SIMPLE(", too many values, for locale ") + 412 UNICODE_STRING_SIMPLE(", too many values, for locale ") +
415 locales[i].getName() + 413 locales[i].getName() +
416 UNICODE_STRING_SIMPLE(", keyword ") + *keyword); 414 UNICODE_STRING_SIMPLE(", keyword ") + *keyword);
417 count = LENGTHOF(values); 415 count = UPRV_LENGTHOF(values);
418 } 416 }
419 for (int32_t j = 0; j < count; ++j) { 417 for (int32_t j = 0; j < count; ++j) {
420 if (values[j] == UPLRULES_NO_UNIQUE_VALUE) { 418 if (values[j] == UPLRULES_NO_UNIQUE_VALUE) {
421 errln("got 'no unique value' among values"); 419 errln("got 'no unique value' among values");
422 } else { 420 } else {
423 UnicodeString resultKeyword = rules->select(values[j]); 421 UnicodeString resultKeyword = rules->select(values[j]);
424 // if (strcmp(locales[i].getName(), "uk") == 0) { // Debug only. 422 // if (strcmp(locales[i].getName(), "uk") == 0) { // Debug only.
425 // std::cout << " uk " << US(resultKeyword).cstr() << " " << valu es[j] << std::endl; 423 // std::cout << " uk " << US(resultKeyword).cstr() << " " << valu es[j] << std::endl;
426 // } 424 // }
427 if (*keyword != resultKeyword) { 425 if (*keyword != resultKeyword) {
(...skipping 504 matching lines...) Expand 10 before | Expand all | Expand 10 after
932 "a: n is 13, 15, b: n is 4", 930 "a: n is 13, 15, b: n is 4",
933 "a: n is 1, 3, 4.. ", 931 "a: n is 1, 3, 4.. ",
934 "a: n within 5..4", 932 "a: n within 5..4",
935 "A: n is 13", // Uppercase keywords not allowed. 933 "A: n is 13", // Uppercase keywords not allowed.
936 "a: n ! = 3", // spaces in != operator 934 "a: n ! = 3", // spaces in != operator
937 "a: n = not 3", // '=' not exact equivalent of 'is' 935 "a: n = not 3", // '=' not exact equivalent of 'is'
938 "a: n ! in 3..4" // '!' not exact equivalent of 'not' 936 "a: n ! in 3..4" // '!' not exact equivalent of 'not'
939 "a: n % 37 ! in 3..4" 937 "a: n % 37 ! in 3..4"
940 938
941 }; 939 };
942 for (int i=0; i<LENGTHOF(testCases); i++) { 940 for (int i=0; i<UPRV_LENGTHOF(testCases); i++) {
943 const char *rules = testCases[i]; 941 const char *rules = testCases[i];
944 UErrorCode status = U_ZERO_ERROR; 942 UErrorCode status = U_ZERO_ERROR;
945 PluralRules *pr = PluralRules::createRules(UnicodeString(rules), status) ; 943 PluralRules *pr = PluralRules::createRules(UnicodeString(rules), status) ;
946 if (U_SUCCESS(status)) { 944 if (U_SUCCESS(status)) {
947 errln("file %s, line %d, expected failure with \"%s\".", __FILE__, _ _LINE__, rules); 945 errln("file %s, line %d, expected failure with \"%s\".", __FILE__, _ _LINE__, rules);
948 } 946 }
949 if (pr != NULL) { 947 if (pr != NULL) {
950 errln("file %s, line %d, expected NULL. Rules: \"%s\"", __FILE__, __ LINE__, rules); 948 errln("file %s, line %d, expected NULL. Rules: \"%s\"", __FILE__, __ LINE__, rules);
951 } 949 }
952 } 950 }
(...skipping 21 matching lines...) Expand all
974 {.1234, 4, 1234}, 972 {.1234, 4, 1234},
975 {.01234, 5, 1234}, 973 {.01234, 5, 1234},
976 {.001234, 6, 1234}, 974 {.001234, 6, 1234},
977 {.0001234, 7, 1234}, 975 {.0001234, 7, 1234},
978 {100.1234, 4, 1234}, 976 {100.1234, 4, 1234},
979 {100.01234, 5, 1234}, 977 {100.01234, 5, 1234},
980 {100.001234, 6, 1234}, 978 {100.001234, 6, 1234},
981 {100.0001234, 7, 1234} 979 {100.0001234, 7, 1234}
982 }; 980 };
983 981
984 for (int i=0; i<LENGTHOF(testCases); ++i) { 982 for (int i=0; i<UPRV_LENGTHOF(testCases); ++i) {
985 DoubleTestCase &tc = testCases[i]; 983 DoubleTestCase &tc = testCases[i];
986 int32_t numFractionDigits = FixedDecimal::decimals(tc.n); 984 int32_t numFractionDigits = FixedDecimal::decimals(tc.n);
987 if (numFractionDigits != tc.fractionDigitCount) { 985 if (numFractionDigits != tc.fractionDigitCount) {
988 errln("file %s, line %d: decimals(%g) expected %d, actual %d", 986 errln("file %s, line %d: decimals(%g) expected %d, actual %d",
989 __FILE__, __LINE__, tc.n, tc.fractionDigitCount, numFractionD igits); 987 __FILE__, __LINE__, tc.n, tc.fractionDigitCount, numFractionD igits);
990 continue; 988 continue;
991 } 989 }
992 int64_t actualFractionDigits = FixedDecimal::getFractionalDigits(tc.n, n umFractionDigits); 990 int64_t actualFractionDigits = FixedDecimal::getFractionalDigits(tc.n, n umFractionDigits);
993 if (actualFractionDigits != tc.fractionDigits) { 991 if (actualFractionDigits != tc.fractionDigits) {
994 errln("file %s, line %d: getFractionDigits(%g, %d): expected %ld, go t %ld", 992 errln("file %s, line %d: getFractionDigits(%g, %d): expected %ld, go t %ld",
995 __FILE__, __LINE__, tc.n, numFractionDigits, tc.fractionDigits , actualFractionDigits); 993 __FILE__, __LINE__, tc.n, numFractionDigits, tc.fractionDigits , actualFractionDigits);
996 } 994 }
997 } 995 }
998 } 996 }
999 997
1000 998
1001 999
1002 #endif /* #if !UCONFIG_NO_FORMATTING */ 1000 #endif /* #if !UCONFIG_NO_FORMATTING */
OLDNEW
« no previous file with comments | « source/test/intltest/numrgts.cpp ('k') | source/test/intltest/quantityformattertest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698