X-Git-Url: https://git.saurik.com/apple/icu.git/blobdiff_plain/249c4c5ea9376c24572daf9c2effa7484a282f14..3d1f044b704633e2e541231cd17ae9ecf9ad5c7a:/icuSources/test/cintltst/crestst.c diff --git a/icuSources/test/cintltst/crestst.c b/icuSources/test/cintltst/crestst.c index 9d832fcf..3409f6c5 100644 --- a/icuSources/test/cintltst/crestst.c +++ b/icuSources/test/cintltst/crestst.c @@ -31,8 +31,10 @@ #include "unicode/ures.h" #include "crestst.h" #include "unicode/ctest.h" +#include "uresimp.h" static void TestOpenDirect(void); +static void TestOpenDirectFillIn(void); static void TestFallback(void); static void TestTable32(void); static void TestFileStream(void); @@ -96,6 +98,7 @@ void addResourceBundleTest(TestNode** root) #if !UCONFIG_NO_FILE_IO && !UCONFIG_NO_LEGACY_CONVERSION addTest(root, &TestConstruction1, "tsutil/crestst/TestConstruction1"); addTest(root, &TestOpenDirect, "tsutil/crestst/TestOpenDirect"); + addTest(root, &TestOpenDirectFillIn, "tsutil/crestst/TestOpenDirectFillIn"); addTest(root, &TestResourceBundles, "tsutil/crestst/TestResourceBundles"); addTest(root, &TestTable32, "tsutil/crestst/TestTable32"); addTest(root, &TestFileStream, "tsutil/crestst/TestFileStream"); @@ -614,6 +617,47 @@ TestOpenDirect(void) { ures_close(te_IN); } +static void +TestOpenDirectFillIn(void) { + // Test that ures_openDirectFillIn() opens a stack allocated resource bundle, similar to ures_open(). + // Since ures_openDirectFillIn is just a wrapper function, this is just a very basic test copied from + // the TestOpenDirect test above. + UErrorCode errorCode = U_ZERO_ERROR; + UResourceBundle *item; + UResourceBundle idna_rules; + ures_initStackObject(&idna_rules); + + ures_openDirectFillIn(&idna_rules, loadTestData(&errorCode), "idna_rules", &errorCode); + if(U_FAILURE(errorCode)) { + log_data_err("ures_openDirectFillIn(\"idna_rules\") failed: %s\n", u_errorName(errorCode)); + return; + } + + if(0!=uprv_strcmp("idna_rules", ures_getLocale(&idna_rules, &errorCode))) { + log_err("ures_openDirectFillIn(\"idna_rules\").getLocale()!=idna_rules\n"); + } + errorCode=U_ZERO_ERROR; + + /* try an item in idna_rules, must work */ + item=ures_getByKey(&idna_rules, "UnassignedSet", NULL, &errorCode); + if(U_FAILURE(errorCode)) { + log_err("translit_index.getByKey(local key) failed: %s\n", u_errorName(errorCode)); + errorCode=U_ZERO_ERROR; + } else { + ures_close(item); + } + + /* try an item in root, must fail */ + item=ures_getByKey(&idna_rules, "ShortLanguage", NULL, &errorCode); + if(U_FAILURE(errorCode)) { + errorCode=U_ZERO_ERROR; + } else { + log_err("idna_rules.getByKey(root key) succeeded!\n"); + ures_close(item); + } + ures_close(&idna_rules); +} + static int32_t parseTable32Key(const char *key) { int32_t number;