Author: koutou
Date: Sun Mar 22 01:13:40 2009
New Revision: 5923
Modified:
trunk/test/test-i18n.scm (contents, props changed)
Log:
* test/test-i18n.scm: update to new style.
Modified: trunk/test/test-i18n.scm
==============================================================================
--- trunk/test/test-i18n.scm (original)
+++ trunk/test/test-i18n.scm Sun Mar 22 01:13:40 2009
@@ -1,5 +1,3 @@
-#!/usr/bin/env gosh
-
;;; Copyright (c) 2003-2009 uim Project http://code.google.com/p/uim/
;;;
;;; All rights reserved.
@@ -29,299 +27,325 @@
;;; SUCH DAMAGE.
;;;;
-;; These tests are passed at revision 5329 (new repository)
-
-(use test.unit)
-
-(require "test/uim-test-utils")
-
-(define-uim-test-case "testcase i18n locale"
- ("test locale-new"
- ;; full format
- (assert-equal '("ja" "JP" "EUC-JP")
- (uim '(locale-new "ja_JP.EUC-JP")))
- ;; codeset can be omitted
- (assert-equal '("ja" "JP" "")
- (uim '(locale-new "ja_JP")))
- ;; territory can also be omitted
- (assert-equal '("ja" "" "")
- (uim '(locale-new "ja")))
- ;; codeset without territory is a valid format
- (assert-equal '("ja" "" "EUC-JP")
- (uim '(locale-new "ja.EUC-JP")))
- ;; #f, "C" and "POSIX" is interpreted as "en" locale
- (assert-equal '("en" "" "")
- (uim '(locale-new #f)))
- (assert-equal '("en" "" "")
- (uim '(locale-new "C")))
- (assert-equal '("en" "" "")
- (uim '(locale-new "POSIX")))
- ;; invalid locale strings are rejected
- (assert-equal '("" "" "")
- (uim '(locale-new "d_DE")))
- (assert-equal '("" "" "")
- (uim '(locale-new "deu_DE")))
- (assert-equal '("" "" "")
- (uim '(locale-new "de_de_DE")))
- (assert-equal '("" "" "")
- (uim '(locale-new "de_D")))
- (assert-equal '("" "" "")
- (uim '(locale-new "de_DEU")))
- (assert-equal '("" "" "")
- (uim '(locale-new "de_de_DEU")))
- (assert-equal '("" "" "")
- (uim '(locale-new "_DE")))
- (assert-equal '("" "" "")
- (uim '(locale-new "_DE.")))
- (assert-equal '("" "" "")
- (uim '(locale-new "_DE.UTF-8")))
- (assert-equal '("" "" "")
- (uim '(locale-new "de_.UTF-8")))
- (assert-equal '("" "" "")
- (uim '(locale-new "_.UTF-8")))
- (assert-equal '("" "" "")
- (uim '(locale-new ".UTF-8"))))
-
- ;; empty locale is instructs to use the locale of native environment
- ("test locale-new native environment"
- ;; it fallbacks to "en" if neither LC_ALL nor LANG defined
- (uim '(unsetenv "LC_ALL"))
- (uim '(unsetenv "LANG"))
- (assert-equal '("en" "" "")
- (uim '(locale-new "")))
- ;; it looks both LC_ALL and LANG
- (uim '(setenv "LC_ALL" "ja_JP.EUC-JP" #t))
- (uim '(unsetenv "LANG"))
- (assert-equal '("ja" "JP" "EUC-JP")
- (uim '(locale-new "")))
- (uim '(unsetenv "LC_ALL"))
- (uim '(setenv "LANG" "ja_JP.EUC-JP" #t))
- (assert-equal '("ja" "JP" "EUC-JP")
- (uim '(locale-new "")))
- ;; LC_ALL precedes LANG
- (uim '(setenv "LC_ALL" "de_DE.UTF-8" #t))
- (uim '(setenv "LANG" "ja_JP.EUC-JP" #t))
- (assert-equal '("de" "DE" "UTF-8")
- (uim '(locale-new "")))
- ;; special locale name from the variables
- (uim '(setenv "LC_ALL" "C" #t))
- (uim '(unsetenv "LANG"))
- (assert-equal '("en" "" "")
- (uim '(locale-new "")))
- (uim '(setenv "LC_ALL" "POSIX" #t))
- (uim '(unsetenv "LANG"))
- (assert-equal '("en" "" "")
- (uim '(locale-new "")))
- (uim '(unsetenv "LC_ALL"))
- (uim '(setenv "LANG" "C" #t))
- (assert-equal '("en" "" "")
- (uim '(locale-new "")))
- (uim '(unsetenv "LC_ALL"))
- (uim '(setenv "LANG" "POSIX" #t))
- (assert-equal '("en" "" "")
- (uim '(locale-new ""))))
-
- ("test locale-set-lang!"
- (assert-equal ""
- (uim '(locale-set-lang! (locale-new "en") "")))
- ;; valid langs
- (assert-equal "ja"
- (uim '(locale-set-lang! (locale-new "") "ja")))
- (assert-equal "zh"
- (uim '(locale-set-lang! (locale-new "") "zh")))
- (assert-equal "de"
- (uim '(locale-set-lang! (locale-new "") "de")))
- ;; locale-set-lang! only accepts two-letter language codes
- (assert-equal ""
- (uim '(locale-set-lang! (locale-new "") "jpn")))
- (assert-equal ""
- (uim '(locale-set-lang! (locale-new "") "zh_CN")))
- (assert-equal ""
- (uim '(locale-set-lang! (locale-new "") "d"))))
-
- ("test locale-set-territory!"
- (assert-equal ""
- (uim '(locale-set-territory! (locale-new "en") "")))
- ;; valid territories
- (assert-equal "JP"
- (uim '(locale-set-territory! (locale-new "") "JP")))
- (assert-equal "CN"
- (uim '(locale-set-territory! (locale-new "") "CN")))
- (assert-equal "DE"
- (uim '(locale-set-territory! (locale-new "") "DE")))
- ;; locale-set-territory! only accepts two-letter country codes
- (assert-equal ""
- (uim '(locale-set-territory! (locale-new "") "Japan")))
- (assert-equal ""
- (uim '(locale-set-territory! (locale-new "") "zh_CN")))
- (assert-equal ""
- (uim '(locale-set-territory! (locale-new "") "ger"))))
-
- ("test locale-lang-territory-str"
- (assert-equal ""
- (uim '(locale-lang-territory-str (locale-new "invalid_IN."))))
- (assert-equal "ja_JP"
- (uim '(locale-lang-territory-str (locale-new "ja_JP.EUC-JP"))))
- (assert-equal "ja_JP"
- (uim '(locale-lang-territory-str (locale-new "ja_JP"))))
- (assert-equal "ja"
- (uim '(locale-lang-territory-str (locale-new "ja"))))
- (assert-equal "ja"
- (uim '(locale-lang-territory-str (locale-new "ja.EUC-JP"))))
- (assert-equal "zh_CN"
- (uim '(locale-lang-territory-str (locale-new "zh_CN.UTF-8"))))
- (assert-equal "zh_CN"
- (uim '(locale-lang-territory-str (locale-new "zh_CN"))))
- (assert-equal "zh"
- (uim '(locale-lang-territory-str (locale-new "zh"))))
- (assert-equal "zh"
- (uim '(locale-lang-territory-str (locale-new "zh.UTF-8")))))
-
- ("test locale-str"
- (assert-equal ""
- (uim '(locale-str (locale-new "invalid_IN."))))
- (assert-equal "ja_JP.EUC-JP"
- (uim '(locale-str (locale-new "ja_JP.EUC-JP"))))
- (assert-equal "ja_JP"
- (uim '(locale-str (locale-new "ja_JP"))))
- (assert-equal "ja"
- (uim '(locale-str (locale-new "ja"))))
- (assert-equal "ja.EUC-JP"
- (uim '(locale-str (locale-new "ja.EUC-JP"))))
- (assert-equal "zh_CN.UTF-8"
- (uim '(locale-str (locale-new "zh_CN.UTF-8"))))
- (assert-equal "zh_CN"
- (uim '(locale-str (locale-new "zh_CN"))))
- (assert-equal "zh"
- (uim '(locale-str (locale-new "zh"))))
- (assert-equal "zh.UTF-8"
- (uim '(locale-str (locale-new "zh.UTF-8")))))
-
- ("test locale-zh-awared-lang"
- (assert-equal ""
- (uim '(locale-zh-awared-lang (locale-new "invalid_IN."))))
- (assert-equal "ja"
- (uim '(locale-zh-awared-lang (locale-new "ja_JP.EUC-JP"))))
- (assert-equal "ja"
- (uim '(locale-zh-awared-lang (locale-new "ja_JP"))))
- (assert-equal "ja"
- (uim '(locale-zh-awared-lang (locale-new "ja"))))
- (assert-equal "ja"
- (uim '(locale-zh-awared-lang (locale-new "ja.EUC-JP"))))
- (assert-equal "en"
- (uim '(locale-zh-awared-lang (locale-new "en_US.UTF-8"))))
- (assert-equal "en"
- (uim '(locale-zh-awared-lang (locale-new "en_US"))))
- (assert-equal "en"
- (uim '(locale-zh-awared-lang (locale-new "en"))))
- (assert-equal "en"
- (uim '(locale-zh-awared-lang (locale-new "en.UTF-8"))))
- ;; returns "zh_XX" form if lang part is "zh"
- (assert-equal "zh_CN"
- (uim '(locale-zh-awared-lang (locale-new "zh_CN.UTF-8"))))
- (assert-equal "zh_CN"
- (uim '(locale-zh-awared-lang (locale-new "zh_CN"))))
- (assert-equal "zh"
- (uim '(locale-zh-awared-lang (locale-new "zh"))))
- (assert-equal "zh"
- (uim '(locale-zh-awared-lang (locale-new "zh.UTF-8"))))
- (assert-equal "zh_TW"
- (uim '(locale-zh-awared-lang (locale-new "zh_TW.UTF-8"))))
- (assert-equal "zh_TW"
- (uim '(locale-zh-awared-lang (locale-new "zh_TW"))))
- (assert-equal "zh"
- (uim '(locale-zh-awared-lang (locale-new "zh"))))
- (assert-equal "zh"
- (uim '(locale-zh-awared-lang (locale-new "zh.UTF-8"))))
- (assert-equal "zh_HK"
- (uim '(locale-zh-awared-lang (locale-new "zh_HK.UTF-8"))))
- (assert-equal "zh_HK"
- (uim '(locale-zh-awared-lang (locale-new "zh_HK"))))
- (assert-equal "zh"
- (uim '(locale-zh-awared-lang (locale-new "zh"))))
- (assert-equal "zh"
- (uim '(locale-zh-awared-lang (locale-new "zh.UTF-8")))))
-
- ("test langgroup-covers?"
- ;; exact match
- (assert-true (uim-bool '(langgroup-covers? "ja" "ja")))
- (assert-true (uim-bool '(langgroup-covers? "en" "en")))
- (assert-true (uim-bool '(langgroup-covers? "de" "de")))
- (assert-true (uim-bool '(langgroup-covers? "fr" "fr")))
- (assert-true (uim-bool '(langgroup-covers? "zh" "zh")))
- (assert-true (uim-bool '(langgroup-covers? "zh_CN" "zh_CN")))
- (assert-true (uim-bool '(langgroup-covers? "zh_TW" "zh_TW")))
- (assert-true (uim-bool '(langgroup-covers? "zh_HK" "zh_HK")))
- (assert-false (uim-bool '(langgroup-covers? "de" "ja")))
- (assert-false (uim-bool '(langgroup-covers? "de" "en")))
- (assert-false (uim-bool '(langgroup-covers? "de" "fr")))
- (assert-false (uim-bool '(langgroup-covers? "de" "zh")))
- (assert-false (uim-bool '(langgroup-covers? "de" "zh_CN")))
- (assert-false (uim-bool '(langgroup-covers? "de" "zh_TW")))
- (assert-false (uim-bool '(langgroup-covers? "de" "zh_HK")))
- ;; group match
- (assert-false (uim-bool '(langgroup-covers? "de:en:fr" "ja")))
- (assert-true (uim-bool '(langgroup-covers? "de:en:fr" "en")))
- (assert-true (uim-bool '(langgroup-covers? "de:en:fr" "de")))
- (assert-true (uim-bool '(langgroup-covers? "de:en:fr" "fr")))
- (assert-false (uim-bool '(langgroup-covers? "de:en:fr" "zh")))
- (assert-false (uim-bool '(langgroup-covers? "de:en:fr" "zh_CN")))
- (assert-false (uim-bool '(langgroup-covers? "de:en:fr" "zh_TW")))
- (assert-false (uim-bool '(langgroup-covers? "de:en:fr" "zh_HK")))
- ;; group expression is only allowed for first arg
- (assert-false (uim-bool '(langgroup-covers? "de:en:fr" "de:en")))
- (assert-false (uim-bool '(langgroup-covers? "de:en:fr" "de:en:fr")))
- ;; wildcard
- (assert-true (uim-bool '(langgroup-covers? "*" "ja")))
- (assert-true (uim-bool '(langgroup-covers? "*" "en")))
- (assert-true (uim-bool '(langgroup-covers? "*" "de")))
- (assert-true (uim-bool '(langgroup-covers? "*" "fr")))
- (assert-true (uim-bool '(langgroup-covers? "*" "zh")))
- (assert-true (uim-bool '(langgroup-covers? "*" "zh_CN")))
- (assert-true (uim-bool '(langgroup-covers? "*" "zh_TW")))
- (assert-true (uim-bool '(langgroup-covers? "*" "zh_HK")))
- ;; wildcard is only allowed for first arg
- (assert-false (uim-bool '(langgroup-covers? "en" "*")))
- ;; 'nothing'
- (assert-false (uim-bool '(langgroup-covers? "" "ja")))
- (assert-false (uim-bool '(langgroup-covers? "" "en")))
- (assert-false (uim-bool '(langgroup-covers? "" "de")))
- (assert-false (uim-bool '(langgroup-covers? "" "fr")))
- (assert-false (uim-bool '(langgroup-covers? "" "zh")))
- (assert-false (uim-bool '(langgroup-covers? "" "zh_CN")))
- (assert-false (uim-bool '(langgroup-covers? "" "zh_TW")))
- (assert-false (uim-bool '(langgroup-covers? "" "zh_HK")))
- (assert-false (uim-bool '(langgroup-covers? "" "*")))
- (assert-false (uim-bool '(langgroup-covers? "" "")))
- ;; no special handling for Chinese
- (assert-false (uim-bool '(langgroup-covers? "zh" "zh_CN")))
- (assert-false (uim-bool '(langgroup-covers? "zh" "zh_TW")))
- (assert-false (uim-bool '(langgroup-covers? "zh" "zh_HK")))
- (assert-false (uim-bool '(langgroup-covers? "zh_CN" "zh")))
- (assert-false (uim-bool '(langgroup-covers? "zh_TW" "zh")))
- (assert-false (uim-bool '(langgroup-covers? "zh_HK" "zh")))
- (assert-false (uim-bool '(langgroup-covers? "zh_CN" "zh_TW")))
- (assert-false (uim-bool '(langgroup-covers? "zh_CN" "zh_HK")))
- (assert-false (uim-bool '(langgroup-covers? "zh_HK" "zh_CN")))
- (assert-false (uim-bool '(langgroup-covers? "zh_HK" "zh_TW")))
- (assert-true (uim-bool '(langgroup-covers? "zh_TW:zh_HK" "zh_TW")))
- (assert-true (uim-bool '(langgroup-covers? "zh_TW:zh_HK" "zh_HK")))
- (assert-false (uim-bool '(langgroup-covers? "zh_TW:zh_HK" "zh_CN")))
- (assert-false (uim-bool '(langgroup-covers? "zh_TW:zh_HK" "zh")))
- (assert-false
(uim-bool '(langgroup-covers? "zh_CN:zh_TW:zh_HK" "zh")))))
-
-(define-uim-test-case "testcase i18n ISO 639-1 language code #1"
- (setup
- (lambda ()
- (sys-putenv "LC_ALL" "C")))
-
- ("test lang-code->lang-name in en locale"
- (assert-equal "Japanese"
- (uim '(lang-code->lang-name "ja")))
- (assert-equal "English"
- (uim '(lang-code->lang-name "en")))
- (assert-equal "Chinese"
- (uim '(lang-code->lang-name "zh")))))
+(define-module test.test-i18n
+ (use test.unit.test-case)
+ (use test.uim-test))
+(select-module test.test-i18n)
+
+(define (setup)
+ (uim-test-setup))
+
+(define (teardown)
+ (uim-test-teardown))
+
+(define (test-locale-new)
+ ;; full format
+ (assert-uim-equal '("ja" "JP" "EUC-JP")
+ '(locale-new "ja_JP.EUC-JP"))
+ ;; codeset can be omitted
+ (assert-uim-equal '("ja" "JP" "")
+ '(locale-new "ja_JP"))
+ ;; territory can also be omitted
+ (assert-uim-equal '("ja" "" "")
+ '(locale-new "ja"))
+ ;; codeset without territory is a valid format
+ (assert-uim-equal '("ja" "" "EUC-JP")
+ '(locale-new "ja.EUC-JP"))
+ ;; #f, "C" and "POSIX" is interpreted as "en" locale
+ (assert-uim-equal '("en" "" "")
+ '(locale-new #f))
+ (assert-uim-equal '("en" "" "")
+ '(locale-new "C"))
+ (assert-uim-equal '("en" "" "")
+ '(locale-new "POSIX"))
+ ;; invalid locale strings are rejected
+ (assert-uim-equal '("" "" "")
+ '(locale-new "d_DE"))
+ (assert-uim-equal '("" "" "")
+ '(locale-new "deu_DE"))
+ (assert-uim-equal '("" "" "")
+ '(locale-new "de_de_DE"))
+ (assert-uim-equal '("" "" "")
+ '(locale-new "de_D"))
+ (assert-uim-equal '("" "" "")
+ '(locale-new "de_DEU"))
+ (assert-uim-equal '("" "" "")
+ '(locale-new "de_de_DEU"))
+ (assert-uim-equal '("" "" "")
+ '(locale-new "_DE"))
+ (assert-uim-equal '("" "" "")
+ '(locale-new "_DE."))
+ (assert-uim-equal '("" "" "")
+ '(locale-new "_DE.UTF-8"))
+ (assert-uim-equal '("" "" "")
+ '(locale-new "de_.UTF-8"))
+ (assert-uim-equal '("" "" "")
+ '(locale-new "_.UTF-8"))
+ (assert-uim-equal '("" "" "")
+ '(locale-new ".UTF-8"))
+ #f)
+
+;; empty locale is instructs to use the locale of native environment
+(define (test-locale-new-native-environment)
+ ;; it fallbacks to "en" if neither LC_ALL nor LANG defined
+ (uim-eval '(unsetenv "LC_ALL"))
+ (uim-eval '(unsetenv "LANG"))
+ (assert-uim-equal '("en" "" "")
+ '(locale-new ""))
+ ;; it looks both LC_ALL and LANG
+ (uim-eval '(setenv "LC_ALL" "ja_JP.EUC-JP" #t))
+ (uim-eval '(unsetenv "LANG"))
+ (assert-uim-equal '("ja" "JP" "EUC-JP")
+ '(locale-new ""))
+ (uim-eval '(unsetenv "LC_ALL"))
+ (uim-eval '(setenv "LANG" "ja_JP.EUC-JP" #t))
+ (assert-uim-equal '("ja" "JP" "EUC-JP")
+ '(locale-new ""))
+ ;; LC_ALL precedes LANG
+ (uim-eval '(setenv "LC_ALL" "de_DE.UTF-8" #t))
+ (uim-eval '(setenv "LANG" "ja_JP.EUC-JP" #t))
+ (assert-uim-equal '("de" "DE" "UTF-8")
+ '(locale-new ""))
+ ;; special locale name from the variables
+ (uim-eval '(setenv "LC_ALL" "C" #t))
+ (uim-eval '(unsetenv "LANG"))
+ (assert-uim-equal '("en" "" "")
+ '(locale-new ""))
+ (uim-eval '(setenv "LC_ALL" "POSIX" #t))
+ (uim-eval '(unsetenv "LANG"))
+ (assert-uim-equal '("en" "" "")
+ '(locale-new ""))
+ (uim-eval '(unsetenv "LC_ALL"))
+ (uim-eval '(setenv "LANG" "C" #t))
+ (assert-uim-equal '("en" "" "")
+ '(locale-new ""))
+ (uim-eval '(unsetenv "LC_ALL"))
+ (uim-eval '(setenv "LANG" "POSIX" #t))
+ (assert-uim-equal '("en" "" "")
+ '(locale-new ""))
+ #f)
+
+(define (test-locale-set-lang!)
+ (assert-uim-equal ""
+ '(locale-set-lang! (locale-new "en") ""))
+ ;; valid langs
+ (assert-uim-equal "ja"
+ '(locale-set-lang! (locale-new "") "ja"))
+ (assert-uim-equal "zh"
+ '(locale-set-lang! (locale-new "") "zh"))
+ (assert-uim-equal "de"
+ '(locale-set-lang! (locale-new "") "de"))
+ ;; locale-set-lang! only accepts two-letter language codes
+ (assert-uim-equal ""
+ '(locale-set-lang! (locale-new "") "jpn"))
+ (assert-uim-equal ""
+ '(locale-set-lang! (locale-new "") "zh_CN"))
+ (assert-uim-equal ""
+ '(locale-set-lang! (locale-new "") "d"))
+ #f)
+
+(define (test-locale-set-territory!)
+ (assert-uim-equal ""
+ '(locale-set-territory! (locale-new "en") ""))
+ ;; valid territories
+ (assert-uim-equal "JP"
+ '(locale-set-territory! (locale-new "") "JP"))
+ (assert-uim-equal "CN"
+ '(locale-set-territory! (locale-new "") "CN"))
+ (assert-uim-equal "DE"
+ '(locale-set-territory! (locale-new "") "DE"))
+ ;; locale-set-territory! only accepts two-letter country codes
+ (assert-uim-equal ""
+ '(locale-set-territory! (locale-new "") "Japan"))
+ (assert-uim-equal ""
+ '(locale-set-territory! (locale-new "") "zh_CN"))
+ (assert-uim-equal ""
+ '(locale-set-territory! (locale-new "") "ger"))
+ #f)
+
+(define (test-locale-lang-territory-str)
+ (assert-uim-equal ""
+ '(locale-lang-territory-str
(locale-new "invalid_IN.")))
+ (assert-uim-equal "ja_JP"
+ '(locale-lang-territory-str
(locale-new "ja_JP.EUC-JP")))
+ (assert-uim-equal "ja_JP"
+ '(locale-lang-territory-str (locale-new "ja_JP")))
+ (assert-uim-equal "ja"
+ '(locale-lang-territory-str (locale-new "ja")))
+ (assert-uim-equal "ja"
+ '(locale-lang-territory-str (locale-new "ja.EUC-JP")))
+ (assert-uim-equal "zh_CN"
+ '(locale-lang-territory-str
(locale-new "zh_CN.UTF-8")))
+ (assert-uim-equal "zh_CN"
+ '(locale-lang-territory-str (locale-new "zh_CN")))
+ (assert-uim-equal "zh"
+ '(locale-lang-territory-str (locale-new "zh")))
+ (assert-uim-equal "zh"
+ '(locale-lang-territory-str (locale-new "zh.UTF-8")))
+ #f)
+
+(define (test-locale-str)
+ (assert-uim-equal ""
+ '(locale-str (locale-new "invalid_IN.")))
+ (assert-uim-equal "ja_JP.EUC-JP"
+ '(locale-str (locale-new "ja_JP.EUC-JP")))
+ (assert-uim-equal "ja_JP"
+ '(locale-str (locale-new "ja_JP")))
+ (assert-uim-equal "ja"
+ '(locale-str (locale-new "ja")))
+ (assert-uim-equal "ja.EUC-JP"
+ '(locale-str (locale-new "ja.EUC-JP")))
+ (assert-uim-equal "zh_CN.UTF-8"
+ '(locale-str (locale-new "zh_CN.UTF-8")))
+ (assert-uim-equal "zh_CN"
+ '(locale-str (locale-new "zh_CN")))
+ (assert-uim-equal "zh"
+ '(locale-str (locale-new "zh")))
+ (assert-uim-equal "zh.UTF-8"
+ '(locale-str (locale-new "zh.UTF-8")))
+ #f)
+
+(define (test-locale-zh-awared-lang)
+ (assert-uim-equal ""
+ '(locale-zh-awared-lang (locale-new "invalid_IN.")))
+ (assert-uim-equal "ja"
+ '(locale-zh-awared-lang (locale-new "ja_JP.EUC-JP")))
+ (assert-uim-equal "ja"
+ '(locale-zh-awared-lang (locale-new "ja_JP")))
+ (assert-uim-equal "ja"
+ '(locale-zh-awared-lang (locale-new "ja")))
+ (assert-uim-equal "ja"
+ '(locale-zh-awared-lang (locale-new "ja.EUC-JP")))
+ (assert-uim-equal "en"
+ '(locale-zh-awared-lang (locale-new "en_US.UTF-8")))
+ (assert-uim-equal "en"
+ '(locale-zh-awared-lang (locale-new "en_US")))
+ (assert-uim-equal "en"
+ '(locale-zh-awared-lang (locale-new "en")))
+ (assert-uim-equal "en"
+ '(locale-zh-awared-lang (locale-new "en.UTF-8")))
+ ;; returns "zh_XX" form if lang part is "zh"
+ (assert-uim-equal "zh_CN"
+ '(locale-zh-awared-lang (locale-new "zh_CN.UTF-8")))
+ (assert-uim-equal "zh_CN"
+ '(locale-zh-awared-lang (locale-new "zh_CN")))
+ (assert-uim-equal "zh"
+ '(locale-zh-awared-lang (locale-new "zh")))
+ (assert-uim-equal "zh"
+ '(locale-zh-awared-lang (locale-new "zh.UTF-8")))
+ (assert-uim-equal "zh_TW"
+ '(locale-zh-awared-lang (locale-new "zh_TW.UTF-8")))
+ (assert-uim-equal "zh_TW"
+ '(locale-zh-awared-lang (locale-new "zh_TW")))
+ (assert-uim-equal "zh"
+ '(locale-zh-awared-lang (locale-new "zh")))
+ (assert-uim-equal "zh"
+ '(locale-zh-awared-lang (locale-new "zh.UTF-8")))
+ (assert-uim-equal "zh_HK"
+ '(locale-zh-awared-lang (locale-new "zh_HK.UTF-8")))
+ (assert-uim-equal "zh_HK"
+ '(locale-zh-awared-lang (locale-new "zh_HK")))
+ (assert-uim-equal "zh"
+ '(locale-zh-awared-lang (locale-new "zh")))
+ (assert-uim-equal "zh"
+ '(locale-zh-awared-lang (locale-new "zh.UTF-8")))
+ #f)
+
+(define (test-langgroup-covers?)
+ ;; exact match
+ (assert-uim-equal '("ja")
+ '(langgroup-covers? "ja" "ja"))
+ (assert-uim-equal '("en")
+ '(langgroup-covers? "en" "en"))
+ (assert-uim-equal '("de")
+ '(langgroup-covers? "de" "de"))
+ (assert-uim-equal '("fr")
+ '(langgroup-covers? "fr" "fr"))
+ (assert-uim-equal '("zh")
+ '(langgroup-covers? "zh" "zh"))
+ (assert-uim-equal '("zh_CN")
+ '(langgroup-covers? "zh_CN" "zh_CN"))
+ (assert-uim-equal '("zh_TW")
+ '(langgroup-covers? "zh_TW" "zh_TW"))
+ (assert-uim-equal '("zh_HK")
+ '(langgroup-covers? "zh_HK" "zh_HK"))
+ (assert-uim-false '(langgroup-covers? "de" "ja"))
+ (assert-uim-false '(langgroup-covers? "de" "en"))
+ (assert-uim-false '(langgroup-covers? "de" "fr"))
+ (assert-uim-false '(langgroup-covers? "de" "zh"))
+ (assert-uim-false '(langgroup-covers? "de" "zh_CN"))
+ (assert-uim-false '(langgroup-covers? "de" "zh_TW"))
+ (assert-uim-false '(langgroup-covers? "de" "zh_HK"))
+ ;; group match
+ (assert-uim-false '(langgroup-covers? "de:en:fr" "ja"))
+ (assert-uim-equal '("en" "fr")
+ '(langgroup-covers? "de:en:fr" "en"))
+ (assert-uim-equal '("de" "en" "fr")
+ '(langgroup-covers? "de:en:fr" "de"))
+ (assert-uim-equal '("fr")
+ '(langgroup-covers? "de:en:fr" "fr"))
+ (assert-uim-false '(langgroup-covers? "de:en:fr" "zh"))
+ (assert-uim-false '(langgroup-covers? "de:en:fr" "zh_CN"))
+ (assert-uim-false '(langgroup-covers? "de:en:fr" "zh_TW"))
+ (assert-uim-false '(langgroup-covers? "de:en:fr" "zh_HK"))
+ ;; group expression is only allowed for first arg
+ (assert-uim-false '(langgroup-covers? "de:en:fr" "de:en"))
+ (assert-uim-false '(langgroup-covers? "de:en:fr" "de:en:fr"))
+ ;; wildcard
+ (assert-uim-true '(langgroup-covers? "*" "ja"))
+ (assert-uim-true '(langgroup-covers? "*" "en"))
+ (assert-uim-true '(langgroup-covers? "*" "de"))
+ (assert-uim-true '(langgroup-covers? "*" "fr"))
+ (assert-uim-true '(langgroup-covers? "*" "zh"))
+ (assert-uim-true '(langgroup-covers? "*" "zh_CN"))
+ (assert-uim-true '(langgroup-covers? "*" "zh_TW"))
+ (assert-uim-true '(langgroup-covers? "*" "zh_HK"))
+ ;; wildcard is only allowed for first arg
+ (assert-uim-false '(langgroup-covers? "en" "*"))
+ ;; 'nothing'
+ (assert-uim-false '(langgroup-covers? "" "ja"))
+ (assert-uim-false '(langgroup-covers? "" "en"))
+ (assert-uim-false '(langgroup-covers? "" "de"))
+ (assert-uim-false '(langgroup-covers? "" "fr"))
+ (assert-uim-false '(langgroup-covers? "" "zh"))
+ (assert-uim-false '(langgroup-covers? "" "zh_CN"))
+ (assert-uim-false '(langgroup-covers? "" "zh_TW"))
+ (assert-uim-false '(langgroup-covers? "" "zh_HK"))
+ (assert-uim-false '(langgroup-covers? "" "*"))
+ (assert-uim-false '(langgroup-covers? "" ""))
+ ;; no special handling for Chinese
+ (assert-uim-false '(langgroup-covers? "zh" "zh_CN"))
+ (assert-uim-false '(langgroup-covers? "zh" "zh_TW"))
+ (assert-uim-false '(langgroup-covers? "zh" "zh_HK"))
+ (assert-uim-false '(langgroup-covers? "zh_CN" "zh"))
+ (assert-uim-false '(langgroup-covers? "zh_TW" "zh"))
+ (assert-uim-false '(langgroup-covers? "zh_HK" "zh"))
+ (assert-uim-false '(langgroup-covers? "zh_CN" "zh_TW"))
+ (assert-uim-false '(langgroup-covers? "zh_CN" "zh_HK"))
+ (assert-uim-false '(langgroup-covers? "zh_HK" "zh_CN"))
+ (assert-uim-false '(langgroup-covers? "zh_HK" "zh_TW"))
+ (assert-uim-equal '("zh_TW" "zh_HK")
+ '(langgroup-covers? "zh_TW:zh_HK" "zh_TW"))
+ (assert-uim-equal '("zh_HK")
+ '(langgroup-covers? "zh_TW:zh_HK" "zh_HK"))
+ (assert-uim-false '(langgroup-covers? "zh_TW:zh_HK" "zh_CN"))
+ (assert-uim-false '(langgroup-covers? "zh_TW:zh_HK" "zh"))
+ (assert-uim-false '(langgroup-covers? "zh_CN:zh_TW:zh_HK" "zh"))
+ #f)
+
+;; (define-uim-test-case "testcase i18n ISO 639-1 language code #1"
+;; (setup
+;; (lambda ()
+;; (sys-putenv "LC_ALL" "C")))
+
+(define (test-lang-code->lang-name-in-en-locale)
+ (assert-uim-equal "Japanese"
+ '(lang-code->lang-name "ja"))
+ (assert-uim-equal "English"
+ '(lang-code->lang-name "en"))
+ (assert-uim-equal "Chinese"
+ '(lang-code->lang-name "zh"))
+ #f)
;(define-uim-test-case "testcase i18n ISO 639-1 language code #2"
; (setup
@@ -330,9 +354,12 @@
;
; ("test lang-code->lang-name in ja_JP locale"
; (uim '(bind_textdomain_codeset "uim" "UTF-8"))
-; (assert-equal "日本語"
-; (uim '(lang-code->lang-name "ja")))
-; (assert-equal "英語"
-; (uim '(lang-code->lang-name "en")))
-; (assert-equal "中国語"
-; (uim '(lang-code->lang-name "zh")))))
+; (assert-uim-equal "日本語"
+; '(lang-code->lang-name "ja"))
+; (assert-uim-equal "英語"
+; '(lang-code->lang-name "en"))
+; (assert-uim-equal "中国語"
+; '(lang-code->lang-name "zh"))))
+
+
+(provide "test/test-i18n")