cdtrgtst.c revision c73f511526464f8e56c242df80552e9b0d94ae3d
19f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson/******************************************************************** 29f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * COPYRIGHT: 39f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Copyright (c) 1997-2014, International Business Machines Corporation and 49f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * others. All Rights Reserved. 59f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson ********************************************************************/ 69f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson/******************************************************************************** 79f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson* 89f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson* File CDTRGTST.C 99f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson* 109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson* Madhu Katragadda Ported for C API 119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson* Modification History: 129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson* Date Name Description 139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson* 07/15/99 helena Ported to HPUX 10/11 CC. 149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson********************************************************************************* 159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson*/ 169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson/* REGRESSION TEST FOR DATE FORMAT */ 179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson#include "unicode/utypes.h" 199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson#if !UCONFIG_NO_FORMATTING 219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson#include "unicode/uloc.h" 239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson#include "unicode/udat.h" 249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson#include "unicode/ucal.h" 259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson#include "unicode/unum.h" 269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson#include "unicode/ustring.h" 279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson#include "cintltst.h" 289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson#include "cdtrgtst.h" 299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson#include "cmemory.h" 309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonvoid addDateForRgrTest(TestNode** root); 329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonvoid addDateForRgrTest(TestNode** root) 349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson{ 359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson addTest(root, &Test4029195, "tsformat/cdtrgtst/Test4029195"); 369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson addTest(root, &Test4056591, "tsformat/cdtrgtst/Test4056591"); 379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson addTest(root, &Test4059917, "tsformat/cdtrgtst/Test4059917"); 389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson addTest(root, &Test4060212, "tsformat/cdtrgtst/Test4060212"); 399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson addTest(root, &Test4061287, "tsformat/cdtrgtst/Test4061287"); 409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson addTest(root, &Test4073003, "tsformat/cdtrgtst/Test4073003"); 419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson addTest(root, &Test4162071, "tsformat/cdtrgtst/Test4162071"); 429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson addTest(root, &Test714, "tsformat/cdtrgtst/Test714"); 439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson addTest(root, &Test_GEec, "tsformat/cdtrgtst/Test_GEec"); /* tests for format chars GEec, jitterbugs 5726 6072 6585 */ 449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson} 459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson/** 479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @bug 4029195 489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonvoid Test4029195() 509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson{ 519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson int32_t resultlength, resultlengthneeded; 529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson UChar *fmdt, *todayS, *rt; 539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson UChar *pat=NULL; 549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson UChar *temp; 559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson UDate today, d1; 569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson UDateFormat *df; 579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson int32_t parsepos; 589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson UErrorCode status = U_ZERO_ERROR; 599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson log_verbose("Testing date format and parse function in regression test\n"); 619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson today = ucal_getNow(); 629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson df = udat_open(UDAT_DEFAULT,UDAT_DEFAULT ,"en_US", NULL, 0, NULL, 0, &status); 649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if(U_FAILURE(status)) 659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson log_data_err("FAIL: error in creating the dateformat using default date and time style : %s (Are you missing data?)\n", myErrorName(status)); 679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson return; 689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson resultlength=0; 709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson resultlengthneeded=udat_toPattern(df, TRUE, NULL, resultlength, &status); 719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if(status==U_BUFFER_OVERFLOW_ERROR) 729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson status=U_ZERO_ERROR; 749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson resultlength=resultlengthneeded + 1; 759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson pat=(UChar*)malloc(sizeof(UChar) * resultlength); 769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson udat_toPattern(df, TRUE, pat, resultlength, &status); 779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson log_verbose("pattern: %s\n", austrdup(pat)); 809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson fmdt = myFormatit(df, today); 839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if(fmdt) { 849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson log_verbose("today: %s\n", austrdup(fmdt)); 859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } else { 869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson log_data_err("ERROR: couldn't format, exitting test"); 879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson return; 889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson temp=(UChar*)malloc(sizeof(UChar) * 10); 919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson u_uastrcpy(temp, "M yyyy dd"); 929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson udat_applyPattern(df, TRUE, temp, u_strlen(temp)); 939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson todayS =myFormatit(df, today); 959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson log_verbose("After the pattern is applied\n today: %s\n", austrdup(todayS) ); 969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson parsepos=0; 979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson d1=udat_parse(df, todayS, u_strlen(todayS), &parsepos, &status); 989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if(U_FAILURE(status)) 999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 1009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson log_err("FAIL: Error in parsing using udat_parse(.....): %s\n", myErrorName(status)); 1019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 1029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 1039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson rt =myFormatit(df, d1); 1049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson log_verbose("today: %s\n", austrdup(rt) ); 1059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 1069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson log_verbose("round trip: %s\n", austrdup(rt) ); 1079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 1089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if(u_strcmp(rt, todayS)!=0) { 1099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson log_err("Fail: Want %s Got %s\n", austrdup(todayS), austrdup(rt) ); 1109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 1119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson else 1129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson log_verbose("Pass: parse and format working fine\n"); 1139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson udat_close(df); 1149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson free(temp); 1159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if(pat != NULL) { 1169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson free(pat); 1179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 1189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson} 1199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 1209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 1219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson/** 1229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @bug 4056591 1239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Verify the function of the [s|g]et2DigitYearStart() API. 1249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 1259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonvoid Test4056591() 1269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson{ 1279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson int i; 1289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson UCalendar *cal; 1299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson UDateFormat *def; 1309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson UDate start,exp,got; 1319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson UChar s[10]; 1329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson UChar *gotdate, *expdate; 1339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson UChar pat[10]; 1349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson UDate d[4]; 1359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson UErrorCode status = U_ZERO_ERROR; 1369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson const char* strings[] = { 1379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson "091225", 1389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson "091224", 1399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson "611226", 1409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson "991227" 1419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson }; 1429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 1439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson log_verbose("Testing s[get] 2 digit year start regressively\n"); 1449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson cal=ucal_open(NULL, 0, "en_US", UCAL_GREGORIAN, &status); 1459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if(U_FAILURE(status)){ 1469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson log_data_err("error in ucal_open caldef : %s - (Are you missing data?)\n", myErrorName(status)); 1479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson return; 1489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 1499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson ucal_setDateTime(cal, 1809, UCAL_DECEMBER, 25, 17, 40, 30, &status); 1509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson d[0]=ucal_getMillis(cal, &status); 1519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if(U_FAILURE(status)){ 1529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson log_err("Error: failure in get millis: %s\n", myErrorName(status)); 1539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 1549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson ucal_setDateTime(cal, 1909, UCAL_DECEMBER, 24, 17, 40, 30, &status); 1559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson d[1]=ucal_getMillis(cal, &status); 1569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson ucal_setDateTime(cal, 1861, UCAL_DECEMBER, 26, 17, 40, 30, &status); 1579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson d[2]=ucal_getMillis(cal, &status); 1589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson ucal_setDateTime(cal, 1999, UCAL_DECEMBER, 27, 17, 40, 30, &status); 1599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson d[3]=ucal_getMillis(cal, &status); 1609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 1619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 1629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson u_uastrcpy(pat, "yyMMdd"); 1639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson def = udat_open(UDAT_PATTERN,UDAT_PATTERN,NULL, NULL, 0, pat, u_strlen(pat), &status); 1649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if(U_FAILURE(status)) 1659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson { 1669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson log_data_err("FAIL: error in creating the dateformat using u_openPattern(): %s - (Are you missing data?)\n", myErrorName(status)); 1679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson return; 1689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 1699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson start = 1800; 1709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson udat_set2DigitYearStart(def, start, &status); 1719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if(U_FAILURE(status)) 1729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson log_err("ERROR: in setTwoDigitStartDate: %s\n", myErrorName(status)); 1739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if( (udat_get2DigitYearStart(def, &status) != start)) 1749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson log_err("ERROR: get2DigitYearStart broken\n"); 1759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 1769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 1779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson for(i = 0; i < 4; ++i) { 1789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson u_uastrcpy(s, strings[i]); 1799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson exp = d[i]; 1809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson got = udat_parse(def, s, u_strlen(s), 0, &status); 1819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson gotdate=myFormatit(def, got); 1829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson expdate=myFormatit(def, exp); 1839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 1849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson if (gotdate == NULL || expdate == NULL) { 1859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson log_err("myFormatit failed!\n"); 1869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 1879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson else if(u_strcmp(gotdate, expdate) !=0){ 1889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson log_err("set2DigitYearStart broken for %s \n got: %s, expected: %s\n", austrdup(s), 1899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson austrdup(gotdate), austrdup(expdate) ); 1909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 1919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson } 1929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 1939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson udat_close(def); 1949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson ucal_close(cal); 1959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson} 1969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 1979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 1989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson/** 1999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * SimpleDateFormat does not properly parse date strings without delimiters 2009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @bug 4059917 2019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */ 2029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonvoid Test4059917() 2039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson{ 2049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson UDateFormat* def; 2059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson UChar *myDate; 2069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson UErrorCode status = U_ZERO_ERROR; 2079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson UChar pattern[11]; 2089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson UChar tzID[4]; 2099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson 2109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson log_verbose("Testing apply pattern and to pattern regressively\n"); 2119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson u_uastrcpy(tzID, "PST"); 2129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson u_uastrcpy(pattern, "yyyy/MM/dd"); 2139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson log_verbose("%s\n", austrdup(pattern) ); 2149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson def = udat_open(UDAT_PATTERN,UDAT_PATTERN,NULL,tzID,-1,pattern, u_strlen(pattern),&status); 215 if(U_FAILURE(status)) 216 { 217 log_data_err("FAIL: error in creating the dateformat using openPattern: %s - (Are you missing data?)\n", myErrorName(status)); 218 return; 219 } 220 myDate=(UChar*)malloc(sizeof(UChar) * 11); 221 u_uastrcpy(myDate, "1970/01/12"); 222 223 aux917( def, myDate ); 224 udat_close(def); 225 226 u_uastrcpy(pattern, "yyyyMMdd"); 227 def = udat_open(UDAT_PATTERN,UDAT_PATTERN,NULL,tzID,-1,pattern, u_strlen(pattern),&status); 228 if(U_FAILURE(status)) 229 { 230 log_err("FAIL: error in creating the dateformat using openPattern: %s\n", myErrorName(status)); 231 return; 232 } 233 u_uastrcpy(myDate, "19700112"); 234 aux917( def, myDate ); 235 udat_close(def); 236 free(myDate); 237} 238 239void aux917( UDateFormat *fmt, UChar* str) 240{ 241 int32_t resultlength, resultlengthneeded; 242 UErrorCode status = U_ZERO_ERROR; 243 UChar* formatted=NULL; 244 UChar *pat=NULL; 245 UDate d1=1000000000.0; 246 247 resultlength=0; 248 resultlengthneeded=udat_toPattern(fmt, TRUE, NULL, resultlength, &status); 249 if(status==U_BUFFER_OVERFLOW_ERROR) 250 { 251 status=U_ZERO_ERROR; 252 resultlength=resultlengthneeded + 1; 253 pat=(UChar*)malloc(sizeof(UChar) * (resultlength)); 254 udat_toPattern(fmt, TRUE, pat, resultlength, &status); 255 } 256 if(U_FAILURE(status)){ 257 log_err("failure in retrieving the pattern: %s\n", myErrorName(status)); 258 } 259 log_verbose("pattern: %s\n", austrdup(pat) ); 260 261 status = U_ZERO_ERROR; 262 formatted = myFormatit(fmt, d1); 263 if( u_strcmp(formatted,str)!=0) { 264 log_err("Fail: Want %s Got: %s\n", austrdup(str), austrdup(formatted) ); 265 } 266 free(pat); 267} 268 269/** 270 * @bug 4060212 271 */ 272void Test4060212() 273{ 274 int32_t pos; 275 UCalendar *cal; 276 UDateFormat *formatter, *fmt; 277 UErrorCode status = U_ZERO_ERROR; 278 UDate myDate; 279 UChar *myString; 280 UChar dateString[30], pattern[20], tzID[4]; 281 u_uastrcpy(dateString, "1995-040.05:01:29 -8"); 282 u_uastrcpy(pattern, "yyyy-DDD.hh:mm:ss z"); 283 284 log_verbose( "dateString= %s Using yyyy-DDD.hh:mm:ss\n", austrdup(dateString) ); 285 status = U_ZERO_ERROR; 286 u_uastrcpy(tzID, "PST"); 287 288 formatter = udat_open(UDAT_PATTERN,UDAT_PATTERN,"en_US",tzID,-1,pattern, u_strlen(pattern), &status); 289 pos=0; 290 myDate = udat_parse(formatter, dateString, u_strlen(dateString), &pos, &status); 291 292 293 fmt = udat_open(UDAT_FULL,UDAT_LONG ,NULL, tzID, -1, NULL, 0, &status); 294 if(U_FAILURE(status)) 295 { 296 log_data_err("FAIL: error in creating the dateformat using default date and time style: %s - (Are you missing data?)\n", 297 myErrorName(status) ); 298 return; 299 } 300 myString = myFormatit(fmt, myDate); 301 (void)myString; /* Suppress set but not used warning. */ 302 cal=ucal_open(tzID, u_strlen(tzID), "en_US", UCAL_GREGORIAN, &status); 303 if(U_FAILURE(status)){ 304 log_err("FAIL: error in ucal_open caldef : %s\n", myErrorName(status)); 305 } 306 ucal_setMillis(cal, myDate, &status); 307 if ((ucal_get(cal, UCAL_DAY_OF_YEAR, &status) != 40)){ 308 log_err("Fail: Got %d Expected 40\n", ucal_get(cal, UCAL_DAY_OF_YEAR, &status)); 309 } 310 311 udat_close(formatter); 312 ucal_close(cal); 313 udat_close(fmt); 314 315} 316 317/** 318 * @bug 4061287 319 */ 320void Test4061287() 321{ 322 UBool ok; 323 int32_t pos; 324 UDateFormat *df; 325 UErrorCode status = U_ZERO_ERROR; 326 UDate myDate; 327 UChar pattern[21], dateString[11]; 328 329 u_uastrcpy(dateString, "35/13/1971"); 330 u_uastrcpy(pattern, "dd/mm/yyyy"); 331 status = U_ZERO_ERROR; 332 log_verbose("Testing parsing by changing the attribute lenient\n"); 333 df = udat_open(UDAT_PATTERN,UDAT_PATTERN,NULL,NULL,0,pattern, u_strlen(pattern),&status); 334 if(U_FAILURE(status)){ 335 log_data_err("ERROR: failure in open pattern of test4061287: %s - (Are you missing data?)\n", myErrorName(status)); 336 return; 337 } 338 339 pos=0; 340 341 udat_setLenient(df, FALSE); 342 ok=udat_isLenient(df); 343 if(ok==TRUE) 344 log_err("setLenient nor working\n"); 345 ok = FALSE; 346 myDate = udat_parse(df, dateString, u_strlen(dateString), &pos, &status); 347 (void)myDate; /* Suppress set but not used warning. */ 348 if(U_FAILURE(status)) 349 ok = TRUE; 350 if(ok!=TRUE) 351 log_err("Fail: Lenient not working: does lenient parsing in spite of setting Leninent as FALSE "); 352 353 udat_close(df); 354 355} 356 357 358 359/* The java.text.DateFormat.parse(String) method expects for the 360 US locale a string formatted according to mm/dd/yy and parses it 361 correctly. 362 363 When given a string mm/dd/yyyy it only parses up to the first 364 two y's, typically resulting in a date in the year 1919. 365 366 Please extend the parsing method(s) to handle strings with 367 four-digit year values (probably also applicable to various 368 other locales. */ 369/** 370 * @bug 4073003 371 */ 372void Test4073003() 373{ 374 int32_t pos,i; 375 UDate d,dd; 376 UChar *datestr; 377 UChar temp[15]; 378 UErrorCode status = U_ZERO_ERROR; 379 UDateFormat *fmt; 380 UChar *result, *result2; 381 const char* tests [] = { 382 "12/25/61", 383 "12/25/1961", 384 "4/3/1999", 385 "4/3/99" 386 }; 387 388 fmt= udat_open(UDAT_SHORT,UDAT_SHORT ,NULL, NULL, 0, NULL, 0, &status); 389 if(U_FAILURE(status)) 390 { 391 log_data_err("FAIL: error in creating the dateformat using short date and time style: %s (Are you missing data?)\n", 392 myErrorName(status)); 393 return; 394 } 395 u_uastrcpy(temp, "m/D/yy"); 396 udat_applyPattern(fmt, FALSE, temp, u_strlen(temp)); 397 398 for(i= 0; i < 4; i+=2) { 399 status=U_ZERO_ERROR; 400 datestr=(UChar*)malloc(sizeof(UChar) * (strlen(tests[i])+1)); 401 u_uastrcpy(datestr, tests[i]); 402 403 pos=0; 404 d = udat_parse(fmt, datestr, u_strlen(datestr), &pos, &status); 405 if(U_FAILURE(status)){ 406 log_err("ERROR : in test 4073003: %s\n", myErrorName(status)); 407 } 408 409 free(datestr); 410 datestr=(UChar*)malloc(sizeof(UChar) * (strlen(tests[i+1])+1)); 411 u_uastrcpy(datestr, tests[i+1]); 412 413 pos=0; 414 status=U_ZERO_ERROR; 415 dd = udat_parse(fmt, datestr, u_strlen(datestr), &pos, &status); 416 if(U_FAILURE(status)){ 417 log_err("ERROR : in test 4073003: %s\n", myErrorName(status)); 418 } 419 free(datestr); 420 421 result =myFormatit(fmt, d); 422 result2 =myFormatit(fmt, dd); 423 if(!result || !result2) { 424 log_data_err("Fail: could not format - exitting test\n"); 425 return; 426 } 427 if (u_strcmp(result, result2)!=0){ 428 log_err("Fail: %s != %s\n", austrdup(result), austrdup(result2) ); 429 } 430 else{ 431 log_verbose("Ok: %s == %s\n", austrdup(result), austrdup(result2) ); 432 } 433 434 } 435 udat_close(fmt); 436} 437 438/** 439 * @bug 4162071 440 **/ 441void Test4162071() 442{ 443 int32_t pos; 444 UDate x; 445 UErrorCode status = U_ZERO_ERROR; 446 UDateFormat *df; 447 UChar datestr[30]; 448 UChar format[50]; 449 u_uastrcpy(datestr, "Thu, 30-Jul-1999 11:51:14 GMT"); 450 u_uastrcpy(format, "EEE', 'dd-MMM-yyyy HH:mm:ss z"); /* RFC 822/1123 */ 451 status = U_ZERO_ERROR; 452 /* Can't hardcode the result to assume the default locale is "en_US". */ 453 df = udat_open(UDAT_PATTERN,UDAT_PATTERN,"en_US",NULL,0,format, u_strlen(format),&status); 454 if(U_FAILURE(status)){ 455 log_data_err("ERROR: couldn't create date format: %s\n", myErrorName(status)); 456 return; 457 } 458 pos=0; 459 x = udat_parse(df, datestr, u_strlen(datestr), &pos, &status); 460 (void)x; /* Suppress set but not used warning. */ 461 if(U_FAILURE(status)){ 462 log_data_err("ERROR : parse format %s fails : %s\n", austrdup(format), myErrorName(status)); 463 } 464 else{ 465 log_verbose("Parse format \"%s \" ok.\n", austrdup(format) ); 466 } 467 /*log_verbose("date= %s\n", austrdup(myFormatit(df, x)) );*/ 468 udat_close(df); 469} 470 471void Test714(void) 472{ 473 UDate d=978103543000.0; 474 UChar temp[20]; 475 UErrorCode status = U_ZERO_ERROR; 476 UDateFormat *fmt; 477 UChar *result; 478 const char* expect = "7:25:43 AM"; 479 480 ctest_setTimeZone(NULL, &status); 481 482 fmt= udat_open(UDAT_MEDIUM,UDAT_NONE ,"en_US_CA", NULL, -1, NULL, 0, &status); 483 if(U_FAILURE(status)) 484 { 485 log_data_err("FAIL: error in creating the dateformat using medium time style and NO date style: %s (Are you missing data?)\n", 486 myErrorName(status)); 487 return; 488 } 489 result =myFormatit(fmt, d); 490 if(!result) { 491 log_data_err("Fail: could not format - exitting test\n"); 492 return; 493 } 494 u_uastrcpy(temp, expect); 495 if (u_strcmp(result, temp)!=0){ 496 log_err("Fail: %s != %s\n", austrdup(result), expect); 497 } 498 else{ 499 log_verbose("Ok: %s == %s\n", austrdup(result), expect ); 500 } 501 502 udat_close(fmt); 503 504 ctest_resetTimeZone(); 505} 506 507enum { DATE_TEXT_MAX_CHARS = 64 }; 508static const UChar zonePST[] = { 0x50,0x53,0x54,0 }; /* "PST" */ 509static const UDate july022008 = 1215000001979.0; /* 02 July 2008 5:00:01.979 AM PDT (near ICU 4.0 release date :-) */ 510static const double dayMillisec = 8.64e+07; 511 512static const UChar dMyGGGPattern[] = { 0x64,0x64,0x20,0x4D,0x4D,0x4D,0x20,0x79,0x79,0x79,0x79,0x20,0x47,0x47,0x47,0 }; /* "dd MMM yyyy GGG" */ 513static const UChar dMyGGGGGPattern[] = { 0x64,0x64,0x20,0x4D,0x4D,0x4D,0x20,0x79,0x79,0x79,0x79,0x20,0x47,0x47,0x47,0x47,0x47,0 }; /* "dd MMM yyyy GGGGG" */ 514static const UChar dMyGGGText[] = { 0x30,0x32,0x20,0x4A,0x75,0x6C,0x20,0x32,0x30,0x30,0x38,0x20,0x41,0x44,0 }; /* "02 Jul 2008 AD" */ 515static const UChar dMyGGGGGText[] = { 0x30,0x32,0x20,0x4A,0x75,0x6C,0x20,0x32,0x30,0x30,0x38,0x20,0x41,0 }; /* "02 Jul 2008 A" */ 516static const UChar edMyPattern[] = { 0x65,0x20,0x64,0x64,0x20,0x4D,0x4D,0x4D,0x20,0x79,0x79,0x79,0x79,0 }; /* "e dd MMM yyyy" */ 517static const UChar eedMyPattern[] = { 0x65,0x65,0x20,0x64,0x64,0x20,0x4D,0x4D,0x4D,0x20,0x79,0x79,0x79,0x79,0 }; /* "ee dd MMM yyyy" */ 518static const UChar cdMyPattern[] = { 0x63,0x20,0x64,0x64,0x20,0x4D,0x4D,0x4D,0x20,0x79,0x79,0x79,0x79,0 }; /* "c dd MMM yyyy" */ 519static const UChar ccdMyPattern[] = { 0x63,0x63,0x20,0x64,0x64,0x20,0x4D,0x4D,0x4D,0x20,0x79,0x79,0x79,0x79,0 }; /* "cc dd MMM yyyy" */ 520static const UChar edMyText[] = { 0x34,0x20,0x30,0x32,0x20,0x4A,0x75,0x6C,0x20,0x32,0x30,0x30,0x38,0 }; /* "4 02 Jul 2008" */ 521static const UChar eedMyText[] = { 0x30,0x34,0x20,0x30,0x32,0x20,0x4A,0x75,0x6C,0x20,0x32,0x30,0x30,0x38,0 }; /* "04 02 Jul 2008" */ 522static const UChar eeedMyPattern[] = { 0x65,0x65,0x65,0x20,0x64,0x64,0x20,0x4D,0x4D,0x4D,0x20,0x79,0x79,0x79,0x79,0 }; /* "eee dd MMM yyyy" */ 523static const UChar EEEdMyPattern[] = { 0x45,0x45,0x45,0x20,0x64,0x64,0x20,0x4D,0x4D,0x4D,0x20,0x79,0x79,0x79,0x79,0 }; /* "EEE dd MMM yyyy" */ 524static const UChar EEdMyPattern[] = { 0x45,0x45,0x20,0x64,0x64,0x20,0x4D,0x4D,0x4D,0x20,0x79,0x79,0x79,0x79,0 }; /* "EE dd MMM yyyy" */ 525static const UChar eeedMyText[] = { 0x57,0x65,0x64,0x20,0x30,0x32,0x20,0x4A,0x75,0x6C,0x20,0x32,0x30,0x30,0x38,0 }; /* "Wed 02 Jul 2008" */ 526static const UChar eeeedMyPattern[] = { 0x65,0x65,0x65,0x65,0x20,0x64,0x64,0x20,0x4D,0x4D,0x4D,0x20,0x79,0x79,0x79,0x79,0 }; /* "eeee dd MMM yyyy" */ 527static const UChar eeeedMyText[] = { 0x57,0x65,0x64,0x6E,0x65,0x73,0x64,0x61,0x79,0x20,0x30,0x32,0x20,0x4A,0x75,0x6C,0x20,0x32,0x30,0x30,0x38,0 }; /* "Wednesday 02 Jul 2008" */ 528static const UChar eeeeedMyPattern[] = { 0x65,0x65,0x65,0x65,0x65,0x20,0x64,0x64,0x20,0x4D,0x4D,0x4D,0x20,0x79,0x79,0x79,0x79,0 }; /* "eeeee dd MMM yyyy" */ 529static const UChar eeeeedMyText[] = { 0x57,0x20,0x30,0x32,0x20,0x4A,0x75,0x6C,0x20,0x32,0x30,0x30,0x38,0 }; /* "W 02 Jul 2008" */ 530static const UChar ewYPattern[] = { 0x65,0x20,0x77,0x77,0x20,0x59,0x59,0x59,0x59,0 }; /* "e ww YYYY" */ 531static const UChar cwYPattern[] = { 0x63,0x20,0x77,0x77,0x20,0x59,0x59,0x59,0x59,0 }; /* "c ww YYYY" */ 532static const UChar ewYText[] = { 0x34,0x20,0x32,0x37,0x20,0x32,0x30,0x30,0x38,0 }; /* "4 27 2008" */ 533static const UChar HHmmssPattern[] = { 0x48,0x48,0x3A,0x6D,0x6D,0x3A,0x73,0x73,0 }; /* "HH:mm:ss" */ 534static const UChar HHmmssText[] = { 0x30,0x35,0x3A,0x30,0x30,0x3A,0x30,0x31,0 }; /* "05:00:01" */ 535static const UChar ssSPattern[] = { 0x73,0x73,0x2E,0x53,0 }; /* "ss.S" */ 536static const UChar ssSText[] = { 0x30,0x31,0x2E,0x39,0 }; /* "01.9" */ 537static const UChar ssSSPattern[] = { 0x73,0x73,0x2E,0x53,0x53,0 }; /* "ss.SS" */ 538static const UChar ssSSText[] = { 0x30,0x31,0x2E,0x39,0x37,0 }; /* "01.97" */ 539 540typedef struct { 541 const UChar * pattern; 542 const UChar * text; 543 const char * label; 544} DatePatternAndText; 545static const DatePatternAndText datePatternsAndText[] = { 546 { dMyGGGPattern, dMyGGGText, "dd MMM yyyy GGG" }, 547 { dMyGGGGGPattern, dMyGGGGGText, "dd MMM yyyy GGGGG" }, 548 { edMyPattern, edMyText, "e dd MMM yyyy" }, 549 { eedMyPattern, eedMyText, "ee dd MMM yyyy" }, 550 { cdMyPattern, edMyText, "c dd MMM yyyy" }, 551 { ccdMyPattern, edMyText, "cc dd MMM yyyy" }, 552 { eeedMyPattern, eeedMyText, "eee dd MMM yyyy" }, 553 { EEEdMyPattern, eeedMyText, "EEE dd MMM yyyy" }, 554 { EEdMyPattern, eeedMyText, "EE dd MMM yyyy" }, 555 { eeeedMyPattern, eeeedMyText, "eeee dd MMM yyyy" }, 556 { eeeeedMyPattern, eeeeedMyText, "eeeee dd MMM yyyy" }, 557 { ewYPattern, ewYText, "e ww YYYY" }, 558 { cwYPattern, ewYText, "c ww YYYY" }, 559 { HHmmssPattern, HHmmssText, "* HH:mm:ss" }, /* '*' at start means don't check value from parse (won't be july022008) */ 560 { ssSPattern, ssSText, "* ss.S" }, 561 { ssSSPattern, ssSSText, "* ss.SS" }, 562 { NULL, NULL, NULL } 563}; 564void Test_GEec(void) 565{ 566 UErrorCode status = U_ZERO_ERROR; 567 UDateFormat * dtfmt = udat_open(UDAT_LONG, UDAT_LONG, "en", zonePST, -1, NULL, 0, &status); 568 if ( U_SUCCESS(status) ) { 569 const DatePatternAndText *patTextPtr; 570 for (patTextPtr = datePatternsAndText; patTextPtr->pattern != NULL; ++patTextPtr) { 571 UChar dmyGnText[DATE_TEXT_MAX_CHARS]; 572 char byteText[3*DATE_TEXT_MAX_CHARS]; 573 int32_t dmyGnTextLen; 574 UDate dateResult; 575 576 udat_applyPattern(dtfmt, FALSE, patTextPtr->pattern, -1); 577 dmyGnTextLen = udat_format(dtfmt, july022008, dmyGnText, DATE_TEXT_MAX_CHARS, NULL, &status); 578 (void)dmyGnTextLen; /* Suppress set but not used warning. */ 579 if ( U_FAILURE(status) ) { 580 log_err("FAIL: udat_format with %s: %s\n", patTextPtr->label, myErrorName(status) ); 581 status = U_ZERO_ERROR; 582 } else if ( u_strcmp(dmyGnText, patTextPtr->text) != 0 ) { 583 log_err("FAIL: udat_format with %s: wrong UChar[] result %s\n", patTextPtr->label, u_austrcpy(byteText,dmyGnText) ); 584 } 585 586 dateResult = udat_parse(dtfmt, patTextPtr->text, -1, NULL, &status); /* no time, dateResult != july022008 by some hours */ 587 if ( U_FAILURE(status) ) { 588 log_err("FAIL: udat_parse with %s: %s\n", patTextPtr->label, myErrorName(status) ); 589 status = U_ZERO_ERROR; 590 } else if ( patTextPtr->label[0] != '*' && july022008 - dateResult > dayMillisec ) { 591 log_err("FAIL: udat_parse with %s: wrong UDate result\n", patTextPtr->label ); 592 } 593 } 594 udat_close(dtfmt); 595 } else { 596 log_data_err("FAIL: udat_open fails: %s (Are you missing data?)\n", myErrorName(status)); 597 } 598} 599 600/*INTERNAL FUNCTION USED */ 601 602UChar* myFormatit(UDateFormat* datdef, UDate d1) 603{ 604 UChar *result1=NULL; 605 int32_t resultlength, resultlengthneeded; 606 UErrorCode status = U_ZERO_ERROR; 607 608 resultlength=0; 609 resultlengthneeded=udat_format(datdef, d1, NULL, resultlength, NULL, &status); 610 if(status==U_BUFFER_OVERFLOW_ERROR) 611 { 612 status=U_ZERO_ERROR; 613 resultlength=resultlengthneeded+1; 614 /*result1=(UChar*)malloc(sizeof(UChar) * resultlength);*/ /*this leaks*/ 615 result1=(UChar*)ctst_malloc(sizeof(UChar) * resultlength); /*this won't*/ 616 udat_format(datdef, d1, result1, resultlength, NULL, &status); 617 } 618 if(U_FAILURE(status)) 619 { 620 log_err("FAIL: Error in formatting using udat_format(.....): %s\n", myErrorName(status)); 621 return 0; 622 } 623 624 625 return result1; 626 627} 628 629#endif /* #if !UCONFIG_NO_FORMATTING */ 630 631/*eof*/ 632