OLD | NEW |
(Empty) | |
| 1 /* |
| 2 ********************************************************************** |
| 3 * Copyright (c) 2003-2009, International Business Machines |
| 4 * Corporation and others. All Rights Reserved. |
| 5 ********************************************************************** |
| 6 * Author: Alan Liu |
| 7 * Created: March 20 2003 |
| 8 * Since: ICU 2.6 |
| 9 ********************************************************************** |
| 10 */ |
| 11 #include "cintltst.h" |
| 12 #include "cmemory.h" |
| 13 #include "cstring.h" |
| 14 #include "unicode/ucat.h" |
| 15 #include "unicode/ustring.h" |
| 16 |
| 17 /**********************************************************************/ |
| 18 /* Prototypes */ |
| 19 |
| 20 void TestMessageCatalog(void); |
| 21 |
| 22 /**********************************************************************/ |
| 23 /* Add our tests into the hierarchy */ |
| 24 |
| 25 void addPosixTest(TestNode** root); |
| 26 |
| 27 void addPosixTest(TestNode** root) |
| 28 { |
| 29 #if !UCONFIG_NO_FILE_IO && !UCONFIG_NO_LEGACY_CONVERSION |
| 30 addTest(root, &TestMessageCatalog, "tsutil/cposxtst/TestMessageCatalog"); |
| 31 #endif |
| 32 } |
| 33 |
| 34 /**********************************************************************/ |
| 35 /* Test basic ucat.h API */ |
| 36 |
| 37 void TestMessageCatalog(void) { |
| 38 |
| 39 UErrorCode ec = U_ZERO_ERROR; |
| 40 u_nl_catd catd; |
| 41 const char* DATA[] = { |
| 42 /* set_num, msg_num, expected string result, expected error code */ |
| 43 "1", "4", "Good morning.", "U_ZERO_ERROR", |
| 44 "1", "5", "Good afternoon.", "U_ZERO_ERROR", |
| 45 "1", "6", "FAIL", "U_MISSING_RESOURCE_ERROR", |
| 46 "1", "7", "Good evening.", "U_ZERO_ERROR", |
| 47 "1", "8", "Good night.", "U_ZERO_ERROR", |
| 48 "1", "9", "FAIL", "U_MISSING_RESOURCE_ERROR", |
| 49 "3", "1", "FAIL", "U_MISSING_RESOURCE_ERROR", |
| 50 "4", "14", "Please ", "U_ZERO_ERROR", |
| 51 "4", "15", "FAIL", "U_MISSING_RESOURCE_ERROR", |
| 52 "4", "19", "Thank you.", "U_ZERO_ERROR", |
| 53 "4", "20", "Sincerely,", "U_ZERO_ERROR", |
| 54 NULL |
| 55 }; |
| 56 const UChar FAIL[] = {0x46, 0x41, 0x49, 0x4C, 0x00}; /* "FAIL" */ |
| 57 int32_t i; |
| 58 const char *path = loadTestData(&ec); |
| 59 |
| 60 if (U_FAILURE(ec)) { |
| 61 log_data_err("FAIL: loadTestData => %s\n", u_errorName(ec)); |
| 62 return; |
| 63 } |
| 64 |
| 65 catd = u_catopen(path, "mc", &ec); |
| 66 if (U_FAILURE(ec)) { |
| 67 log_data_err("FAIL: u_catopen => %s\n", u_errorName(ec)); |
| 68 return; |
| 69 } |
| 70 |
| 71 for (i=0; DATA[i]!=NULL; i+=4) { |
| 72 int32_t set_num = T_CString_stringToInteger(DATA[i], 10); |
| 73 int32_t msg_num = T_CString_stringToInteger(DATA[i+1], 10); |
| 74 UChar exp[128]; |
| 75 int32_t len = -1; |
| 76 const char* err; |
| 77 char str[128]; |
| 78 const UChar* ustr; |
| 79 |
| 80 u_uastrcpy(exp, DATA[i+2]); |
| 81 |
| 82 ec = U_ZERO_ERROR; |
| 83 ustr = u_catgets(catd, set_num, msg_num, FAIL, &len, &ec); |
| 84 u_austrcpy(str, ustr); |
| 85 err = u_errorName(ec); |
| 86 |
| 87 log_verbose("u_catgets(%d, %d) => \"%s\", len=%d, %s\n", |
| 88 set_num, msg_num, str, len, err); |
| 89 |
| 90 if (u_strcmp(ustr, exp) != 0) { |
| 91 log_err("FAIL: u_catgets => \"%s\", exp. \"%s\"\n", |
| 92 str, DATA[i+2]); |
| 93 } |
| 94 |
| 95 if (len != (int32_t) uprv_strlen(DATA[i+2])) { |
| 96 log_err("FAIL: u_catgets => len=%d, exp. %d\n", |
| 97 len, uprv_strlen(DATA[i+2])); |
| 98 } |
| 99 |
| 100 if (uprv_strcmp(err, DATA[i+3]) != 0) { |
| 101 log_err("FAIL: u_catgets => %s, exp. %s\n", |
| 102 err, DATA[i+3]); |
| 103 } |
| 104 } |
| 105 |
| 106 u_catclose(catd); |
| 107 } |
| 108 |
| 109 /*eof*/ |
OLD | NEW |