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")

Reply via email to