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

Unified Diff: source/test/cintltst/cdattst.c

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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « source/test/cintltst/cdattst.h ('k') | source/test/cintltst/cdtdptst.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: source/test/cintltst/cdattst.c
diff --git a/source/test/cintltst/cdattst.c b/source/test/cintltst/cdattst.c
index 0b10f5e063d61ad2b31f83bceda3aeb6da5ea8b9..ac3a1b27577686a86d2cb36959bc87d46868a7ee 100644
--- a/source/test/cintltst/cdattst.c
+++ b/source/test/cintltst/cdattst.c
@@ -1,6 +1,6 @@
/********************************************************************
* COPYRIGHT:
- * Copyright (c) 1997-2013, International Business Machines Corporation and
+ * Copyright (c) 1997-2014, International Business Machines Corporation and
* others. All Rights Reserved.
********************************************************************/
/********************************************************************************
@@ -55,6 +55,7 @@ void addDateForTest(TestNode** root)
TESTCASE(TestRelativeCrash);
TESTCASE(TestContext);
TESTCASE(TestCalendarDateParse);
+ TESTCASE(TestOverrideNumberFormat);
}
/* Testing the DateFormat API */
static void TestDateFormat()
@@ -66,6 +67,7 @@ static void TestDateFormat()
UChar* result = NULL;
const UCalendar *cal;
const UNumberFormat *numformat1, *numformat2;
+ UNumberFormat *adoptNF;
UChar temp[50];
int32_t numlocales;
UDate d1;
@@ -185,7 +187,7 @@ static void TestDateFormat()
}
/*format using fr */
- u_unescape("10 juil. 1996 16:05:28 heure avanc\\u00E9e du Pacifique", temp, 50);
+ u_unescape("10 juil. 1996 16:05:28 heure d\\u2019\\u00E9t\\u00E9 du Pacifique", temp, 50);
if(result != NULL) {
free(result);
result = NULL;
@@ -197,7 +199,7 @@ static void TestDateFormat()
log_data_err("FAIL: Date Format for french locale failed using udat_format().\n" );
/*format using it */
- u_uastrcpy(temp, "10/lug/1996 16:05:28");
+ u_uastrcpy(temp, "10 lug 1996, 16:05:28");
{
UChar *fmtted;
@@ -338,6 +340,16 @@ static void TestDateFormat()
log_err("FAIL: error in setNumberFormat or getNumberFormat()\n");
else
log_verbose("PASS:setNumberFormat and getNumberFormat succesful\n");
+
+ /*Test getNumberFormat() and adoptNumberFormat() */
+ log_verbose("\nTesting the get and adopt NumberFormat properties of date format\n");
+ adoptNF= unum_open(UNUM_DEFAULT, NULL, 0, NULL, NULL, &status);
+ udat_adoptNumberFormat(def1, adoptNF);
+ numformat2=udat_getNumberFormat(def1);
+ if(u_strcmp(myNumformat(adoptNF, num), myNumformat(numformat2, num)) !=0)
+ log_err("FAIL: error in adoptNumberFormat or getNumberFormat()\n");
+ else
+ log_verbose("PASS:adoptNumberFormat and getNumberFormat succesful\n");
/*try setting the number format to another format */
numformat1=udat_getNumberFormat(def);
@@ -553,7 +565,7 @@ static void TestRelativeDateFormat()
/*Testing udat_getSymbols() and udat_setSymbols() and udat_countSymbols()*/
static void TestSymbols()
{
- UDateFormat *def, *fr;
+ UDateFormat *def, *fr, *zhChiCal;
UErrorCode status = U_ZERO_ERROR;
UChar *value=NULL;
UChar *result = NULL;
@@ -583,6 +595,15 @@ static void TestSymbols()
myErrorName(status) );
return;
}
+ /*creating a dateformat with zh locale */
+ log_verbose("\ncreating a date format with zh locale for chinese calendar\n");
+ zhChiCal = udat_open(UDAT_NONE, UDAT_FULL, "zh@calendar=chinese", NULL, 0, NULL, 0, &status);
+ if(U_FAILURE(status))
+ {
+ log_data_err("error in creating the dateformat using full date, no time, locale zh@calendar=chinese -> %s (Are you missing data?)\n",
+ myErrorName(status) );
+ return;
+ }
/*Testing countSymbols, getSymbols and setSymbols*/
@@ -592,7 +613,8 @@ static void TestSymbols()
udat_countSymbols(def, UDAT_SHORT_MONTHS)!=12 || udat_countSymbols(def, UDAT_WEEKDAYS)!=8 ||
udat_countSymbols(def, UDAT_SHORT_WEEKDAYS)!=8 || udat_countSymbols(def, UDAT_AM_PMS)!=2 ||
udat_countSymbols(def, UDAT_QUARTERS) != 4 || udat_countSymbols(def, UDAT_SHORT_QUARTERS) != 4 ||
- udat_countSymbols(def, UDAT_LOCALIZED_CHARS)!=1 || udat_countSymbols(def, UDAT_SHORTER_WEEKDAYS)!=8)
+ udat_countSymbols(def, UDAT_LOCALIZED_CHARS)!=1 || udat_countSymbols(def, UDAT_SHORTER_WEEKDAYS)!=8 ||
+ udat_countSymbols(zhChiCal, UDAT_CYCLIC_YEARS_NARROW)!=60 || udat_countSymbols(zhChiCal, UDAT_ZODIAC_NAMES_NARROW)!=12)
{
log_err("FAIL: error in udat_countSymbols\n");
}
@@ -647,7 +669,11 @@ static void TestSymbols()
VerifygetSymbols(def, UDAT_QUARTERS, 3, "4th quarter");
VerifygetSymbols(fr, UDAT_SHORT_QUARTERS, 1, "T2");
VerifygetSymbols(def, UDAT_SHORT_QUARTERS, 2, "Q3");
- VerifygetSymbols(def,UDAT_LOCALIZED_CHARS, 0, "GyMdkHmsSEDFwWahKzYeugAZvcLQqVUOXx");
+ VerifygetSymbols(zhChiCal, UDAT_CYCLIC_YEARS_ABBREVIATED, 0, "\\u7532\\u5B50");
+ VerifygetSymbols(zhChiCal, UDAT_CYCLIC_YEARS_NARROW, 59, "\\u7678\\u4EA5");
+ VerifygetSymbols(zhChiCal, UDAT_ZODIAC_NAMES_ABBREVIATED, 0, "\\u9F20");
+ VerifygetSymbols(zhChiCal, UDAT_ZODIAC_NAMES_WIDE, 11, "\\u732A");
+ VerifygetSymbols(def,UDAT_LOCALIZED_CHARS, 0, "GyMdkHmsSEDFwWahKzYeugAZvcLQqVUOXxr");
if(result != NULL) {
@@ -761,8 +787,10 @@ free(pattern);
VerifysetSymbols(fr, UDAT_SHORT_QUARTERS, 1, "QQ2");
VerifysetSymbols(fr, UDAT_STANDALONE_QUARTERS, 2, "3rd Quar.");
VerifysetSymbols(fr, UDAT_STANDALONE_SHORT_QUARTERS, 3, "4QQ");
+ VerifysetSymbols(zhChiCal, UDAT_CYCLIC_YEARS_ABBREVIATED, 1, "yi-chou");
+ VerifysetSymbols(zhChiCal, UDAT_ZODIAC_NAMES_ABBREVIATED, 1, "Ox");
+
-
/*run series of tests to test get and setSymbols regressively*/
log_verbose("\nTesting get and set symbols regressively\n");
VerifygetsetSymbols(fr, def, UDAT_WEEKDAYS, 1);
@@ -780,6 +808,7 @@ free(pattern);
udat_close(fr);
udat_close(def);
+ udat_close(zhChiCal);
if(result != NULL) {
free(result);
result = NULL;
@@ -990,10 +1019,10 @@ static void VerifygetSymbols(UDateFormat* datfor, UDateFormatSymbolType type, in
UErrorCode status = U_ZERO_ERROR;
UChar *result=NULL;
int32_t resultlength, resultlengthout;
-
+ int32_t patternSize = strlen(expected) + 1;
- pattern=(UChar*)malloc(sizeof(UChar) * (strlen(expected)+1));
- u_uastrcpy(pattern, expected);
+ pattern=(UChar*)malloc(sizeof(UChar) * patternSize);
+ u_unescape(expected, pattern, patternSize);
resultlength=0;
resultlengthout=udat_getSymbols(datfor, type, idx , NULL, resultlength, &status);
if(status==U_BUFFER_OVERFLOW_ERROR)
@@ -1012,8 +1041,8 @@ static void VerifygetSymbols(UDateFormat* datfor, UDateFormatSymbolType type, in
if(u_strcmp(result, pattern)==0)
log_verbose("PASS: getSymbols retrieved the right value\n");
else{
- log_data_err("FAIL: getSymbols retrieved the wrong value\n Expected %s Got %s\n", austrdup(pattern),
- austrdup(result) );
+ log_data_err("FAIL: getSymbols retrieved the wrong value\n Expected %s Got %s\n", expected,
+ aescstrdup(result,-1) );
}
free(result);
free(pattern);
@@ -1025,10 +1054,11 @@ static void VerifysetSymbols(UDateFormat* datfor, UDateFormatSymbolType type, in
UChar *value=NULL;
int32_t resultlength, resultlengthout;
UErrorCode status = U_ZERO_ERROR;
+ int32_t valueLen, valueSize = strlen(expected) + 1;
- value=(UChar*)malloc(sizeof(UChar) * (strlen(expected) + 1));
- u_uastrcpy(value, expected);
- udat_setSymbols(datfor, type, idx, value, u_strlen(value), &status);
+ value=(UChar*)malloc(sizeof(UChar) * valueSize);
+ valueLen = u_unescape(expected, value, valueSize);
+ udat_setSymbols(datfor, type, idx, value, valueLen, &status);
if(U_FAILURE(status))
{
log_err("FAIL: Error in udat_setSymbols() %s\n", myErrorName(status) );
@@ -1050,8 +1080,8 @@ static void VerifysetSymbols(UDateFormat* datfor, UDateFormatSymbolType type, in
}
if(u_strcmp(result, value)!=0){
- log_err("FAIL:Error in setting and then getting symbols\n Expected %s Got %s\n", austrdup(value),
- austrdup(result) );
+ log_err("FAIL:Error in setting and then getting symbols\n Expected %s Got %s\n", expected,
+ aescstrdup(result,-1) );
}
else
log_verbose("PASS: setSymbols successful\n");
@@ -1390,32 +1420,58 @@ static const TestContextItem textContextItems[] = {
{ NULL, NULL, (UDisplayContext)0, NULL }
};
-static const UDate july022008 = 1215000001979.0;
+static const UChar today_enDefault[] = { 0x74,0x6F,0x64,0x61,0x79,0 }; /* "today" */
+static const UChar today_enTitle[] = { 0x54,0x6F,0x64,0x61,0x79,0 }; /* "Today" sentence-begin, uiListOrMenu, standalone */
+static const UChar yesterday_enDefault[] = { 0x79,0x65,0x73,0x74,0x65,0x72,0x64,0x61,0x79,0 }; /* "yesterday" */
+static const UChar yesterday_enTitle[] = { 0x59,0x65,0x73,0x74,0x65,0x72,0x64,0x61,0x79,0 }; /* "Yesterday" sentence-begin, uiListOrMenu, standalone */
+static const UChar today_nbDefault[] = { 0x69,0x20,0x64,0x61,0x67,0 }; /* "i dag" */
+static const UChar today_nbTitle[] = { 0x49,0x20,0x64,0x61,0x67,0 }; /* "I dag" sentence-begin, standalone */
+static const UChar yesterday_nbDefault[] = { 0x69,0x20,0x67,0xE5,0x72,0 };
+static const UChar yesterday_nbTitle[] = { 0x49,0x20,0x67,0xE5,0x72,0 };
+
+typedef struct {
+ const char * locale;
+ UDisplayContext capitalizationContext;
+ const UChar * expectedFormatToday;
+ const UChar * expectedFormatYesterday;
+} TestRelativeContextItem;
+
+static const TestRelativeContextItem textContextRelativeItems[] = {
+ { "en", UDISPCTX_CAPITALIZATION_NONE, today_enDefault, yesterday_enDefault },
+#if !UCONFIG_NO_BREAK_ITERATION
+ { "en", UDISPCTX_CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE, today_enDefault, yesterday_enDefault },
+ { "en", UDISPCTX_CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE, today_enTitle, yesterday_enTitle },
+ { "en", UDISPCTX_CAPITALIZATION_FOR_UI_LIST_OR_MENU, today_enTitle, yesterday_enTitle },
+ { "en", UDISPCTX_CAPITALIZATION_FOR_STANDALONE, today_enTitle, yesterday_enTitle },
+#endif
+ { "nb", UDISPCTX_CAPITALIZATION_NONE, today_nbDefault, yesterday_nbDefault },
+#if !UCONFIG_NO_BREAK_ITERATION
+ { "nb", UDISPCTX_CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE, today_nbDefault, yesterday_nbDefault },
+ { "nb", UDISPCTX_CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE, today_nbTitle, yesterday_nbTitle },
+ { "nb", UDISPCTX_CAPITALIZATION_FOR_UI_LIST_OR_MENU, today_nbDefault, yesterday_nbDefault },
+ { "nb", UDISPCTX_CAPITALIZATION_FOR_STANDALONE, today_nbTitle, yesterday_nbTitle },
+#endif
+ { NULL, (UDisplayContext)0, NULL, NULL }
+};
+
+static const UChar zoneGMT[] = { 0x47,0x4D,0x54,0 }; /* "GMT" */
+static const UDate july022008 = 1215000000000.0;
enum { kUbufMax = 64, kBbufMax = 3*kUbufMax };
static void TestContext(void) {
- const TestContextItem* textContextItemPtr = textContextItems;
- for (; textContextItemPtr->locale != NULL; ++textContextItemPtr) {
+ const TestContextItem* textContextItemPtr;
+ const TestRelativeContextItem* textRelContextItemPtr;
+ for (textContextItemPtr = textContextItems; textContextItemPtr->locale != NULL; ++textContextItemPtr) {
UErrorCode status = U_ZERO_ERROR;
- UDateFormat* udfmt = udat_open(UDAT_NONE, UDAT_MEDIUM, textContextItemPtr->locale, NULL, 0, NULL, 0, &status);
- if ( U_FAILURE(status) ) {
- log_data_err("FAIL: udat_open for locale %s, status %s\n", textContextItemPtr->locale, u_errorName(status) );
- } else {
- UDateTimePatternGenerator* udtpg = udatpg_open(textContextItemPtr->locale, &status);
- if ( U_FAILURE(status) ) {
- log_err("FAIL: udatpg_open for locale %s, status %s\n", textContextItemPtr->locale, u_errorName(status) );
- } else {
- UChar ubuf[kUbufMax];
- int32_t len = udatpg_getBestPattern(udtpg, textContextItemPtr->skeleton, -1, ubuf, kUbufMax, &status);
- if ( U_FAILURE(status) ) {
- log_err("FAIL: udatpg_getBestPattern for locale %s, status %s\n", textContextItemPtr->locale, u_errorName(status) );
- } else {
- udat_applyPattern(udfmt, FALSE, ubuf, len);
+ UDateTimePatternGenerator* udtpg = udatpg_open(textContextItemPtr->locale, &status);
+ if ( U_SUCCESS(status) ) {
+ UChar ubuf[kUbufMax];
+ int32_t len = udatpg_getBestPattern(udtpg, textContextItemPtr->skeleton, -1, ubuf, kUbufMax, &status);
+ if ( U_SUCCESS(status) ) {
+ UDateFormat* udfmt = udat_open(UDAT_PATTERN, UDAT_PATTERN, textContextItemPtr->locale, zoneGMT, -1, ubuf, len, &status);
+ if ( U_SUCCESS(status) ) {
udat_setContext(udfmt, textContextItemPtr->capitalizationContext, &status);
- if ( U_FAILURE(status) ) {
- log_err("FAIL: udat_setContext for locale %s, capitalizationContext %d, status %s\n",
- textContextItemPtr->locale, (int)textContextItemPtr->capitalizationContext, u_errorName(status) );
- } else {
+ if ( U_SUCCESS(status) ) {
UDisplayContext getContext;
len = udat_format(udfmt, july022008, ubuf, kUbufMax, NULL, &status);
if ( U_FAILURE(status) ) {
@@ -1437,13 +1493,187 @@ static void TestContext(void) {
log_err("FAIL: udat_getContext for locale %s, capitalizationContext %d, got context %d\n",
textContextItemPtr->locale, (int)textContextItemPtr->capitalizationContext, (int)getContext );
}
+ } else {
+ log_err("FAIL: udat_setContext for locale %s, capitalizationContext %d, status %s\n",
+ textContextItemPtr->locale, (int)textContextItemPtr->capitalizationContext, u_errorName(status) );
}
+ udat_close(udfmt);
+ } else {
+ log_data_err("FAIL: udat_open for locale %s, status %s\n", textContextItemPtr->locale, u_errorName(status) );
}
- udatpg_close(udtpg);
+ } else {
+ log_err("FAIL: udatpg_getBestPattern for locale %s, status %s\n", textContextItemPtr->locale, u_errorName(status) );
}
- udat_close(udfmt);
+ udatpg_close(udtpg);
+ } else {
+ log_data_err("FAIL: udatpg_open for locale %s, status %s\n", textContextItemPtr->locale, u_errorName(status) );
}
}
+ for (textRelContextItemPtr = textContextRelativeItems; textRelContextItemPtr->locale != NULL; ++textRelContextItemPtr) {
+ UErrorCode status = U_ZERO_ERROR;
+ UCalendar* ucal = ucal_open(zoneGMT, -1, "root", UCAL_GREGORIAN, &status);
+ if ( U_SUCCESS(status) ) {
+ UDateFormat* udfmt = udat_open(UDAT_NONE, UDAT_LONG_RELATIVE, textRelContextItemPtr->locale, zoneGMT, -1, NULL, 0, &status);
+ if ( U_SUCCESS(status) ) {
+ udat_setContext(udfmt, textRelContextItemPtr->capitalizationContext, &status);
+ if ( U_SUCCESS(status) ) {
+ UDate yesterday, today = ucal_getNow();
+ UChar ubuf[kUbufMax];
+ char bbuf1[kBbufMax];
+ char bbuf2[kBbufMax];
+ int32_t len = udat_format(udfmt, today, ubuf, kUbufMax, NULL, &status);
+ (void)len;
+ if ( U_FAILURE(status) ) {
+ log_err("FAIL: udat_format today for locale %s, capitalizationContext %d, status %s\n",
+ textRelContextItemPtr->locale, (int)textRelContextItemPtr->capitalizationContext, u_errorName(status) );
+ } else if (u_strncmp(ubuf, textRelContextItemPtr->expectedFormatToday, kUbufMax) != 0) {
+ log_err("FAIL: udat_format today for locale %s, capitalizationContext %d, expected %s, got %s\n",
+ textRelContextItemPtr->locale, (int)textRelContextItemPtr->capitalizationContext,
+ u_austrncpy(bbuf1,textRelContextItemPtr->expectedFormatToday,kUbufMax), u_austrncpy(bbuf2,ubuf,kUbufMax) );
+ }
+ status = U_ZERO_ERROR;
+ ucal_setMillis(ucal, today, &status);
+ ucal_add(ucal, UCAL_DATE, -1, &status);
+ yesterday = ucal_getMillis(ucal, &status);
+ if ( U_SUCCESS(status) ) {
+ len = udat_format(udfmt, yesterday, ubuf, kUbufMax, NULL, &status);
+ if ( U_FAILURE(status) ) {
+ log_err("FAIL: udat_format yesterday for locale %s, capitalizationContext %d, status %s\n",
+ textRelContextItemPtr->locale, (int)textRelContextItemPtr->capitalizationContext, u_errorName(status) );
+ } else if (u_strncmp(ubuf, textRelContextItemPtr->expectedFormatYesterday, kUbufMax) != 0) {
+ log_err("FAIL: udat_format yesterday for locale %s, capitalizationContext %d, expected %s, got %s\n",
+ textRelContextItemPtr->locale, (int)textRelContextItemPtr->capitalizationContext,
+ u_austrncpy(bbuf1,textRelContextItemPtr->expectedFormatYesterday,kUbufMax), u_austrncpy(bbuf2,ubuf,kUbufMax) );
+ }
+ }
+ } else {
+ log_err("FAIL: udat_setContext relative for locale %s, capitalizationContext %d, status %s\n",
+ textRelContextItemPtr->locale, (int)textRelContextItemPtr->capitalizationContext, u_errorName(status) );
+ }
+ udat_close(udfmt);
+ } else {
+ log_data_err("FAIL: udat_open relative for locale %s, status %s\n", textRelContextItemPtr->locale, u_errorName(status) );
+ }
+ ucal_close(ucal);
+ } else {
+ log_data_err("FAIL: ucal_open for locale root, status %s\n", u_errorName(status) );
+ }
+ }
+}
+
+
+// overrideNumberFormat[i][0] is to tell which field to set,
+// overrideNumberFormat[i][1] is the expected result
+static const char * overrideNumberFormat[][2] = {
+ {"", "\\u521D\\u4E03 \\u521D\\u4E8C"},
+ {"d", "07 \\u521D\\u4E8C"},
+ {"do", "07 \\u521D\\u4E8C"},
+ {"Md", "\\u521D\\u4E03 \\u521D\\u4E8C"},
+ {"MdMMd", "\\u521D\\u4E03 \\u521D\\u4E8C"},
+ {"mixed", "\\u521D\\u4E03 \\u521D\\u4E8C"}
+};
+
+static void TestOverrideNumberFormat(void) {
+ UErrorCode status = U_ZERO_ERROR;
+ UChar pattern[50];
+ UChar* expected;
+ UChar* fields;
+ char bbuf1[kBbufMax];
+ char bbuf2[kBbufMax];
+ const char* localeString = "zh@numbers=hanidays";
+ UDateFormat* fmt;
+ const UNumberFormat* getter_result;
+ int32_t i;
+ unsigned j;
+
+ expected=(UChar*)malloc(sizeof(UChar) * 10);
+ fields=(UChar*)malloc(sizeof(UChar) * 10);
+ u_uastrcpy(fields, "d");
+ u_uastrcpy(pattern,"MM d");
+
+ fmt=udat_open(UDAT_PATTERN, UDAT_PATTERN,"en_US",NULL,0,pattern, u_strlen(pattern), &status);
+ if (!assertSuccess("udat_open()", &status)) {
+ return;
+ }
+
+
+ // loop 50 times to check getter/setter
+ for (i = 0; i < 5; i++){
+ UNumberFormat* overrideFmt;
+ overrideFmt = unum_open(UNUM_DEFAULT, NULL, 0, localeString, NULL, &status);
+ assertSuccess("unum_open()", &status);
+
+ udat_adoptNumberFormatForFields(fmt, fields, overrideFmt, &status);
+ overrideFmt = NULL; // no longer valid
+ assertSuccess("udat_setNumberFormatForField()", &status);
+
+ getter_result = udat_getNumberFormatForField(fmt, 'd');
+ if(getter_result == NULL) {
+ log_err("FAIL: udat_getNumberFormatForField did not return a valid pointer\n");
+ }
+ }
+
+ {
+ UNumberFormat* overrideFmt;
+ overrideFmt = unum_open(UNUM_DEFAULT, NULL, 0, localeString, NULL, &status);
+ assertSuccess("unum_open()", &status);
+ udat_setNumberFormat(fmt, overrideFmt); // test the same override NF will not crash
+ unum_close(overrideFmt);
+ }
+ udat_close(fmt);
+
+ for (j=0; i<sizeof(overrideNumberFormat)/sizeof(overrideNumberFormat[0]); i++){
+ UChar ubuf[kUbufMax];
+ UDateFormat* fmt2;
+ UNumberFormat* overrideFmt2;
+
+ fmt2 =udat_open(UDAT_PATTERN, UDAT_PATTERN,"en_US",NULL,0,pattern, u_strlen(pattern), &status);
+ assertSuccess("udat_open() with en_US", &status);
+
+ overrideFmt2 = unum_open(UNUM_DEFAULT, NULL, 0, localeString, NULL, &status);
+ assertSuccess("unum_open() in loop", &status);
+
+ u_uastrcpy(fields, overrideNumberFormat[i][0]);
+ u_unescape(overrideNumberFormat[i][1], expected, 50);
+
+ if ( strcmp(overrideNumberFormat[i][0], "") == 0 ) { // use the one w/o field
+ udat_setNumberFormat(fmt2, overrideFmt2);
+ } else if ( strcmp(overrideNumberFormat[i][0], "mixed") == 0 ) { // set 1 field at first but then full override, both(M & d) should be override
+ const char* singleLocale = "en@numbers=hebr";
+ UNumberFormat* singleOverrideFmt;
+ u_uastrcpy(fields, "d");
+
+ singleOverrideFmt = unum_open(UNUM_DEFAULT, NULL, 0, singleLocale, NULL, &status);
+ assertSuccess("unum_open() in mixed", &status);
+
+ udat_adoptNumberFormatForFields(fmt2, fields, singleOverrideFmt, &status);
+ assertSuccess("udat_setNumberFormatForField() in mixed", &status);
+
+ udat_setNumberFormat(fmt2, overrideFmt2);
+ } else if ( strcmp(overrideNumberFormat[i][0], "do") == 0 ) { // o is an invalid field
+ udat_adoptNumberFormatForFields(fmt2, fields, overrideFmt2, &status);
+ if(status == U_INVALID_FORMAT_ERROR) {
+ udat_close(fmt2);
+ status = U_ZERO_ERROR;
+ continue;
+ }
+ } else {
+ udat_adoptNumberFormatForFields(fmt2, fields, overrideFmt2, &status);
+ assertSuccess("udat_setNumberFormatForField() in loop", &status);
+ }
+
+ udat_format(fmt2, july022008, ubuf, kUbufMax, NULL, &status);
+ assertSuccess("udat_format() july022008", &status);
+
+ if (u_strncmp(ubuf, expected, kUbufMax) != 0)
+ log_err("fail: udat_format for locale, expected %s, got %s\n",
+ u_austrncpy(bbuf1,expected,kUbufMax), u_austrncpy(bbuf2,ubuf,kUbufMax) );
+
+ udat_close(overrideFmt2);
+ udat_close(fmt2);
+ }
+ free(expected);
+ free(fields);
}
#endif /* #if !UCONFIG_NO_FORMATTING */
« no previous file with comments | « source/test/cintltst/cdattst.h ('k') | source/test/cintltst/cdtdptst.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698