~ubuntu-branches/ubuntu/precise/uim/precise

« back to all changes in this revision

Viewing changes to test/test-i18n.scm

  • Committer: Package Import Robot
  • Author(s): Ilya Barygin
  • Date: 2011-12-18 16:35:38 UTC
  • mfrom: (1.1.13) (15.1.7 sid)
  • Revision ID: package-import@ubuntu.com-20111218163538-8ktir39z2mjpii8z
Tags: 1:1.7.1-3ubuntu1
* Merge from Debian testing (LP: #818199).
* Remaining changes:
  - debian/uim-qt.install: Fix plugin path for multiarch location.
* Dropped changes:
  - uim-applet-gnome removal (GNOME 3 applet is available)
  - 19_as-needed_compile_fix.dpatch (accepted into Debian package)
* translations.patch: add several files to POTFILE.in to prevent
  intltool-update failure.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#!/usr/bin/env gosh
2
 
 
3
 
;;; Copyright (c) 2003-2009 uim Project http://code.google.com/p/uim/
4
 
;;;
5
 
;;; All rights reserved.
6
 
;;;
7
 
;;; Redistribution and use in source and binary forms, with or without
8
 
;;; modification, are permitted provided that the following conditions
9
 
;;; are met:
10
 
;;; 1. Redistributions of source code must retain the above copyright
11
 
;;;    notice, this list of conditions and the following disclaimer.
12
 
;;; 2. Redistributions in binary form must reproduce the above copyright
13
 
;;;    notice, this list of conditions and the following disclaimer in the
14
 
;;;    documentation and/or other materials provided with the distribution.
15
 
;;; 3. Neither the name of authors nor the names of its contributors
16
 
;;;    may be used to endorse or promote products derived from this software
17
 
;;;    without specific prior written permission.
18
 
;;;
19
 
;;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND
20
 
;;; ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21
 
;;; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22
 
;;; ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE
23
 
;;; FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24
 
;;; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
25
 
;;; OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26
 
;;; HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27
 
;;; LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
28
 
;;; OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29
 
;;; SUCH DAMAGE.
30
 
;;;;
31
 
 
32
 
;; These tests are passed at revision 5329 (new repository)
33
 
 
34
 
(use test.unit)
35
 
 
36
 
(require "test/uim-test-utils")
37
 
 
38
 
(define-uim-test-case "testcase i18n locale"
39
 
  ("test locale-new"
40
 
   ;; full format
41
 
   (assert-equal '("ja" "JP" "EUC-JP")
42
 
                 (uim '(locale-new "ja_JP.EUC-JP")))
43
 
   ;; codeset can be omitted
44
 
   (assert-equal '("ja" "JP" "")
45
 
                 (uim '(locale-new "ja_JP")))
46
 
   ;; territory can also be omitted
47
 
   (assert-equal '("ja" "" "")
48
 
                 (uim '(locale-new "ja")))
49
 
   ;; codeset without territory is a valid format
50
 
   (assert-equal '("ja" "" "EUC-JP")
51
 
                 (uim '(locale-new "ja.EUC-JP")))
52
 
   ;; #f, "C" and "POSIX" is interpreted as "en" locale
53
 
   (assert-equal '("en" "" "")
54
 
                 (uim '(locale-new #f)))
55
 
   (assert-equal '("en" "" "")
56
 
                 (uim '(locale-new "C")))
57
 
   (assert-equal '("en" "" "")
58
 
                 (uim '(locale-new "POSIX")))
59
 
   ;; invalid locale strings are rejected
60
 
   (assert-equal '("" "" "")
61
 
                 (uim '(locale-new "d_DE")))
62
 
   (assert-equal '("" "" "")
63
 
                 (uim '(locale-new "deu_DE")))
64
 
   (assert-equal '("" "" "")
65
 
                 (uim '(locale-new "de_de_DE")))
66
 
   (assert-equal '("" "" "")
67
 
                 (uim '(locale-new "de_D")))
68
 
   (assert-equal '("" "" "")
69
 
                 (uim '(locale-new "de_DEU")))
70
 
   (assert-equal '("" "" "")
71
 
                 (uim '(locale-new "de_de_DEU")))
72
 
   (assert-equal '("" "" "")
73
 
                 (uim '(locale-new "_DE")))
74
 
   (assert-equal '("" "" "")
75
 
                 (uim '(locale-new "_DE.")))
76
 
   (assert-equal '("" "" "")
77
 
                 (uim '(locale-new "_DE.UTF-8")))
78
 
   (assert-equal '("" "" "")
79
 
                 (uim '(locale-new "de_.UTF-8")))
80
 
   (assert-equal '("" "" "")
81
 
                 (uim '(locale-new "_.UTF-8")))
82
 
   (assert-equal '("" "" "")
83
 
                 (uim '(locale-new ".UTF-8"))))
84
 
 
85
 
  ;; empty locale is instructs to use the locale of native environment
86
 
  ("test locale-new native environment"
87
 
   ;; it fallbacks to "en" if neither LC_ALL nor LANG defined
88
 
   (uim '(unsetenv  "LC_ALL"))
89
 
   (uim '(unsetenv  "LANG"))
90
 
   (assert-equal '("en" "" "")
91
 
                 (uim '(locale-new "")))
92
 
   ;; it looks both LC_ALL and LANG
93
 
   (uim '(setenv  "LC_ALL" "ja_JP.EUC-JP" #t))
94
 
   (uim '(unsetenv  "LANG"))
95
 
   (assert-equal '("ja" "JP" "EUC-JP")
96
 
                 (uim '(locale-new "")))
97
 
   (uim '(unsetenv  "LC_ALL"))
98
 
   (uim '(setenv  "LANG" "ja_JP.EUC-JP" #t))
99
 
   (assert-equal '("ja" "JP" "EUC-JP")
100
 
                 (uim '(locale-new "")))
101
 
   ;; LC_ALL precedes LANG
102
 
   (uim '(setenv  "LC_ALL" "de_DE.UTF-8" #t))
103
 
   (uim '(setenv  "LANG" "ja_JP.EUC-JP" #t))
104
 
   (assert-equal '("de" "DE" "UTF-8")
105
 
                 (uim '(locale-new "")))
106
 
   ;; special locale name from the variables
107
 
   (uim '(setenv  "LC_ALL" "C" #t))
108
 
   (uim '(unsetenv  "LANG"))
109
 
   (assert-equal '("en" "" "")
110
 
                 (uim '(locale-new "")))
111
 
   (uim '(setenv  "LC_ALL" "POSIX" #t))
112
 
   (uim '(unsetenv  "LANG"))
113
 
   (assert-equal '("en" "" "")
114
 
                 (uim '(locale-new "")))
115
 
   (uim '(unsetenv  "LC_ALL"))
116
 
   (uim '(setenv  "LANG" "C" #t))
117
 
   (assert-equal '("en" "" "")
118
 
                 (uim '(locale-new "")))
119
 
   (uim '(unsetenv  "LC_ALL"))
120
 
   (uim '(setenv  "LANG" "POSIX" #t))
121
 
   (assert-equal '("en" "" "")
122
 
                 (uim '(locale-new ""))))
123
 
 
124
 
  ("test locale-set-lang!"
125
 
   (assert-equal ""
126
 
                 (uim '(locale-set-lang! (locale-new "en") "")))
127
 
   ;; valid langs
128
 
   (assert-equal "ja"
129
 
                 (uim '(locale-set-lang! (locale-new "") "ja")))
130
 
   (assert-equal "zh"
131
 
                 (uim '(locale-set-lang! (locale-new "") "zh")))
132
 
   (assert-equal "de"
133
 
                 (uim '(locale-set-lang! (locale-new "") "de")))
134
 
   ;; locale-set-lang! only accepts two-letter language codes
135
 
   (assert-equal ""
136
 
                 (uim '(locale-set-lang! (locale-new "") "jpn")))
137
 
   (assert-equal ""
138
 
                 (uim '(locale-set-lang! (locale-new "") "zh_CN")))
139
 
   (assert-equal ""
140
 
                 (uim '(locale-set-lang! (locale-new "") "d"))))
141
 
 
142
 
  ("test locale-set-territory!"
143
 
   (assert-equal ""
144
 
                 (uim '(locale-set-territory! (locale-new "en") "")))
145
 
   ;; valid territories
146
 
   (assert-equal "JP"
147
 
                 (uim '(locale-set-territory! (locale-new "") "JP")))
148
 
   (assert-equal "CN"
149
 
                 (uim '(locale-set-territory! (locale-new "") "CN")))
150
 
   (assert-equal "DE"
151
 
                 (uim '(locale-set-territory! (locale-new "") "DE")))
152
 
   ;; locale-set-territory! only accepts two-letter country codes
153
 
   (assert-equal ""
154
 
                 (uim '(locale-set-territory! (locale-new "") "Japan")))
155
 
   (assert-equal ""
156
 
                 (uim '(locale-set-territory! (locale-new "") "zh_CN")))
157
 
   (assert-equal ""
158
 
                 (uim '(locale-set-territory! (locale-new "") "ger"))))
159
 
 
160
 
  ("test locale-lang-territory-str"
161
 
   (assert-equal ""
162
 
                 (uim '(locale-lang-territory-str (locale-new "invalid_IN."))))
163
 
   (assert-equal "ja_JP"
164
 
                 (uim '(locale-lang-territory-str (locale-new "ja_JP.EUC-JP"))))
165
 
   (assert-equal "ja_JP"
166
 
                 (uim '(locale-lang-territory-str (locale-new "ja_JP"))))
167
 
   (assert-equal "ja"
168
 
                 (uim '(locale-lang-territory-str (locale-new "ja"))))
169
 
   (assert-equal "ja"
170
 
                 (uim '(locale-lang-territory-str (locale-new "ja.EUC-JP"))))
171
 
   (assert-equal "zh_CN"
172
 
                 (uim '(locale-lang-territory-str (locale-new "zh_CN.UTF-8"))))
173
 
   (assert-equal "zh_CN"
174
 
                 (uim '(locale-lang-territory-str (locale-new "zh_CN"))))
175
 
   (assert-equal "zh"
176
 
                 (uim '(locale-lang-territory-str (locale-new "zh"))))
177
 
   (assert-equal "zh"
178
 
                 (uim '(locale-lang-territory-str (locale-new "zh.UTF-8")))))
179
 
 
180
 
  ("test locale-str"
181
 
   (assert-equal ""
182
 
                 (uim '(locale-str (locale-new "invalid_IN."))))
183
 
   (assert-equal "ja_JP.EUC-JP"
184
 
                 (uim '(locale-str (locale-new "ja_JP.EUC-JP"))))
185
 
   (assert-equal "ja_JP"
186
 
                 (uim '(locale-str (locale-new "ja_JP"))))
187
 
   (assert-equal "ja"
188
 
                 (uim '(locale-str (locale-new "ja"))))
189
 
   (assert-equal "ja.EUC-JP"
190
 
                 (uim '(locale-str (locale-new "ja.EUC-JP"))))
191
 
   (assert-equal "zh_CN.UTF-8"
192
 
                 (uim '(locale-str (locale-new "zh_CN.UTF-8"))))
193
 
   (assert-equal "zh_CN"
194
 
                 (uim '(locale-str (locale-new "zh_CN"))))
195
 
   (assert-equal "zh"
196
 
                 (uim '(locale-str (locale-new "zh"))))
197
 
   (assert-equal "zh.UTF-8"
198
 
                 (uim '(locale-str (locale-new "zh.UTF-8")))))
199
 
 
200
 
  ("test locale-zh-awared-lang"
201
 
   (assert-equal ""
202
 
                 (uim '(locale-zh-awared-lang (locale-new "invalid_IN."))))
203
 
   (assert-equal "ja"
204
 
                 (uim '(locale-zh-awared-lang (locale-new "ja_JP.EUC-JP"))))
205
 
   (assert-equal "ja"
206
 
                 (uim '(locale-zh-awared-lang (locale-new "ja_JP"))))
207
 
   (assert-equal "ja"
208
 
                 (uim '(locale-zh-awared-lang (locale-new "ja"))))
209
 
   (assert-equal "ja"
210
 
                 (uim '(locale-zh-awared-lang (locale-new "ja.EUC-JP"))))
211
 
   (assert-equal "en"
212
 
                 (uim '(locale-zh-awared-lang (locale-new "en_US.UTF-8"))))
213
 
   (assert-equal "en"
214
 
                 (uim '(locale-zh-awared-lang (locale-new "en_US"))))
215
 
   (assert-equal "en"
216
 
                 (uim '(locale-zh-awared-lang (locale-new "en"))))
217
 
   (assert-equal "en"
218
 
                 (uim '(locale-zh-awared-lang (locale-new "en.UTF-8"))))
219
 
   ;; returns "zh_XX" form if lang part is "zh"
220
 
   (assert-equal "zh_CN"
221
 
                 (uim '(locale-zh-awared-lang (locale-new "zh_CN.UTF-8"))))
222
 
   (assert-equal "zh_CN"
223
 
                 (uim '(locale-zh-awared-lang (locale-new "zh_CN"))))
224
 
   (assert-equal "zh"
225
 
                 (uim '(locale-zh-awared-lang (locale-new "zh"))))
226
 
   (assert-equal "zh"
227
 
                 (uim '(locale-zh-awared-lang (locale-new "zh.UTF-8"))))
228
 
   (assert-equal "zh_TW"
229
 
                 (uim '(locale-zh-awared-lang (locale-new "zh_TW.UTF-8"))))
230
 
   (assert-equal "zh_TW"
231
 
                 (uim '(locale-zh-awared-lang (locale-new "zh_TW"))))
232
 
   (assert-equal "zh"
233
 
                 (uim '(locale-zh-awared-lang (locale-new "zh"))))
234
 
   (assert-equal "zh"
235
 
                 (uim '(locale-zh-awared-lang (locale-new "zh.UTF-8"))))
236
 
   (assert-equal "zh_HK"
237
 
                 (uim '(locale-zh-awared-lang (locale-new "zh_HK.UTF-8"))))
238
 
   (assert-equal "zh_HK"
239
 
                 (uim '(locale-zh-awared-lang (locale-new "zh_HK"))))
240
 
   (assert-equal "zh"
241
 
                 (uim '(locale-zh-awared-lang (locale-new "zh"))))
242
 
   (assert-equal "zh"
243
 
                 (uim '(locale-zh-awared-lang (locale-new "zh.UTF-8")))))
244
 
 
245
 
  ("test langgroup-covers?"
246
 
   ;; exact match
247
 
   (assert-true  (uim-bool '(langgroup-covers? "ja" "ja")))
248
 
   (assert-true  (uim-bool '(langgroup-covers? "en" "en")))
249
 
   (assert-true  (uim-bool '(langgroup-covers? "de" "de")))
250
 
   (assert-true  (uim-bool '(langgroup-covers? "fr" "fr")))
251
 
   (assert-true  (uim-bool '(langgroup-covers? "zh" "zh")))
252
 
   (assert-true  (uim-bool '(langgroup-covers? "zh_CN" "zh_CN")))
253
 
   (assert-true  (uim-bool '(langgroup-covers? "zh_TW" "zh_TW")))
254
 
   (assert-true  (uim-bool '(langgroup-covers? "zh_HK" "zh_HK")))
255
 
   (assert-false (uim-bool '(langgroup-covers? "de" "ja")))
256
 
   (assert-false (uim-bool '(langgroup-covers? "de" "en")))
257
 
   (assert-false (uim-bool '(langgroup-covers? "de" "fr")))
258
 
   (assert-false (uim-bool '(langgroup-covers? "de" "zh")))
259
 
   (assert-false (uim-bool '(langgroup-covers? "de" "zh_CN")))
260
 
   (assert-false (uim-bool '(langgroup-covers? "de" "zh_TW")))
261
 
   (assert-false (uim-bool '(langgroup-covers? "de" "zh_HK")))
262
 
   ;; group match
263
 
   (assert-false (uim-bool '(langgroup-covers? "de:en:fr" "ja")))
264
 
   (assert-true  (uim-bool '(langgroup-covers? "de:en:fr" "en")))
265
 
   (assert-true  (uim-bool '(langgroup-covers? "de:en:fr" "de")))
266
 
   (assert-true  (uim-bool '(langgroup-covers? "de:en:fr" "fr")))
267
 
   (assert-false (uim-bool '(langgroup-covers? "de:en:fr" "zh")))
268
 
   (assert-false (uim-bool '(langgroup-covers? "de:en:fr" "zh_CN")))
269
 
   (assert-false (uim-bool '(langgroup-covers? "de:en:fr" "zh_TW")))
270
 
   (assert-false (uim-bool '(langgroup-covers? "de:en:fr" "zh_HK")))
271
 
   ;; group expression is only allowed for first arg
272
 
   (assert-false (uim-bool '(langgroup-covers? "de:en:fr" "de:en")))
273
 
   (assert-false (uim-bool '(langgroup-covers? "de:en:fr" "de:en:fr")))
274
 
   ;; wildcard
275
 
   (assert-true  (uim-bool '(langgroup-covers? "*" "ja")))
276
 
   (assert-true  (uim-bool '(langgroup-covers? "*" "en")))
277
 
   (assert-true  (uim-bool '(langgroup-covers? "*" "de")))
278
 
   (assert-true  (uim-bool '(langgroup-covers? "*" "fr")))
279
 
   (assert-true  (uim-bool '(langgroup-covers? "*" "zh")))
280
 
   (assert-true  (uim-bool '(langgroup-covers? "*" "zh_CN")))
281
 
   (assert-true  (uim-bool '(langgroup-covers? "*" "zh_TW")))
282
 
   (assert-true  (uim-bool '(langgroup-covers? "*" "zh_HK")))
283
 
   ;; wildcard is only allowed for first arg
284
 
   (assert-false (uim-bool '(langgroup-covers? "en" "*")))
285
 
   ;; 'nothing'
286
 
   (assert-false (uim-bool '(langgroup-covers? "" "ja")))
287
 
   (assert-false (uim-bool '(langgroup-covers? "" "en")))
288
 
   (assert-false (uim-bool '(langgroup-covers? "" "de")))
289
 
   (assert-false (uim-bool '(langgroup-covers? "" "fr")))
290
 
   (assert-false (uim-bool '(langgroup-covers? "" "zh")))
291
 
   (assert-false (uim-bool '(langgroup-covers? "" "zh_CN")))
292
 
   (assert-false (uim-bool '(langgroup-covers? "" "zh_TW")))
293
 
   (assert-false (uim-bool '(langgroup-covers? "" "zh_HK")))
294
 
   (assert-false (uim-bool '(langgroup-covers? "" "*")))
295
 
   (assert-false (uim-bool '(langgroup-covers? "" "")))
296
 
   ;; no special handling for Chinese
297
 
   (assert-false (uim-bool '(langgroup-covers? "zh" "zh_CN")))
298
 
   (assert-false (uim-bool '(langgroup-covers? "zh" "zh_TW")))
299
 
   (assert-false (uim-bool '(langgroup-covers? "zh" "zh_HK")))
300
 
   (assert-false (uim-bool '(langgroup-covers? "zh_CN" "zh")))
301
 
   (assert-false (uim-bool '(langgroup-covers? "zh_TW" "zh")))
302
 
   (assert-false (uim-bool '(langgroup-covers? "zh_HK" "zh")))
303
 
   (assert-false (uim-bool '(langgroup-covers? "zh_CN" "zh_TW")))
304
 
   (assert-false (uim-bool '(langgroup-covers? "zh_CN" "zh_HK")))
305
 
   (assert-false (uim-bool '(langgroup-covers? "zh_HK" "zh_CN")))
306
 
   (assert-false (uim-bool '(langgroup-covers? "zh_HK" "zh_TW")))
307
 
   (assert-true  (uim-bool '(langgroup-covers? "zh_TW:zh_HK" "zh_TW")))
308
 
   (assert-true  (uim-bool '(langgroup-covers? "zh_TW:zh_HK" "zh_HK")))
309
 
   (assert-false (uim-bool '(langgroup-covers? "zh_TW:zh_HK" "zh_CN")))
310
 
   (assert-false (uim-bool '(langgroup-covers? "zh_TW:zh_HK" "zh")))
311
 
   (assert-false (uim-bool '(langgroup-covers? "zh_CN:zh_TW:zh_HK" "zh")))))
312
 
 
313
 
(define-uim-test-case "testcase i18n ISO 639-1 language code #1"
314
 
  (setup
315
 
   (lambda ()
316
 
     (sys-putenv "LC_ALL" "C")))
317
 
 
318
 
  ("test lang-code->lang-name in en locale"
319
 
   (assert-equal "Japanese"
320
 
                 (uim '(lang-code->lang-name "ja")))
321
 
   (assert-equal "English"
322
 
                 (uim '(lang-code->lang-name "en")))
323
 
   (assert-equal "Chinese"
324
 
                 (uim '(lang-code->lang-name "zh")))))
325
 
 
326
 
;(define-uim-test-case "testcase i18n ISO 639-1 language code #2"
327
 
;  (setup
328
 
;   (lambda ()
329
 
;     (sys-putenv "LC_ALL" "ja_JP")))
330
 
;
331
 
;  ("test lang-code->lang-name in ja_JP locale"
332
 
;   (uim '(bind_textdomain_codeset "uim" "UTF-8"))
333
 
;   (assert-equal "日本語"
334
 
;                (uim '(lang-code->lang-name "ja")))
335
 
;   (assert-equal "英語"
336
 
;                (uim '(lang-code->lang-name "en")))
337
 
;   (assert-equal "中国語"
338
 
;                (uim '(lang-code->lang-name "zh")))))