16f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/******************************************************************** 26f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * COPYRIGHT: 36f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Copyright (c) 1997-2013, International Business Machines Corporation and 46f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * others. All Rights Reserved. 56f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ********************************************************************/ 66f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/******************************************************************************* 76f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* 86f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* File CRESTST.C 96f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* 106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Modification History: 116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Name Description 126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Madhu Katragadda Ported for C API 136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* 06/14/99 stephen Updated for RB API changes (no suffix). 146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org******************************************************************************** 156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*/ 166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/utypes.h" 196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "cintltst.h" 206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/ustring.h" 216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "cstring.h" 226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "filestrm.h" 236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include <stdlib.h> 246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define RESTEST_HEAP_CHECK 0 266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/ures.h" 286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "crestst.h" 296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/ctest.h" 306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "ucol_imp.h" /* collation */ 326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define LENGTHOF(array) (int32_t)(sizeof(array)/sizeof((array)[0])) 346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgstatic void TestOpenDirect(void); 366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgstatic void TestFallback(void); 376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgstatic void TestTable32(void); 386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgstatic void TestFileStream(void); 396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/*****************************************************************************/ 406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgconst UChar kERROR[] = { 0x0045 /*E*/, 0x0052 /*'R'*/, 0x0052 /*'R'*/, 426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 0x004F /*'O'*/, 0x0052/*'R'*/, 0x0000 /*'\0'*/}; 436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/*****************************************************************************/ 456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgenum E_Where 476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org e_Root, 496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org e_te, 506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org e_te_IN, 516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org e_Where_count 526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org}; 536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgtypedef enum E_Where E_Where; 546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/*****************************************************************************/ 556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define CONFIRM_EQ(actual,expected) if (u_strcmp(expected,actual)==0){ record_pass(); } else { record_fail(); log_err("%s returned %s instead of %s\n", action, austrdup(actual), austrdup(expected)); } 576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define CONFIRM_ErrorCode(actual,expected) if ((expected)==(actual)) { record_pass(); } else { record_fail(); log_err("%s returned %s instead of %s\n", action, myErrorName(actual), myErrorName(expected)); } 596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/* Array of our test objects */ 626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgstatic struct 646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const char* name; 666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode expected_constructor_status; 676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org E_Where where; 686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UBool like[e_Where_count]; 696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UBool inherits[e_Where_count]; 706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} param[] = 716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /* "te" means test */ 736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /* "IN" means inherits */ 746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /* "NE" or "ne" means "does not exist" */ 756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org { "root", U_ZERO_ERROR, e_Root, { TRUE, FALSE, FALSE }, { TRUE, FALSE, FALSE } }, 776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org { "te", U_ZERO_ERROR, e_te, { FALSE, TRUE, FALSE }, { TRUE, TRUE, FALSE } }, 786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org { "te_IN", U_ZERO_ERROR, e_te_IN, { FALSE, FALSE, TRUE }, { TRUE, TRUE, TRUE } }, 796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org { "te_NE", U_USING_FALLBACK_WARNING, e_te, { FALSE, TRUE, FALSE }, { TRUE, TRUE, FALSE } }, 806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org { "te_IN_NE", U_USING_FALLBACK_WARNING, e_te_IN, { FALSE, FALSE, TRUE }, { TRUE, TRUE, TRUE } }, 816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org { "ne", U_USING_DEFAULT_WARNING, e_Root, { TRUE, FALSE, FALSE }, { TRUE, FALSE, FALSE } } 826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org}; 836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgstatic int32_t bundles_count = sizeof(param) / sizeof(param[0]); 856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/***************************************************************************************/ 896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/* Array of our test objects */ 916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgvoid addResourceBundleTest(TestNode** root); 936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgvoid addResourceBundleTest(TestNode** root) 956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#if !UCONFIG_NO_FILE_IO && !UCONFIG_NO_LEGACY_CONVERSION 976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org addTest(root, &TestConstruction1, "tsutil/crestst/TestConstruction1"); 986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org addTest(root, &TestOpenDirect, "tsutil/crestst/TestOpenDirect"); 996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org addTest(root, &TestResourceBundles, "tsutil/crestst/TestResourceBundles"); 1006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org addTest(root, &TestTable32, "tsutil/crestst/TestTable32"); 1016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org addTest(root, &TestFileStream, "tsutil/crestst/TestFileStream"); 1026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org addTest(root, &TestGetSize, "tsutil/crestst/TestGetSize"); 1036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org addTest(root, &TestGetLocaleByType, "tsutil/crestst/TestGetLocaleByType"); 1046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif 1056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org addTest(root, &TestFallback, "tsutil/crestst/TestFallback"); 1066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org addTest(root, &TestAliasConflict, "tsutil/crestst/TestAliasConflict"); 1076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 1096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/***************************************************************************************/ 1126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgvoid TestAliasConflict(void) { 1136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode status = U_ZERO_ERROR; 1146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UResourceBundle *he = NULL; 1156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UResourceBundle *iw = NULL; 1166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const UChar *result = NULL; 1176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t resultLen; 1186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org he = ures_open(NULL, "he", &status); 1206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org iw = ures_open(NULL, "iw", &status); 1216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(U_FAILURE(status)) { 1226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_err_status(status, "Failed to get resource with %s\n", myErrorName(status)); 1236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 1246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ures_close(iw); 1256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org result = ures_getStringByKey(he, "ExemplarCharacters", &resultLen, &status); 1266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(U_FAILURE(status) || result == NULL) { 1276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_err_status(status, "Failed to get resource with %s\n", myErrorName(status)); 1286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 1296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ures_close(he); 1306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 1316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgvoid TestResourceBundles() 1346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 1356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode status = U_ZERO_ERROR; 1366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org loadTestData(&status); 1376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(U_FAILURE(status)) { 1386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_data_err("Could not load testdata.dat, status = %s\n", u_errorName(status)); 1396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return; 1406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 1416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org testTag("only_in_Root", TRUE, FALSE, FALSE); 1436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org testTag("in_Root_te", TRUE, TRUE, FALSE); 1446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org testTag("in_Root_te_te_IN", TRUE, TRUE, TRUE); 1456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org testTag("in_Root_te_IN", TRUE, FALSE, TRUE); 1466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org testTag("only_in_te", FALSE, TRUE, FALSE); 1476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org testTag("only_in_te_IN", FALSE, FALSE, TRUE); 1486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org testTag("in_te_te_IN", FALSE, TRUE, TRUE); 1496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org testTag("nonexistent", FALSE, FALSE, FALSE); 1506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_verbose("Passed:= %d Failed= %d \n", pass, fail); 1526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 1536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgvoid TestConstruction1() 1556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 1566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UResourceBundle *test1 = 0, *test2 = 0; 1576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const UChar *result1, *result2; 1586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t resultLen; 1596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UChar temp[7]; 1606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode err = U_ZERO_ERROR; 1626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const char* testdatapath ; 1636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const char* locale="te_IN"; 1646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_verbose("Testing ures_open()......\n"); 1666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org testdatapath=loadTestData(&err); 1696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(U_FAILURE(err)) 1706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org { 1716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_data_err("Could not load testdata.dat %s \n",myErrorName(err)); 1726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return; 1736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 1746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org test1=ures_open(testdatapath, NULL, &err); 1766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(U_FAILURE(err)) 1776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org { 1786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_err("construction of %s did not succeed : %s \n",NULL, myErrorName(err)); 1796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return; 1806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 1816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org test2=ures_open(testdatapath, locale, &err); 1846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(U_FAILURE(err)) 1856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org { 1866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_err("construction of %s did not succeed : %s \n",locale, myErrorName(err)); 1876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return; 1886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 1896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org result1= ures_getStringByKey(test1, "string_in_Root_te_te_IN", &resultLen, &err); 1906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org result2= ures_getStringByKey(test2, "string_in_Root_te_te_IN", &resultLen, &err); 1916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if (U_FAILURE(err)) { 1946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_err("Something threw an error in TestConstruction(): %s\n", myErrorName(err)); 1956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return; 1966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 1976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org u_uastrcpy(temp, "TE_IN"); 1996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(u_strcmp(result2, temp)!=0) 2016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org { 2026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int n; 2036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_err("Construction test failed for ures_open();\n"); 2056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(!getTestOption(VERBOSITY_OPTION)) 2066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_info("(run verbose for more information)\n"); 2076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_verbose("\nGot->"); 2096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org for(n=0;result2[n];n++) 2106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org { 2116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_verbose("%04X ",result2[n]); 2126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 2136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_verbose("<\n"); 2146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_verbose("\nWant>"); 2166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org for(n=0;temp[n];n++) 2176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org { 2186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_verbose("%04X ",temp[n]); 2196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 2206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_verbose("<\n"); 2216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 2236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_verbose("for string_in_Root_te_te_IN, default.txt had %s\n", austrdup(result1)); 2256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_verbose("for string_in_Root_te_te_IN, te_IN.txt had %s\n", austrdup(result2)); 2266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /* Test getVersionNumber*/ 2286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_verbose("Testing version number\n"); 2296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_verbose("for getVersionNumber : %s\n", ures_getVersionNumber(test1)); 2306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ures_close(test1); 2326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ures_close(test2); 2336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 2346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/*****************************************************************************/ 2366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/*****************************************************************************/ 2376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgUBool testTag(const char* frag, 2396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UBool in_Root, 2406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UBool in_te, 2416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UBool in_te_IN) 2426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 2436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t passNum=pass; 2446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /* Make array from input params */ 2466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UBool is_in[3]; 2486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const char *NAME[] = { "ROOT", "TE", "TE_IN" }; 2496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /* Now try to load the desired items */ 2516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UResourceBundle* theBundle = NULL; 2526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org char tag[99]; 2536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org char action[256]; 2546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode status = U_ZERO_ERROR,expected_resource_status = U_ZERO_ERROR; 2556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UChar* base = NULL; 2566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UChar* expected_string = NULL; 2576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const UChar* string = NULL; 2586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org char item_tag[10]; 2596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t i,j; 2606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t actual_bundle; 2616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t resultLen; 2626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const char *testdatapath = loadTestData(&status); 2636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org is_in[0] = in_Root; 2656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org is_in[1] = in_te; 2666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org is_in[2] = in_te_IN; 2676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org strcpy(item_tag, "tag"); 2696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org status = U_ZERO_ERROR; 2716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org theBundle = ures_open(testdatapath, "root", &status); 2726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(U_FAILURE(status)) 2736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org { 2746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ures_close(theBundle); 2756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_err("Couldn't open root bundle in %s", testdatapath); 2766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return FALSE; 2776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 2786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ures_close(theBundle); 2796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org theBundle = NULL; 2806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org for (i=0; i<bundles_count; ++i) 2836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org { 2846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org strcpy(action,"construction for"); 2856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org strcat(action, param[i].name); 2866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org status = U_ZERO_ERROR; 2896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org theBundle = ures_open(testdatapath, param[i].name, &status); 2916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /*theBundle = ures_open("c:\\icu\\icu\\source\\test\\testdata\\testdata", param[i].name, &status);*/ 2926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CONFIRM_ErrorCode(status,param[i].expected_constructor_status); 2946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(i == 5) 2986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org actual_bundle = 0; /* ne -> default */ 2996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org else if(i == 3) 3006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org actual_bundle = 1; /* te_NE -> te */ 3016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org else if(i == 4) 3026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org actual_bundle = 2; /* te_IN_NE -> te_IN */ 3036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org else 3046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org actual_bundle = i; 3056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 3066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org expected_resource_status = U_MISSING_RESOURCE_ERROR; 3076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org for (j=e_te_IN; j>=e_Root; --j) 3086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org { 3096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if (is_in[j] && param[i].inherits[j]) 3106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org { 3116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 3126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(j == actual_bundle) /* it's in the same bundle OR it's a nonexistent=default bundle (5) */ 3136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org expected_resource_status = U_ZERO_ERROR; 3146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org else if(j == 0) 3156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org expected_resource_status = U_USING_DEFAULT_WARNING; 3166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org else 3176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org expected_resource_status = U_USING_FALLBACK_WARNING; 3186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 3196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_verbose("%s[%d]::%s: in<%d:%s> inherits<%d:%s>. actual_bundle=%s\n", 3206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org param[i].name, 3216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org i, 3226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org frag, 3236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org j, 3246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org is_in[j]?"Yes":"No", 3256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org j, 3266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org param[i].inherits[j]?"Yes":"No", 3276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org param[actual_bundle].name); 3286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 3296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org break; 3306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 3316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 3326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 3336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org for (j=param[i].where; j>=0; --j) 3346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org { 3356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if (is_in[j]) 3366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org { 3376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(base != NULL) { 3386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org free(base); 3396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org base = NULL; 3406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 3416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 3426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org base=(UChar*)malloc(sizeof(UChar)*(strlen(NAME[j]) + 1)); 3436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org u_uastrcpy(base,NAME[j]); 3446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 3456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org break; 3466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 3476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org else { 3486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(base != NULL) { 3496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org free(base); 3506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org base = NULL; 3516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 3526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org base = (UChar*) malloc(sizeof(UChar) * 1); 3536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org *base = 0x0000; 3546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 3556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 3566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 3576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /*-------------------------------------------------------------------- */ 3586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /* string */ 3596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 3606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org strcpy(tag,"string_"); 3616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org strcat(tag,frag); 3626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 3636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org strcpy(action,param[i].name); 3646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org strcat(action, ".ures_get(" ); 3656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org strcat(action,tag); 3666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org strcat(action, ")"); 3676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 3686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org string= kERROR; 3696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 3706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org status = U_ZERO_ERROR; 3716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 3726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ures_getStringByKey(theBundle, tag, &resultLen, &status); 3736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(U_SUCCESS(status)) 3746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org { 3756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org status = U_ZERO_ERROR; 3766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org string=ures_getStringByKey(theBundle, tag, &resultLen, &status); 3776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 3786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 3796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_verbose("%s got %d, expected %d\n", action, status, expected_resource_status); 3806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 3816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CONFIRM_ErrorCode(status, expected_resource_status); 3826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 3836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 3846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(U_SUCCESS(status)){ 3856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org expected_string=(UChar*)malloc(sizeof(UChar)*(u_strlen(base) + 3)); 3866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org u_strcpy(expected_string,base); 3876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 3886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 3896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org else 3906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org { 3916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org expected_string = (UChar*)malloc(sizeof(UChar)*(u_strlen(kERROR) + 1)); 3926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org u_strcpy(expected_string,kERROR); 3936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 3946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 3956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 3966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org CONFIRM_EQ(string, expected_string); 3976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 3986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org free(expected_string); 3996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ures_close(theBundle); 4006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 4016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org free(base); 4026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return (UBool)(passNum == pass); 4036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 4046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 4056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgvoid record_pass() 4066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 4076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ++pass; 4086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 4096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 4106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgvoid record_fail() 4116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 4126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ++fail; 4136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 4146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 4156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 4166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Test to make sure that the U_USING_FALLBACK_ERROR and U_USING_DEFAULT_ERROR 4176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * are set correctly 4186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 4196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 4206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgstatic void TestFallback() 4216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 4226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode status = U_ZERO_ERROR; 4236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UResourceBundle *fr_FR = NULL; 4246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UResourceBundle *subResource = NULL; 4256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const UChar *junk; /* ignored */ 4266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t resultLen; 4276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 4286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_verbose("Opening fr_FR.."); 4296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fr_FR = ures_open(NULL, "fr_FR", &status); 4306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(U_FAILURE(status)) 4316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org { 4326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_err_status(status, "Couldn't open fr_FR - %s\n", u_errorName(status)); 4336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return; 4346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 4356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 4366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org status = U_ZERO_ERROR; 4376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 4386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 4396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /* clear it out.. just do some calls to get the gears turning */ 4406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org junk = ures_getStringByKey(fr_FR, "LocaleID", &resultLen, &status); 4416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org (void)junk; /* Suppress set but not used warning. */ 4426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org status = U_ZERO_ERROR; 4436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org junk = ures_getStringByKey(fr_FR, "LocaleString", &resultLen, &status); 4446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org status = U_ZERO_ERROR; 4456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org junk = ures_getStringByKey(fr_FR, "LocaleID", &resultLen, &status); 4466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org status = U_ZERO_ERROR; 4476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 4486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /* OK first one. This should be a Default value. */ 4496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org subResource = ures_getByKey(fr_FR, "layout", NULL, &status); 4506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(status != U_USING_DEFAULT_WARNING) 4516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org { 4526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_data_err("Expected U_USING_DEFAULT_ERROR when trying to get layout from fr_FR, got %s\n", 4536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org u_errorName(status)); 4546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 4556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ures_close(subResource); 4566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org status = U_ZERO_ERROR; 4576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 4586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /* and this is a Fallback, to fr */ 4596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org junk = ures_getStringByKey(fr_FR, "ExemplarCharacters", &resultLen, &status); 4606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(status != U_USING_FALLBACK_WARNING) 4616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org { 4626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_data_err("Expected U_USING_FALLBACK_ERROR when trying to get ExemplarCharacters from fr_FR, got %s\n", 4636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org u_errorName(status)); 4646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 4656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 4666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org status = U_ZERO_ERROR; 4676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 4686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ures_close(fr_FR); 4696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 4706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 4716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgstatic void 4726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgTestOpenDirect(void) { 4736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UResourceBundle *idna_rules, *casing, *te_IN, *ne, *item; 4746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode errorCode; 4756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 4766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /* 4776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * test that ures_openDirect() opens a resource bundle 4786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * where one can look up its own items but not fallback items 4796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * from root or similar 4806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 4816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org errorCode=U_ZERO_ERROR; 4826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org idna_rules=ures_openDirect(loadTestData(&errorCode), "idna_rules", &errorCode); 4836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(U_FAILURE(errorCode)) { 4846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_data_err("ures_openDirect(\"idna_rules\") failed: %s\n", u_errorName(errorCode)); 4856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return; 4866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 4876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 4886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(0!=uprv_strcmp("idna_rules", ures_getLocale(idna_rules, &errorCode))) { 4896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_err("ures_openDirect(\"idna_rules\").getLocale()!=idna_rules\n"); 4906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 4916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org errorCode=U_ZERO_ERROR; 4926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 4936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /* try an item in idna_rules, must work */ 4946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org item=ures_getByKey(idna_rules, "UnassignedSet", NULL, &errorCode); 4956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(U_FAILURE(errorCode)) { 4966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_err("translit_index.getByKey(local key) failed: %s\n", u_errorName(errorCode)); 4976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org errorCode=U_ZERO_ERROR; 4986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } else { 4996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ures_close(item); 5006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 5016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 5026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /* try an item in root, must fail */ 5036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org item=ures_getByKey(idna_rules, "ShortLanguage", NULL, &errorCode); 5046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(U_FAILURE(errorCode)) { 5056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org errorCode=U_ZERO_ERROR; 5066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } else { 5076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_err("idna_rules.getByKey(root key) succeeded!\n"); 5086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ures_close(item); 5096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 5106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ures_close(idna_rules); 5116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 5126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /* now make sure that "idna_rules" will not work with ures_open() */ 5136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org errorCode=U_ZERO_ERROR; 5146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org idna_rules=ures_open("testdata", "idna_rules", &errorCode); 5156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(U_FAILURE(errorCode) || errorCode==U_USING_DEFAULT_WARNING || errorCode==U_USING_FALLBACK_WARNING) { 5166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /* falling back to default or root is ok */ 5176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org errorCode=U_ZERO_ERROR; 5186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } else if(0!=uprv_strcmp("idna_rules", ures_getLocale(idna_rules, &errorCode))) { 5196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /* Opening this file will work in "files mode" on Windows and the Mac, 5206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org which have case insensitive file systems */ 5216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_err("ures_open(\"idna_rules\") succeeded, should fail! Got: %s\n", u_errorName(errorCode)); 5226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 5236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ures_close(idna_rules); 5246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 5256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /* ures_openDirect("translit_index_WronG") must fail */ 5266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org idna_rules=ures_openDirect(NULL, "idna_rules_WronG", &errorCode); 5276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(U_FAILURE(errorCode)) { 5286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org errorCode=U_ZERO_ERROR; 5296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } else { 5306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_err("ures_openDirect(\"idna_rules_WronG\") succeeded, should fail!\n"); 5316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 5326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ures_close(idna_rules); 5336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 5346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org errorCode = U_USING_FALLBACK_WARNING;; 5356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org idna_rules=ures_openDirect("testdata", "idna_rules", &errorCode); 5366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(U_FAILURE(errorCode)) { 5376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_data_err("ures_openDirect(\"idna_rules\") failed when U_USING_FALLBACK_WARNING was set prior to call: %s\n", u_errorName(errorCode)); 5386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return; 5396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 5406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ures_close(idna_rules); 5416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 5426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /* 5436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * ICU 3.6 has new resource bundle syntax and data for bundles that do not 5446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * participate in locale fallback. Now, 5456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * - ures_open() works like ures_openDirect() on a bundle with a top-level 5466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * type of ":table(nofallback)" _if_ the bundle exists 5476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * - ures_open() will continue to find a root bundle if the requested one 5486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * does not exist, unlike ures_openDirect() 5496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 5506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Test with a different bundle than above to avoid confusion in the cache. 5516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 5526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 5536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /* 5546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * verify that ures_open("casing"), which now has a nofallback declaration, 5556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * does not enable fallbacks 5566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 5576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org errorCode=U_ZERO_ERROR; 5586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org casing=ures_open("testdata", "casing", &errorCode); 5596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(U_FAILURE(errorCode)) { 5606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_data_err("ures_open(\"casing\") failed: %s\n", u_errorName(errorCode)); 5616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return; 5626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 5636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 5646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org errorCode=U_ZERO_ERROR; 5656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org item=ures_getByKey(casing, "Info", NULL, &errorCode); 5666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(U_FAILURE(errorCode)) { 5676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_err("casing.getByKey(Info) failed - %s\n", u_errorName(errorCode)); 5686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } else { 5696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ures_close(item); 5706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 5716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 5726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org errorCode=U_ZERO_ERROR; 5736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org item=ures_getByKey(casing, "ShortLanguage", NULL, &errorCode); 5746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(U_SUCCESS(errorCode)) { 5756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_err("casing.getByKey(root key) succeeded despite nofallback declaration - %s\n", u_errorName(errorCode)); 5766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ures_close(item); 5776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 5786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ures_close(casing); 5796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 5806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /* 5816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * verify that ures_open("ne") finds the root bundle but 5826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * ures_openDirect("ne") does not 5836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 5846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org errorCode=U_ZERO_ERROR; 5856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ne=ures_open("testdata", "ne", &errorCode); 5866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(U_FAILURE(errorCode)) { 5876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_data_err("ures_open(\"ne\") failed (expected to get root): %s\n", u_errorName(errorCode)); 5886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 5896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(errorCode!=U_USING_DEFAULT_WARNING || 0!=uprv_strcmp("root", ures_getLocale(ne, &errorCode))) { 5906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_err("ures_open(\"ne\") found something other than \"root\" - %s\n", u_errorName(errorCode)); 5916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 5926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ures_close(ne); 5936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 5946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org errorCode=U_ZERO_ERROR; 5956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ne=ures_openDirect("testdata", "ne", &errorCode); 5966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(U_SUCCESS(errorCode)) { 5976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_data_err("ures_openDirect(\"ne\") succeeded unexpectedly\n"); 5986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ures_close(ne); 5996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 6006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 6016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /* verify that ures_openDirect("te_IN") does not enable fallbacks */ 6026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org errorCode=U_ZERO_ERROR; 6036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org te_IN=ures_openDirect("testdata", "te_IN", &errorCode); 6046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(U_FAILURE(errorCode)) { 6056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_data_err("ures_open(\"te_IN\") failed: %s\n", u_errorName(errorCode)); 6066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return; 6076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 6086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org errorCode=U_ZERO_ERROR; 6096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org item=ures_getByKey(te_IN, "ShortLanguage", NULL, &errorCode); 6106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(U_SUCCESS(errorCode)) { 6116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_err("te_IN.getByKey(root key) succeeded despite use of ures_openDirect() - %s\n", u_errorName(errorCode)); 6126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ures_close(item); 6136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 6146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ures_close(te_IN); 6156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 6166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 6176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgstatic int32_t 6186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgparseTable32Key(const char *key) { 6196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t number; 6206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org char c; 6216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 6226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org number=0; 6236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org while((c=*key++)!=0) { 6246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org number<<=1; 6256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(c=='1') { 6266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org number|=1; 6276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 6286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 6296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return number; 6306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 6316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 6326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgstatic void 6336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgTestTable32(void) { 6346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org static const struct { 6356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const char *key; 6366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t number; 6376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } testcases[]={ 6386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org { "ooooooooooooooooo", 0 }, 6396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org { "oooooooooooooooo1", 1 }, 6406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org { "ooooooooooooooo1o", 2 }, 6416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org { "oo11ooo1ooo11111o", 25150 }, 6426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org { "oo11ooo1ooo111111", 25151 }, 6436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org { "o1111111111111111", 65535 }, 6446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org { "1oooooooooooooooo", 65536 }, 6456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org { "1ooooooo11o11ooo1", 65969 }, 6466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org { "1ooooooo11o11oo1o", 65970 }, 6476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org { "1ooooooo111oo1111", 65999 } 6486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org }; 6496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 6506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /* ### TODO UResourceBundle staticItem={ 0 }; - need to know the size */ 6516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UResourceBundle *res, *item; 6526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const UChar *s; 6536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const char *key; 6546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode errorCode; 6556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t i, j, number, parsedNumber, length, count; 6566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 6576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org errorCode=U_ZERO_ERROR; 6586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org res=ures_open(loadTestData(&errorCode), "testtable32", &errorCode); 6596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(U_FAILURE(errorCode)) { 6606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_data_err("unable to open testdata/testtable32.res - %s\n", u_errorName(errorCode)); 6616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return; 6626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 6636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(ures_getType(res)!=URES_TABLE) { 6646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_data_err("testdata/testtable32.res has type %d instead of URES_TABLE\n", ures_getType(res)); 6656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 6666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 6676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org count=ures_getSize(res); 6686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(count!=66000) { 6696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_err("testdata/testtable32.res should have 66000 entries but has %d\n", count); 6706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 6716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 6726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /* get the items by index */ 6736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org item=NULL; 6746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org for(i=0; i<count; ++i) { 6756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org item=ures_getByIndex(res, i, item, &errorCode); 6766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(U_FAILURE(errorCode)) { 6776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_err("unable to get item %d of %d in testdata/testtable32.res - %s\n", 6786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org i, count, u_errorName(errorCode)); 6796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org break; 6806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 6816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 6826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org key=ures_getKey(item); 6836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org parsedNumber=parseTable32Key(key); 6846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 6856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org switch(ures_getType(item)) { 6866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org case URES_STRING: 6876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org s=ures_getString(item, &length, &errorCode); 6886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(U_FAILURE(errorCode) || s==NULL) { 6896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_err("unable to access the string \"%s\" at %d in testdata/testtable32.res - %s\n", 6906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org key, i, u_errorName(errorCode)); 6916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org number=-1; 6926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } else { 6936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org j=0; 6946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org U16_NEXT(s, j, length, number); 6956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 6966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org break; 6976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org case URES_INT: 6986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org number=ures_getInt(item, &errorCode); 6996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(U_FAILURE(errorCode)) { 7006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_err("unable to access the integer \"%s\" at %d in testdata/testtable32.res - %s\n", 7016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org key, i, u_errorName(errorCode)); 7026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org number=-1; 7036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 7046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org break; 7056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org default: 7066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_err("unexpected resource type %d for \"%s\" at %d in testdata/testtable32.res - %s\n", 7076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ures_getType(item), key, i, u_errorName(errorCode)); 7086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org number=-1; 7096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org break; 7106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 7116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 7126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(number>=0 && number!=parsedNumber) { 7136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_err("\"%s\" at %d in testdata/testtable32.res has a string/int value of %d, expected %d\n", 7146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org key, i, number, parsedNumber); 7156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 7166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 7176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 7186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /* search for some items by key */ 7196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org for(i=0; i<LENGTHOF(testcases); ++i) { 7206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org item=ures_getByKey(res, testcases[i].key, item, &errorCode); 7216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(U_FAILURE(errorCode)) { 7226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_err("unable to find the key \"%s\" in testdata/testtable32.res - %s\n", 7236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org testcases[i].key, u_errorName(errorCode)); 7246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org continue; 7256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 7266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 7276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org switch(ures_getType(item)) { 7286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org case URES_STRING: 7296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org s=ures_getString(item, &length, &errorCode); 7306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(U_FAILURE(errorCode) || s==NULL) { 7316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_err("unable to access the string \"%s\" in testdata/testtable32.res - %s\n", 7326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org testcases[i].key, u_errorName(errorCode)); 7336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org number=-1; 7346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } else { 7356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org j=0; 7366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org U16_NEXT(s, j, length, number); 7376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 7386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org break; 7396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org case URES_INT: 7406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org number=ures_getInt(item, &errorCode); 7416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(U_FAILURE(errorCode)) { 7426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_err("unable to access the integer \"%s\" in testdata/testtable32.res - %s\n", 7436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org testcases[i].key, u_errorName(errorCode)); 7446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org number=-1; 7456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 7466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org break; 7476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org default: 7486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_err("unexpected resource type %d for \"%s\" in testdata/testtable32.res - %s\n", 7496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ures_getType(item), testcases[i].key, u_errorName(errorCode)); 7506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org number=-1; 7516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org break; 7526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 7536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 7546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(number>=0 && number!=testcases[i].number) { 7556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_err("\"%s\" in testdata/testtable32.res has a string/int value of %d, expected %d\n", 7566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org testcases[i].key, number, testcases[i].number); 7576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 7586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 7596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org key=ures_getKey(item); 7606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(0!=uprv_strcmp(key, testcases[i].key)) { 7616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_err("\"%s\" in testdata/testtable32.res claims to have the key \"%s\"\n", 7626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org testcases[i].key, key); 7636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 7646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 7656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 7666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ures_close(item); 7676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ures_close(res); 7686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 7696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 7706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgstatic void TestFileStream(void){ 7716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t c = 0; 7726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t c1=0; 7736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode status = U_ZERO_ERROR; 7746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const char* testdatapath = loadTestData(&status); 7756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org char* fileName = (char*) malloc(uprv_strlen(testdatapath) +10); 7766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org FileStream* stream = NULL; 7776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /* these should not be closed */ 7786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org FileStream* pStdin = T_FileStream_stdin(); 7796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org FileStream* pStdout = T_FileStream_stdout(); 7806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org FileStream* pStderr = T_FileStream_stderr(); 7816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 7826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const char* testline = "This is a test line"; 7836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t bufLen = (int32_t)strlen(testline)+10; 7846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org char* buf = (char*) malloc(bufLen); 7856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t retLen = 0; 7866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 7876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(pStdin==NULL){ 7886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_err("failed to get T_FileStream_stdin()"); 7896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 7906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(pStdout==NULL){ 7916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_err("failed to get T_FileStream_stdout()"); 7926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 7936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(pStderr==NULL){ 7946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_err("failed to get T_FileStream_stderr()"); 7956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 7966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 7976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org uprv_strcpy(fileName,testdatapath); 7986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org uprv_strcat(fileName,".dat"); 7996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org stream = T_FileStream_open(fileName, "r"); 8006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(stream==NULL){ 8016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_data_err("T_FileStream_open failed to open %s\n",fileName); 8026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } else { 8036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(!T_FileStream_file_exists(fileName)){ 8046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_data_err("T_FileStream_file_exists failed to verify existence of %s \n",fileName); 8056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 8066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 8076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org retLen=T_FileStream_read(stream,&c,1); 8086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(retLen==0){ 8096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_data_err("T_FileStream_read failed to read from %s \n",fileName); 8106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 8116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org retLen=0; 8126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org T_FileStream_rewind(stream); 8136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org T_FileStream_read(stream,&c1,1); 8146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(c!=c1){ 8156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_data_err("T_FileStream_rewind failed to rewind %s \n",fileName); 8166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 8176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org T_FileStream_rewind(stream); 8186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org c1 = T_FileStream_peek(stream); 8196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(c!=c1){ 8206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_data_err("T_FileStream_peek failed to peekd %s \n",fileName); 8216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 8226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org c = T_FileStream_getc(stream); 8236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org T_FileStream_ungetc(c,stream); 8246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(c!= T_FileStream_getc(stream)){ 8256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_data_err("T_FileStream_ungetc failed to d %s \n",fileName); 8266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 8276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 8286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(T_FileStream_size(stream)<=0){ 8296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_data_err("T_FileStream_size failed to d %s \n",fileName); 8306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 8316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(T_FileStream_error(stream)){ 8326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_data_err("T_FileStream_error shouldn't have an error %s\n",fileName); 8336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 8346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(!T_FileStream_error(NULL)){ 8356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_err("T_FileStream_error didn't get an error %s\n",fileName); 8366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 8376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org T_FileStream_putc(stream, 0x20); 8386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(!T_FileStream_error(stream)){ 8396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /* 8406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org Warning 8416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org writing to a read-only file may not consistently fail on all platforms 8426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org (e.g. HP-UX, FreeBSD, MacOSX) 8436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 8446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_verbose("T_FileStream_error didn't get an error when writing to a readonly file %s\n",fileName); 8456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 8466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 8476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org T_FileStream_close(stream); 8486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 8496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /* test writing function */ 8506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org stream=NULL; 8516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org uprv_strcpy(fileName,testdatapath); 8526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org uprv_strcat(fileName,".tmp"); 8536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org stream = T_FileStream_open(fileName,"w+"); 8546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 8556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(stream == NULL){ 8566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_data_err("Could not open %s for writing\n",fileName); 8576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } else { 8586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org c= '$'; 8596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org T_FileStream_putc(stream,c); 8606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org T_FileStream_rewind(stream); 8616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(c != T_FileStream_getc(stream)){ 8626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_data_err("T_FileStream_putc failed %s\n",fileName); 8636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 8646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 8656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org T_FileStream_rewind(stream); 8666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org T_FileStream_writeLine(stream,testline); 8676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org T_FileStream_rewind(stream); 8686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org T_FileStream_readLine(stream,buf,bufLen); 8696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(uprv_strncmp(testline, buf,uprv_strlen(buf))!=0){ 8706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_data_err("T_FileStream_writeLine failed %s\n",fileName); 8716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 8726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 8736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org T_FileStream_rewind(stream); 8746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org T_FileStream_write(stream,testline,(int32_t)strlen(testline)); 8756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org T_FileStream_rewind(stream); 8766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org retLen = T_FileStream_read(stream, buf, bufLen); 8776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(uprv_strncmp(testline, buf,retLen)!=0){ 8786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_data_err("T_FileStream_write failed %s\n",fileName); 8796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 8806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 8816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org T_FileStream_close(stream); 8826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 8836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(!T_FileStream_remove(fileName)){ 8846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_data_err("T_FileStream_remove failed to delete %s\n",fileName); 8856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 8866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 8876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 8886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org free(fileName); 8896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org free(buf); 8906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 8916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 8926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 8936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgstatic void TestGetSize(void) { 8946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const struct { 8956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const char* key; 8966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t size; 8976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } test[] = { 8986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org { "zerotest", 1}, 8996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org { "one", 1}, 9006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org { "importtest", 1}, 9016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org { "integerarray", 1}, 9026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org { "emptyarray", 0}, 9036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org { "emptytable", 0}, 9046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org { "emptystring", 1}, /* empty string is still a string */ 9056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org { "emptyint", 1}, 9066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org { "emptybin", 1}, 9076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org { "testinclude", 1}, 9086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org { "collations", 1}, /* not 2 - there is hidden %%CollationBin */ 9096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org }; 9106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 9116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode status = U_ZERO_ERROR; 9126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 9136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UResourceBundle *rb = NULL; 9146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UResourceBundle *res = NULL; 9156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UResourceBundle *helper = NULL; 9166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const char* testdatapath = loadTestData(&status); 9176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t i = 0, j = 0; 9186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t size = 0; 9196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 9206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(U_FAILURE(status)) 9216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org { 9226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_data_err("Could not load testdata.dat %s\n", u_errorName(status)); 9236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return; 9246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 9256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 9266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org rb = ures_open(testdatapath, "testtypes", &status); 9276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(U_FAILURE(status)) 9286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org { 9296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_err("Could not testtypes resource bundle %s\n", u_errorName(status)); 9306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return; 9316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 9326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 9336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org for(i = 0; i < sizeof(test)/sizeof(test[0]); i++) { 9346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org res = ures_getByKey(rb, test[i].key, res, &status); 9356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(U_FAILURE(status)) 9366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org { 9376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_err("Couldn't find the key %s. Error: %s\n", test[i].key, u_errorName(status)); 9386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ures_close(rb); 9396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return; 9406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 9416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org size = ures_getSize(res); 9426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(size != test[i].size) { 9436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_err("Expected size %i, got size %i for key %s\n", test[i].size, size, test[i].key); 9446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org for(j = 0; j < size; j++) { 9456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org helper = ures_getByIndex(res, j, helper, &status); 9466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_err("%s\n", ures_getKey(helper)); 9476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 9486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 9496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 9506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ures_close(helper); 9516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ures_close(res); 9526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ures_close(rb); 9536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 9546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 9556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgstatic void TestGetLocaleByType(void) { 9566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org static const struct { 9576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const char *requestedLocale; 9586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const char *resourceKey; 9596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const char *validLocale; 9606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const char *actualLocale; 9616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } test[] = { 9626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org { "te_IN_BLAH", "string_only_in_te_IN", "te_IN", "te_IN" }, 9636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org { "te_IN_BLAH", "string_only_in_te", "te_IN", "te" }, 9646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org { "te_IN_BLAH", "string_only_in_Root", "te_IN", "root" }, 9656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org { "te_IN_BLAH_01234567890_01234567890_01234567890_01234567890_01234567890_01234567890", "array_2d_only_in_Root", "te_IN", "root" }, 9666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org { "te_IN_BLAH@currency=euro", "array_2d_only_in_te_IN", "te_IN", "te_IN" }, 9676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org { "te_IN_BLAH@collation=phonebook;calendar=thai", "array_2d_only_in_te", "te_IN", "te" } 9686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org }; 9696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 9706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode status = U_ZERO_ERROR; 9716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 9726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UResourceBundle *rb = NULL; 9736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UResourceBundle *res = NULL; 9746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const char* testdatapath = loadTestData(&status); 9756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t i = 0; 9766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const char *locale = NULL; 9776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 9786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(U_FAILURE(status)) 9796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org { 9806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_data_err("Could not load testdata.dat %s\n", u_errorName(status)); 9816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return; 9826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 9836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 9846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org for(i = 0; i < sizeof(test)/sizeof(test[0]); i++) { 9856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org rb = ures_open(testdatapath, test[i].requestedLocale, &status); 9866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(U_FAILURE(status)) 9876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org { 9886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_err("Could not open resource bundle %s (error %s)\n", test[i].requestedLocale, u_errorName(status)); 9896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org status = U_ZERO_ERROR; 9906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org continue; 9916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 9926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 9936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org res = ures_getByKey(rb, test[i].resourceKey, res, &status); 9946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(U_FAILURE(status)) 9956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org { 9966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_err("Couldn't find the key %s. Error: %s\n", test[i].resourceKey, u_errorName(status)); 9976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ures_close(rb); 9986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org status = U_ZERO_ERROR; 9996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org continue; 10006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 10016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 10026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org locale = ures_getLocaleByType(res, ULOC_REQUESTED_LOCALE, &status); 10036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(locale) { 10046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_err("Requested locale should return NULL\n"); 10056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 10066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org locale = ures_getLocaleByType(res, ULOC_VALID_LOCALE, &status); 10076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(!locale || strcmp(locale, test[i].validLocale) != 0) { 10086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_err("Expected valid locale to be %s. Got %s\n", test[i].requestedLocale, locale); 10096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 10106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org locale = ures_getLocaleByType(res, ULOC_ACTUAL_LOCALE, &status); 10116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(!locale || strcmp(locale, test[i].actualLocale) != 0) { 10126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org log_err("Expected actual locale to be %s. Got %s\n", test[i].requestedLocale, locale); 10136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 10146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ures_close(rb); 10156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 10166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ures_close(res); 10176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 10186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1019