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