1 /* $Id: test_icu_I18N.c,v 1.4 2007-05-01 08:10:26 marc Exp $
2 Copyright (c) 2006-2007, Index Data.
4 This file is part of Pazpar2.
6 Pazpar2 is free software; you can redistribute it and/or modify it under
7 the terms of the GNU General Public License as published by the Free
8 Software Foundation; either version 2, or (at your option) any later
11 Pazpar2 is distributed in the hope that it will be useful, but WITHOUT ANY
12 WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
16 You should have received a copy of the GNU General Public License
17 along with Pazpar2; see the file LICENSE. If not, write to the
18 Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
22 // DO NOT EDIT THIS FILE IF YOUR EDITOR DOES NOT SUPPORT UTF-8
31 #include <yaz/timing.h>
43 // DO NOT EDIT THIS FILE IF YOUR EDITOR DOES NOT SUPPORT UTF-8
45 int test_icu_casemap(const char * locale, char action,
46 const char * src8, const char * check8)
48 NMEM nmem = nmem_create();
51 const char * dest8 = 0;
53 //size_t src8_len = strlen(src8);
56 //printf("original string: '%s' (%d)\n", src8, (int) src8_len);
59 dest8 = icu_casemap(nmem, buf, buf_cap, &dest8_len,
60 src8, locale, action);
63 //printf("icu_casemap '%s:%c' '%s' (%d)\n",
64 // locale, action, dest8, (int) dest8_len);
67 && (dest8_len == strlen(check8))
68 && !strcmp(check8, dest8))
76 // DO NOT EDIT THIS FILE IF YOUR EDITOR DOES NOT SUPPORT UTF-8
78 void test_icu_I18N_casemap(int argc, char **argv)
84 YAZ_CHECK(test_icu_casemap("en", 'l',
85 "A ReD fOx hunTS sQUirriLs",
86 "a red fox hunts squirrils"));
88 YAZ_CHECK(test_icu_casemap("en", 'u',
89 "A ReD fOx hunTS sQUirriLs",
90 "A RED FOX HUNTS SQUIRRILS"));
92 YAZ_CHECK(test_icu_casemap("en", 'f',
93 "A ReD fOx hunTS sQUirriLs",
94 "a red fox hunts squirrils"));
96 // this one fails and needs more investigation ..
97 YAZ_CHECK(0 == test_icu_casemap("en", 't',
98 "A ReD fOx hunTS sQUirriLs",
99 "A Red Fox Hunts Squirrils"));
105 YAZ_CHECK(test_icu_casemap("da", 'l',
106 "åh ÆbLE, øs fLØde i Åen efter bLåBærGRødeN",
107 "åh æble, øs fløde i åen efter blåbærgrøden"));
109 YAZ_CHECK(test_icu_casemap("da", 'u',
110 "åh ÆbLE, øs fLØde i Åen efter bLåBærGRødeN",
111 "ÅH ÆBLE, ØS FLØDE I ÅEN EFTER BLÅBÆRGRØDEN"));
113 YAZ_CHECK(test_icu_casemap("da", 'f',
114 "åh ÆbLE, øs fLØde i Åen efter bLåBærGRødeN",
115 "åh æble, øs fløde i åen efter blåbærgrøden"));
117 YAZ_CHECK(test_icu_casemap("da", 't',
118 "åh ÆbLE, øs fLØde i Åen efter bLåBærGRødeN",
119 "Åh Æble, Øs Fløde I Åen Efter Blåbærgrøden"));
124 YAZ_CHECK(test_icu_casemap("de", 'l',
125 "zWÖlf ärgerliche Würste rollen ÜBer die StRAße",
126 "zwölf ärgerliche würste rollen über die straße"));
128 YAZ_CHECK(test_icu_casemap("de", 'u',
129 "zWÖlf ärgerliche Würste rollen ÜBer die StRAße",
130 "ZWÖLF ÄRGERLICHE WÜRSTE ROLLEN ÜBER DIE STRASSE"));
132 YAZ_CHECK(test_icu_casemap("de", 'f',
133 "zWÖlf ärgerliche Würste rollen ÜBer die StRAße",
134 "zwölf ärgerliche würste rollen über die strasse"));
136 YAZ_CHECK(test_icu_casemap("de", 't',
137 "zWÖlf ärgerliche Würste rollen ÜBer die StRAße",
138 "Zwölf Ärgerliche Würste Rollen Über Die Straße"));
143 void test_icu_I18N_casemap_failures(int argc, char **argv)
146 size_t buf_cap = 128;
148 size_t dest8_len = 0;
149 NMEM nmem = nmem_create();
152 const char * src8 = "A ReD fOx hunTS sQUirriLs";
153 //size_t src8_len = strlen(src8);
155 //printf("original string: '%s' (%d)\n", src8, (int) src8_len);
157 // some calling error needs investigation
158 dest8 = icu_casemap(nmem, buf, buf_cap, &dest8_len,
160 YAZ_CHECK(0 == dest8_len);
161 //printf("icu_casemap 'en:t' '%s' (%d)\n", dest8, (int) dest8_len);
164 // attention: does not fail even if no locale 'xy_zz' defined
165 // it seems to default to english locale
166 dest8 = icu_casemap(nmem, buf, buf_cap, &dest8_len,
167 src8, "zz_abc", 'l');
168 YAZ_CHECK(dest8_len);
169 //printf("icu_casemap 'zz:l' '%s' (%d)\n", dest8, (int) dest8_len);
172 // shall fail - no buf buffer defined
173 dest8 = icu_casemap(nmem, 0, buf_cap, &dest8_len,
175 YAZ_CHECK(0 == dest8_len);
176 //printf("icu_casemap 'en:l' '%s' (%d)\n", dest8, (int) dest8_len);
178 // shall fail - no buf_cap defined
179 dest8 = icu_casemap(nmem, buf, 0, &dest8_len,
181 YAZ_CHECK(0 == dest8_len);
182 //printf("icu_casemap 'en:l' '%s' (%d)\n", dest8, (int) dest8_len);
184 // shall fail - no action 'x' defined
185 dest8 = icu_casemap(nmem, buf, buf_cap, &dest8_len,
187 YAZ_CHECK(0 == dest8_len);
188 //printf("icu_casemap 'en:x' '%s' (%d)\n", dest8, (int) dest8_len);
195 // DO NOT EDIT THIS FILE IF YOUR EDITOR DOES NOT SUPPORT UTF-8
197 int main(int argc, char **argv)
200 YAZ_CHECK_INIT(argc, argv);
205 test_icu_I18N_casemap_failures(argc, argv);
206 test_icu_I18N_casemap(argc, argv);
210 printf("ICU unit tests omitted.\n"
211 "Please install libicu36-dev and icu-doc or similar\n");
225 * indent-tabs-mode: nil
227 * vim: shiftwidth=4 tabstop=8 expandtab