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 |