0000: 23 20 54 68 69 73 20 66 69 6c 65 20 63 6f 6e 74 # This file cont
0010: 61 69 6e 73 20 61 20 63 6f 6c 6c 65 63 74 69 6f ains a collectio
0020: 6e 20 6f 66 20 74 65 73 74 73 20 66 6f 72 20 74 n of tests for t
0030: 68 65 20 6d 73 67 63 61 74 20 70 61 63 6b 61 67 he msgcat packag
0040: 65 2e 0a 23 20 53 6f 75 72 63 69 6e 67 20 74 68 e..# Sourcing th
0050: 69 73 20 66 69 6c 65 20 69 6e 74 6f 20 54 63 6c is file into Tcl
0060: 20 72 75 6e 73 20 74 68 65 20 74 65 73 74 73 20 runs the tests
0070: 61 6e 64 0a 23 20 67 65 6e 65 72 61 74 65 73 20 and.# generates
0080: 6f 75 74 70 75 74 20 66 6f 72 20 65 72 72 6f 72 output for error
0090: 73 2e 20 20 4e 6f 20 6f 75 74 70 75 74 20 6d 65 s. No output me
00a0: 61 6e 73 20 6e 6f 20 65 72 72 6f 72 73 20 77 65 ans no errors we
00b0: 72 65 20 66 6f 75 6e 64 2e 0a 23 0a 23 20 43 6f re found..#.# Co
00c0: 70 79 72 69 67 68 74 20 c2 a9 20 31 39 39 38 20 pyright © 1998
00d0: 4d 61 72 6b 20 48 61 72 72 69 73 6f 6e 2e 0a 23 Mark Harrison..#
00e0: 20 43 6f 70 79 72 69 67 68 74 20 c2 a9 20 31 39 Copyright © 19
00f0: 39 38 2d 31 39 39 39 20 53 63 72 69 70 74 69 63 98-1999 Scriptic
0100: 73 20 43 6f 72 70 6f 72 61 74 69 6f 6e 2e 0a 23 s Corporation..#
0110: 20 43 6f 6e 74 72 69 62 75 74 69 6f 6e 73 20 66 Contributions f
0120: 72 6f 6d 20 44 6f 6e 20 50 6f 72 74 65 72 2c 20 rom Don Porter,
0130: 4e 49 53 54 2c 20 32 30 30 32 2e 20 20 28 6e 6f NIST, 2002. (no
0140: 74 20 73 75 62 6a 65 63 74 20 74 6f 20 55 53 20 t subject to US
0150: 63 6f 70 79 72 69 67 68 74 29 0a 23 0a 23 20 53 copyright).#.# S
0160: 65 65 20 74 68 65 20 66 69 6c 65 20 22 6c 69 63 ee the file "lic
0170: 65 6e 73 65 2e 74 65 72 6d 73 22 20 66 6f 72 20 ense.terms" for
0180: 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 6f 6e 20 75 information on u
0190: 73 61 67 65 20 61 6e 64 20 72 65 64 69 73 74 72 sage and redistr
01a0: 69 62 75 74 69 6f 6e 0a 23 20 6f 66 20 74 68 69 ibution.# of thi
01b0: 73 20 66 69 6c 65 2c 20 61 6e 64 20 66 6f 72 20 s file, and for
01c0: 61 20 44 49 53 43 4c 41 49 4d 45 52 20 4f 46 20 a DISCLAIMER OF
01d0: 41 4c 4c 20 57 41 52 52 41 4e 54 49 45 53 2e 0a ALL WARRANTIES..
01e0: 23 0a 23 20 4e 6f 74 65 20 74 68 61 74 20 61 66 #.# Note that af
01f0: 74 65 72 20 72 75 6e 6e 69 6e 67 20 74 68 65 73 ter running thes
0200: 65 20 74 65 73 74 73 2c 20 65 6e 74 72 69 65 73 e tests, entries
0210: 20 77 69 6c 6c 20 62 65 20 6c 65 66 74 20 62 65 will be left be
0220: 68 69 6e 64 20 69 6e 20 74 68 65 0a 23 20 6d 65 hind in the.# me
0230: 73 73 61 67 65 20 63 61 74 61 6c 6f 67 73 20 66 ssage catalogs f
0240: 6f 72 20 6c 6f 63 61 6c 65 73 20 66 6f 6f 2c 20 or locales foo,
0250: 66 6f 6f 5f 42 41 52 2c 20 61 6e 64 20 66 6f 6f foo_BAR, and foo
0260: 5f 42 41 52 5f 62 61 7a 2e 0a 0a 69 66 20 7b 22 _BAR_baz...if {"
0270: 3a 3a 74 63 6c 74 65 73 74 22 20 6e 69 20 5b 6e ::tcltest" ni [n
0280: 61 6d 65 73 70 61 63 65 20 63 68 69 6c 64 72 65 amespace childre
0290: 6e 5d 7d 20 7b 0a 20 20 20 20 70 61 63 6b 61 67 n]} {. packag
02a0: 65 20 72 65 71 75 69 72 65 20 74 63 6c 74 65 73 e require tcltes
02b0: 74 20 32 2e 35 0a 20 20 20 20 6e 61 6d 65 73 70 t 2.5. namesp
02c0: 61 63 65 20 69 6d 70 6f 72 74 20 2d 66 6f 72 63 ace import -forc
02d0: 65 20 3a 3a 74 63 6c 74 65 73 74 3a 3a 2a 0a 7d e ::tcltest::*.}
02e0: 0a 69 66 20 7b 5b 63 61 74 63 68 20 7b 70 61 63 .if {[catch {pac
02f0: 6b 61 67 65 20 72 65 71 75 69 72 65 20 6d 73 67 kage require msg
0300: 63 61 74 20 31 2e 36 7d 5d 7d 20 7b 0a 20 20 20 cat 1.6}]} {.
0310: 20 70 75 74 73 20 73 74 64 65 72 72 20 22 53 6b puts stderr "Sk
0320: 69 70 70 69 6e 67 20 74 65 73 74 73 20 69 6e 20 ipping tests in
0330: 5b 69 6e 66 6f 20 73 63 72 69 70 74 5d 2e 20 20 [info script].
0340: 4e 6f 20 6d 73 67 63 61 74 20 31 2e 36 20 66 6f No msgcat 1.6 fo
0350: 75 6e 64 20 74 6f 20 74 65 73 74 2e 22 0a 20 20 und to test.".
0360: 20 20 72 65 74 75 72 6e 0a 7d 0a 0a 6e 61 6d 65 return.}..name
0370: 73 70 61 63 65 20 65 76 61 6c 20 3a 3a 6d 73 67 space eval ::msg
0380: 63 61 74 3a 3a 74 65 73 74 20 7b 0a 20 20 20 20 cat::test {.
0390: 6e 61 6d 65 73 70 61 63 65 20 69 6d 70 6f 72 74 namespace import
03a0: 20 3a 3a 6d 73 67 63 61 74 3a 3a 2a 0a 20 20 20 ::msgcat::*.
03b0: 20 6e 61 6d 65 73 70 61 63 65 20 69 6d 70 6f 72 namespace impor
03c0: 74 20 3a 3a 74 63 6c 74 65 73 74 3a 3a 74 65 73 t ::tcltest::tes
03d0: 74 0a 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20 t. namespace
03e0: 69 6d 70 6f 72 74 20 3a 3a 74 63 6c 74 65 73 74 import ::tcltest
03f0: 3a 3a 63 6c 65 61 6e 75 70 54 65 73 74 73 0a 20 ::cleanupTests.
0400: 20 20 20 6e 61 6d 65 73 70 61 63 65 20 69 6d 70 namespace imp
0410: 6f 72 74 20 3a 3a 74 63 6c 74 65 73 74 3a 3a 74 ort ::tcltest::t
0420: 65 6d 70 6f 72 61 72 79 44 69 72 65 63 74 6f 72 emporaryDirector
0430: 79 0a 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20 y. namespace
0440: 69 6d 70 6f 72 74 20 3a 3a 74 63 6c 74 65 73 74 import ::tcltest
0450: 3a 3a 6d 61 6b 65 2a 0a 20 20 20 20 6e 61 6d 65 ::make*. name
0460: 73 70 61 63 65 20 69 6d 70 6f 72 74 20 3a 3a 74 space import ::t
0470: 63 6c 74 65 73 74 3a 3a 72 65 6d 6f 76 65 2a 0a cltest::remove*.
0480: 0a 20 20 20 20 23 20 54 65 73 74 73 20 6d 73 67 . # Tests msg
0490: 63 61 74 2d 30 2e 2a 3a 20 6c 6f 63 61 6c 65 20 cat-0.*: locale
04a0: 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 0a 0a initialization..
04b0: 20 20 20 20 23 20 43 61 6c 63 75 6c 61 74 65 20 # Calculate
04c0: 73 65 74 20 6f 66 20 61 6c 6c 20 70 65 72 6d 75 set of all permu
04d0: 74 61 74 69 6f 6e 73 20 6f 66 20 61 20 6c 69 73 tations of a lis
04e0: 74 0a 20 20 20 20 23 20 50 6f 77 65 72 53 65 74 t. # PowerSet
04f0: 20 7b 31 20 32 20 33 7d 20 2d 3e 20 7b 31 20 32 {1 2 3} -> {1 2
0500: 20 33 7d 20 7b 32 20 33 7d 20 7b 31 20 33 7d 20 3} {2 3} {1 3}
0510: 33 20 7b 31 20 32 7d 20 32 20 31 20 7b 7d 0a 20 3 {1 2} 2 1 {}.
0520: 20 20 20 70 72 6f 63 20 50 6f 77 65 72 53 65 74 proc PowerSet
0530: 20 7b 6c 7d 20 7b 0a 09 69 66 20 7b 5b 6c 6c 65 {l} {..if {[lle
0540: 6e 67 74 68 20 24 6c 5d 20 3d 3d 20 30 7d 20 7b ngth $l] == 0} {
0550: 72 65 74 75 72 6e 20 5b 6c 69 73 74 20 5b 6c 69 return [list [li
0560: 73 74 5d 5d 7d 0a 09 73 65 74 20 65 6c 65 6d 65 st]]}..set eleme
0570: 6e 74 20 5b 6c 69 6e 64 65 78 20 24 6c 20 30 5d nt [lindex $l 0]
0580: 0a 09 73 65 74 20 72 65 73 74 20 5b 6c 72 61 6e ..set rest [lran
0590: 67 65 20 24 6c 20 31 20 65 6e 64 5d 0a 09 73 65 ge $l 1 end]..se
05a0: 74 20 72 65 73 75 6c 74 20 5b 6c 69 73 74 5d 0a t result [list].
05b0: 09 66 6f 72 65 61 63 68 20 78 20 5b 50 6f 77 65 .foreach x [Powe
05c0: 72 53 65 74 20 24 72 65 73 74 5d 20 7b 0a 09 20 rSet $rest] {..
05d0: 20 20 20 6c 61 70 70 65 6e 64 20 72 65 73 75 6c lappend resul
05e0: 74 20 5b 6c 69 6e 73 65 72 74 20 24 78 20 30 20 t [linsert $x 0
05f0: 24 65 6c 65 6d 65 6e 74 5d 0a 09 20 20 20 20 6c $element].. l
0600: 61 70 70 65 6e 64 20 72 65 73 75 6c 74 20 24 78 append result $x
0610: 0a 09 7d 0a 09 72 65 74 75 72 6e 20 24 72 65 73 ..}..return $res
0620: 75 6c 74 0a 20 20 20 20 7d 0a 0a 20 20 20 20 76 ult. }.. v
0630: 61 72 69 61 62 6c 65 20 65 6e 76 56 61 72 73 20 ariable envVars
0640: 7b 4c 43 5f 41 4c 4c 20 4c 43 5f 4d 45 53 53 41 {LC_ALL LC_MESSA
0650: 47 45 53 20 4c 41 4e 47 7d 0a 20 20 20 20 76 61 GES LANG}. va
0660: 72 69 61 62 6c 65 20 63 6f 75 6e 74 20 30 0a 20 riable count 0.
0670: 20 20 20 76 61 72 69 61 62 6c 65 20 62 6f 64 79 variable body
0680: 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 72 65 . variable re
0690: 73 75 6c 74 0a 20 20 20 20 76 61 72 69 61 62 6c sult. variabl
06a0: 65 20 73 65 74 56 61 72 73 0a 20 20 20 20 66 6f e setVars. fo
06b0: 72 65 61 63 68 20 73 65 74 56 61 72 73 20 5b 50 reach setVars [P
06c0: 6f 77 65 72 53 65 74 20 24 65 6e 76 56 61 72 73 owerSet $envVars
06d0: 5d 20 7b 0a 09 73 65 74 20 72 65 73 75 6c 74 20 ] {..set result
06e0: 5b 73 74 72 69 6e 67 20 74 6f 6c 6f 77 65 72 20 [string tolower
06f0: 5b 6c 69 6e 64 65 78 20 24 73 65 74 56 61 72 73 [lindex $setVars
0700: 20 30 5d 5d 0a 09 69 66 20 7b 5b 73 74 72 69 6e 0]]..if {[strin
0710: 67 20 6c 65 6e 67 74 68 20 24 72 65 73 75 6c 74 g length $result
0720: 5d 20 3d 3d 20 30 7d 20 7b 0a 09 20 20 20 20 69 ] == 0} {.. i
0730: 66 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 f {[info exists
0740: 3a 3a 74 63 6c 3a 3a 6d 61 63 3a 3a 6c 6f 63 61 ::tcl::mac::loca
0750: 6c 65 5d 7d 20 7b 0a 69 66 20 7b 5b 70 61 63 6b le]} {.if {[pack
0760: 61 67 65 20 76 73 61 74 69 73 66 69 65 73 20 5b age vsatisfies [
0770: 70 61 63 6b 61 67 65 20 70 72 6f 76 69 64 65 20 package provide
0780: 6d 73 67 63 61 74 5d 20 31 2e 37 5d 7d 20 7b 0a msgcat] 1.7]} {.
0790: 09 09 73 65 74 20 72 65 73 75 6c 74 20 5b 73 74 ..set result [st
07a0: 72 69 6e 67 20 74 6f 6c 6f 77 65 72 20 5c 0a 09 ring tolower \..
07b0: 09 09 5b 6d 73 67 63 61 74 3a 3a 6d 63 75 74 69 ..[msgcat::mcuti
07c0: 6c 3a 3a 43 6f 6e 76 65 72 74 4c 6f 63 61 6c 65 l::ConvertLocale
07d0: 20 24 3a 3a 74 63 6c 3a 3a 6d 61 63 3a 3a 6c 6f $::tcl::mac::lo
07e0: 63 61 6c 65 5d 5d 0a 7d 20 65 6c 73 65 20 7b 0a cale]].} else {.
07f0: 09 09 73 65 74 20 72 65 73 75 6c 74 20 5b 73 74 ..set result [st
0800: 72 69 6e 67 20 74 6f 6c 6f 77 65 72 20 5c 0a 09 ring tolower \..
0810: 09 09 5b 6d 73 67 63 61 74 3a 3a 43 6f 6e 76 65 ..[msgcat::Conve
0820: 72 74 4c 6f 63 61 6c 65 20 24 3a 3a 74 63 6c 3a rtLocale $::tcl:
0830: 3a 6d 61 63 3a 3a 6c 6f 63 61 6c 65 5d 5d 0a 7d :mac::locale]].}
0840: 0a 09 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 .. } else {..
0850: 09 69 66 20 7b 28 5b 69 6e 66 6f 20 73 68 61 72 .if {([info shar
0860: 65 64 6c 69 62 65 78 74 65 6e 73 69 6f 6e 5d 20 edlibextension]
0870: 65 71 20 22 2e 64 6c 6c 22 29 0a 09 09 09 26 26 eq ".dll")....&&
0880: 20 21 5b 63 61 74 63 68 20 7b 70 61 63 6b 61 67 ![catch {packag
0890: 65 20 72 65 71 75 69 72 65 20 72 65 67 69 73 74 e require regist
08a0: 72 79 7d 5d 7d 20 7b 0a 09 09 20 20 20 20 23 20 ry}]} {... #
08b0: 57 69 6e 64 6f 77 73 20 61 6e 64 20 43 79 67 77 Windows and Cygw
08c0: 69 6e 20 68 61 76 65 20 6f 74 68 65 72 20 77 61 in have other wa
08d0: 79 73 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 ys to determine
08e0: 74 68 65 0a 09 09 20 20 20 20 23 20 6c 6f 63 61 the... # loca
08f0: 6c 65 20 77 68 65 6e 20 74 68 65 20 65 6e 76 69 le when the envi
0900: 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 ronment variable
0910: 73 20 61 72 65 20 6d 69 73 73 69 6e 67 0a 09 09 s are missing...
0920: 20 20 20 20 23 20 61 6e 64 20 74 68 65 20 72 65 # and the re
0930: 67 69 73 74 72 79 20 70 61 63 6b 61 67 65 20 69 gistry package i
0940: 73 20 70 72 65 73 65 6e 74 0a 09 09 20 20 20 20 s present...
0950: 63 6f 6e 74 69 6e 75 65 0a 09 09 7d 0a 09 09 73 continue...}...s
0960: 65 74 20 72 65 73 75 6c 74 20 63 0a 09 20 20 20 et result c..
0970: 20 7d 0a 09 7d 0a 0c 0a 09 74 65 73 74 20 6d 73 }..}....test ms
0980: 67 63 61 74 2d 30 2e 24 63 6f 75 6e 74 20 5b 6c gcat-0.$count [l
0990: 69 73 74 20 5c 0a 09 20 20 20 20 6c 6f 63 61 6c ist \.. local
09a0: 65 20 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e e initialization
09b0: 20 66 72 6f 6d 20 65 6e 76 69 72 6f 6e 6d 65 6e from environmen
09c0: 74 20 76 61 72 69 61 62 6c 65 73 20 24 73 65 74 t variables $set
09d0: 56 61 72 73 20 5c 0a 09 5d 20 2d 73 65 74 75 70 Vars \..] -setup
09e0: 20 7b 0a 09 20 20 20 20 76 61 72 69 61 62 6c 65 {.. variable
09f0: 20 76 61 72 0a 09 20 20 20 20 66 6f 72 65 61 63 var.. foreac
0a00: 68 20 76 61 72 20 24 65 6e 76 56 61 72 73 20 7b h var $envVars {
0a10: 0a 09 09 63 61 74 63 68 20 7b 76 61 72 69 61 62 ...catch {variab
0a20: 6c 65 20 24 76 61 72 20 24 3a 3a 65 6e 76 28 24 le $var $::env($
0a30: 76 61 72 29 7d 0a 09 09 75 6e 73 65 74 20 2d 6e var)}...unset -n
0a40: 6f 63 6f 6d 70 6c 61 69 6e 20 3a 3a 65 6e 76 28 ocomplain ::env(
0a50: 24 76 61 72 29 0a 09 20 20 20 20 7d 0a 09 20 20 $var).. }..
0a60: 20 20 66 6f 72 65 61 63 68 20 76 61 72 20 24 73 foreach var $s
0a70: 65 74 56 61 72 73 20 7b 0a 09 09 73 65 74 20 3a etVars {...set :
0a80: 3a 65 6e 76 28 24 76 61 72 29 20 24 76 61 72 0a :env($var) $var.
0a90: 09 20 20 20 20 7d 0a 09 20 20 20 20 69 6e 74 65 . }.. inte
0aa0: 72 70 20 63 72 65 61 74 65 20 5b 6e 61 6d 65 73 rp create [names
0ab0: 70 61 63 65 20 63 75 72 72 65 6e 74 5d 3a 3a 69 pace current]::i
0ac0: 0a 09 20 20 20 20 69 20 65 76 61 6c 20 5b 6c 69 .. i eval [li
0ad0: 73 74 20 70 61 63 6b 61 67 65 20 69 66 6e 65 65 st package ifnee
0ae0: 64 65 64 20 6d 73 67 63 61 74 20 5b 70 61 63 6b ded msgcat [pack
0af0: 61 67 65 20 70 72 6f 76 69 64 65 20 6d 73 67 63 age provide msgc
0b00: 61 74 5d 20 5c 0a 09 09 20 20 20 20 5b 70 61 63 at] \... [pac
0b10: 6b 61 67 65 20 69 66 6e 65 65 64 65 64 20 6d 73 kage ifneeded ms
0b20: 67 63 61 74 20 5b 70 61 63 6b 61 67 65 20 70 72 gcat [package pr
0b30: 6f 76 69 64 65 20 6d 73 67 63 61 74 5d 5d 5d 0a ovide msgcat]]].
0b40: 09 20 20 20 20 69 20 65 76 61 6c 20 70 61 63 6b . i eval pack
0b50: 61 67 65 20 72 65 71 75 69 72 65 20 6d 73 67 63 age require msgc
0b60: 61 74 0a 09 7d 20 2d 63 6c 65 61 6e 75 70 20 7b at..} -cleanup {
0b70: 0a 09 20 20 20 20 69 6e 74 65 72 70 20 64 65 6c .. interp del
0b80: 65 74 65 20 5b 6e 61 6d 65 73 70 61 63 65 20 63 ete [namespace c
0b90: 75 72 72 65 6e 74 5d 3a 3a 69 0a 09 20 20 20 20 urrent]::i..
0ba0: 66 6f 72 65 61 63 68 20 76 61 72 20 24 65 6e 76 foreach var $env
0bb0: 56 61 72 73 20 7b 0a 09 09 75 6e 73 65 74 20 2d Vars {...unset -
0bc0: 6e 6f 63 6f 6d 70 6c 61 69 6e 20 3a 3a 65 6e 76 nocomplain ::env
0bd0: 28 24 76 61 72 29 0a 09 09 63 61 74 63 68 20 7b ($var)...catch {
0be0: 73 65 74 20 3a 3a 65 6e 76 28 24 76 61 72 29 20 set ::env($var)
0bf0: 5b 73 65 74 20 5b 6e 61 6d 65 73 70 61 63 65 20 [set [namespace
0c00: 63 75 72 72 65 6e 74 5d 3a 3a 24 76 61 72 5d 7d current]::$var]}
0c10: 0a 09 20 20 20 20 7d 0a 09 7d 20 2d 62 6f 64 79 .. }..} -body
0c20: 20 7b 69 20 65 76 61 6c 20 6d 73 67 63 61 74 3a {i eval msgcat:
0c30: 3a 6d 63 6c 6f 63 61 6c 65 7d 20 2d 72 65 73 75 :mclocale} -resu
0c40: 6c 74 20 24 72 65 73 75 6c 74 0a 09 69 6e 63 72 lt $result..incr
0c50: 20 63 6f 75 6e 74 0a 20 20 20 20 7d 0a 20 20 20 count. }.
0c60: 20 75 6e 73 65 74 20 2d 6e 6f 63 6f 6d 70 6c 61 unset -nocompla
0c70: 69 6e 20 72 65 73 75 6c 74 0a 0a 20 20 20 20 23 in result.. #
0c80: 20 43 6f 75 6c 64 20 61 64 64 20 74 65 73 74 73 Could add tests
0c90: 20 6f 66 20 69 6e 69 74 69 61 6c 69 7a 61 74 69 of initializati
0ca0: 6f 6e 20 66 72 6f 6d 20 57 69 6e 64 6f 77 73 20 on from Windows
0cb0: 72 65 67 69 73 74 72 79 20 68 65 72 65 2e 0a 20 registry here..
0cc0: 20 20 20 23 20 55 73 65 20 61 20 66 61 6b 65 20 # Use a fake
0cd0: 72 65 67 69 73 74 72 79 20 70 61 63 6b 61 67 65 registry package
0ce0: 2e 0a 0a 20 20 20 20 23 20 54 65 73 74 73 20 6d ... # Tests m
0cf0: 73 67 63 61 74 2d 31 2e 2a 3a 20 5b 6d 63 6c 6f sgcat-1.*: [mclo
0d00: 63 61 6c 65 5d 2c 20 5b 6d 63 70 72 65 66 65 72 cale], [mcprefer
0d10: 65 6e 63 65 73 5d 0a 0a 20 20 20 20 74 65 73 74 ences].. test
0d20: 20 6d 73 67 63 61 74 2d 31 2e 33 20 7b 6d 63 6c msgcat-1.3 {mcl
0d30: 6f 63 61 6c 65 20 73 65 74 2c 20 73 69 6e 67 6c ocale set, singl
0d40: 65 20 65 6c 65 6d 65 6e 74 7d 20 2d 73 65 74 75 e element} -setu
0d50: 70 20 7b 0a 09 76 61 72 69 61 62 6c 65 20 6c 6f p {..variable lo
0d60: 63 61 6c 65 20 5b 6d 63 6c 6f 63 61 6c 65 5d 0a cale [mclocale].
0d70: 20 20 20 20 7d 20 2d 63 6c 65 61 6e 75 70 20 7b } -cleanup {
0d80: 0a 09 6d 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 ..mclocale $loca
0d90: 6c 65 0a 20 20 20 20 7d 20 2d 62 6f 64 79 20 7b le. } -body {
0da0: 0a 09 6d 63 6c 6f 63 61 6c 65 20 65 6e 0a 20 20 ..mclocale en.
0db0: 20 20 7d 20 2d 72 65 73 75 6c 74 20 65 6e 0a 0a } -result en..
0dc0: 20 20 20 20 74 65 73 74 20 6d 73 67 63 61 74 2d test msgcat-
0dd0: 31 2e 34 20 7b 6d 63 6c 6f 63 61 6c 65 20 67 65 1.4 {mclocale ge
0de0: 74 2c 20 73 69 6e 67 6c 65 20 65 6c 65 6d 65 6e t, single elemen
0df0: 74 7d 20 2d 73 65 74 75 70 20 7b 0a 09 76 61 72 t} -setup {..var
0e00: 69 61 62 6c 65 20 6c 6f 63 61 6c 65 20 5b 6d 63 iable locale [mc
0e10: 6c 6f 63 61 6c 65 5d 0a 09 6d 63 6c 6f 63 61 6c locale]..mclocal
0e20: 65 20 65 6e 0a 20 20 20 20 7d 20 2d 63 6c 65 61 e en. } -clea
0e30: 6e 75 70 20 7b 0a 09 6d 63 6c 6f 63 61 6c 65 20 nup {..mclocale
0e40: 24 6c 6f 63 61 6c 65 0a 20 20 20 20 7d 20 2d 62 $locale. } -b
0e50: 6f 64 79 20 7b 0a 09 6d 63 6c 6f 63 61 6c 65 0a ody {..mclocale.
0e60: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 65 6e } -result en
0e70: 0a 0a 20 20 20 20 74 65 73 74 20 6d 73 67 63 61 .. test msgca
0e80: 74 2d 31 2e 35 20 7b 6d 63 70 72 65 66 65 72 65 t-1.5 {mcprefere
0e90: 6e 63 65 73 2c 20 73 69 6e 67 6c 65 20 65 6c 65 nces, single ele
0ea0: 6d 65 6e 74 7d 20 2d 73 65 74 75 70 20 7b 0a 09 ment} -setup {..
0eb0: 76 61 72 69 61 62 6c 65 20 6c 6f 63 61 6c 65 20 variable locale
0ec0: 5b 6d 63 6c 6f 63 61 6c 65 5d 0a 09 6d 63 6c 6f [mclocale]..mclo
0ed0: 63 61 6c 65 20 65 6e 0a 20 20 20 20 7d 20 2d 63 cale en. } -c
0ee0: 6c 65 61 6e 75 70 20 7b 0a 09 6d 63 6c 6f 63 61 leanup {..mcloca
0ef0: 6c 65 20 24 6c 6f 63 61 6c 65 0a 20 20 20 20 7d le $locale. }
0f00: 20 2d 62 6f 64 79 20 7b 0a 09 6d 63 70 72 65 66 -body {..mcpref
0f10: 65 72 65 6e 63 65 73 0a 20 20 20 20 7d 20 2d 72 erences. } -r
0f20: 65 73 75 6c 74 20 7b 65 6e 20 7b 7d 7d 0a 0a 20 esult {en {}}..
0f30: 20 20 20 74 65 73 74 20 6d 73 67 63 61 74 2d 31 test msgcat-1
0f40: 2e 36 20 7b 6d 63 6c 6f 63 61 6c 65 20 73 65 74 .6 {mclocale set
0f50: 2c 20 74 77 6f 20 65 6c 65 6d 65 6e 74 73 7d 20 , two elements}
0f60: 2d 73 65 74 75 70 20 7b 0a 09 76 61 72 69 61 62 -setup {..variab
0f70: 6c 65 20 6c 6f 63 61 6c 65 20 5b 6d 63 6c 6f 63 le locale [mcloc
0f80: 61 6c 65 5d 0a 20 20 20 20 7d 20 2d 63 6c 65 61 ale]. } -clea
0f90: 6e 75 70 20 7b 0a 09 6d 63 6c 6f 63 61 6c 65 20 nup {..mclocale
0fa0: 24 6c 6f 63 61 6c 65 0a 20 20 20 20 7d 20 2d 62 $locale. } -b
0fb0: 6f 64 79 20 7b 0a 09 6d 63 6c 6f 63 61 6c 65 20 ody {..mclocale
0fc0: 65 6e 5f 55 53 0a 20 20 20 20 7d 20 2d 72 65 73 en_US. } -res
0fd0: 75 6c 74 20 65 6e 5f 75 73 0a 0a 20 20 20 20 74 ult en_us.. t
0fe0: 65 73 74 20 6d 73 67 63 61 74 2d 31 2e 37 20 7b est msgcat-1.7 {
0ff0: 6d 63 6c 6f 63 61 6c 65 20 67 65 74 2c 20 74 77 mclocale get, tw
1000: 6f 20 65 6c 65 6d 65 6e 74 73 7d 20 2d 73 65 74 o elements} -set
1010: 75 70 20 7b 0a 09 76 61 72 69 61 62 6c 65 20 6c up {..variable l
1020: 6f 63 61 6c 65 20 5b 6d 63 6c 6f 63 61 6c 65 5d ocale [mclocale]
1030: 0a 09 6d 63 6c 6f 63 61 6c 65 20 65 6e 5f 55 53 ..mclocale en_US
1040: 0a 20 20 20 20 7d 20 2d 63 6c 65 61 6e 75 70 20 . } -cleanup
1050: 7b 0a 09 6d 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 {..mclocale $loc
1060: 61 6c 65 0a 20 20 20 20 7d 20 2d 62 6f 64 79 20 ale. } -body
1070: 7b 0a 09 6d 63 6c 6f 63 61 6c 65 0a 20 20 20 20 {..mclocale.
1080: 7d 20 2d 72 65 73 75 6c 74 20 65 6e 5f 75 73 0a } -result en_us.
1090: 0a 20 20 20 20 74 65 73 74 20 6d 73 67 63 61 74 . test msgcat
10a0: 2d 31 2e 38 20 7b 6d 63 70 72 65 66 65 72 65 6e -1.8 {mcpreferen
10b0: 63 65 73 2c 20 74 77 6f 20 65 6c 65 6d 65 6e 74 ces, two element
10c0: 73 7d 20 2d 73 65 74 75 70 20 7b 0a 09 76 61 72 s} -setup {..var
10d0: 69 61 62 6c 65 20 6c 6f 63 61 6c 65 20 5b 6d 63 iable locale [mc
10e0: 6c 6f 63 61 6c 65 5d 0a 09 6d 63 6c 6f 63 61 6c locale]..mclocal
10f0: 65 20 65 6e 5f 55 53 0a 20 20 20 20 7d 20 2d 63 e en_US. } -c
1100: 6c 65 61 6e 75 70 20 7b 0a 09 6d 63 6c 6f 63 61 leanup {..mcloca
1110: 6c 65 20 24 6c 6f 63 61 6c 65 0a 20 20 20 20 7d le $locale. }
1120: 20 2d 62 6f 64 79 20 7b 0a 09 6d 63 70 72 65 66 -body {..mcpref
1130: 65 72 65 6e 63 65 73 0a 20 20 20 20 7d 20 2d 72 erences. } -r
1140: 65 73 75 6c 74 20 7b 65 6e 5f 75 73 20 65 6e 20 esult {en_us en
1150: 7b 7d 7d 0a 0a 20 20 20 20 74 65 73 74 20 6d 73 {}}.. test ms
1160: 67 63 61 74 2d 31 2e 39 20 7b 6d 63 6c 6f 63 61 gcat-1.9 {mcloca
1170: 6c 65 20 73 65 74 2c 20 74 68 72 65 65 20 65 6c le set, three el
1180: 65 6d 65 6e 74 73 7d 20 2d 73 65 74 75 70 20 7b ements} -setup {
1190: 0a 09 76 61 72 69 61 62 6c 65 20 6c 6f 63 61 6c ..variable local
11a0: 65 20 5b 6d 63 6c 6f 63 61 6c 65 5d 0a 20 20 20 e [mclocale].
11b0: 20 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 6d } -cleanup {..m
11c0: 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 6c 65 0a clocale $locale.
11d0: 20 20 20 20 7d 20 2d 62 6f 64 79 20 7b 0a 09 6d } -body {..m
11e0: 63 6c 6f 63 61 6c 65 20 65 6e 5f 55 53 5f 66 75 clocale en_US_fu
11f0: 6e 6b 79 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c nky. } -resul
1200: 74 20 65 6e 5f 75 73 5f 66 75 6e 6b 79 0a 0a 20 t en_us_funky..
1210: 20 20 20 74 65 73 74 20 6d 73 67 63 61 74 2d 31 test msgcat-1
1220: 2e 31 30 20 7b 6d 63 6c 6f 63 61 6c 65 20 67 65 .10 {mclocale ge
1230: 74 2c 20 74 68 72 65 65 20 65 6c 65 6d 65 6e 74 t, three element
1240: 73 7d 20 2d 73 65 74 75 70 20 7b 0a 09 76 61 72 s} -setup {..var
1250: 69 61 62 6c 65 20 6c 6f 63 61 6c 65 20 5b 6d 63 iable locale [mc
1260: 6c 6f 63 61 6c 65 5d 0a 09 6d 63 6c 6f 63 61 6c locale]..mclocal
1270: 65 20 65 6e 5f 55 53 5f 66 75 6e 6b 79 0a 20 20 e en_US_funky.
1280: 20 20 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 } -cleanup {..
1290: 6d 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 6c 65 mclocale $locale
12a0: 0a 20 20 20 20 7d 20 2d 62 6f 64 79 20 7b 0a 09 . } -body {..
12b0: 6d 63 6c 6f 63 61 6c 65 0a 20 20 20 20 7d 20 2d mclocale. } -
12c0: 72 65 73 75 6c 74 20 65 6e 5f 75 73 5f 66 75 6e result en_us_fun
12d0: 6b 79 0a 0a 20 20 20 20 74 65 73 74 20 6d 73 67 ky.. test msg
12e0: 63 61 74 2d 31 2e 31 31 20 7b 6d 63 70 72 65 66 cat-1.11 {mcpref
12f0: 65 72 65 6e 63 65 73 2c 20 74 68 72 65 65 20 65 erences, three e
1300: 6c 65 6d 65 6e 74 73 7d 20 2d 73 65 74 75 70 20 lements} -setup
1310: 7b 0a 09 76 61 72 69 61 62 6c 65 20 6c 6f 63 61 {..variable loca
1320: 6c 65 20 5b 6d 63 6c 6f 63 61 6c 65 5d 0a 09 6d le [mclocale]..m
1330: 63 6c 6f 63 61 6c 65 20 65 6e 5f 55 53 5f 66 75 clocale en_US_fu
1340: 6e 6b 79 0a 20 20 20 20 7d 20 2d 63 6c 65 61 6e nky. } -clean
1350: 75 70 20 7b 0a 09 6d 63 6c 6f 63 61 6c 65 20 24 up {..mclocale $
1360: 6c 6f 63 61 6c 65 0a 20 20 20 20 7d 20 2d 62 6f locale. } -bo
1370: 64 79 20 7b 0a 09 6d 63 70 72 65 66 65 72 65 6e dy {..mcpreferen
1380: 63 65 73 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c ces. } -resul
1390: 74 20 7b 65 6e 5f 75 73 5f 66 75 6e 6b 79 20 65 t {en_us_funky e
13a0: 6e 5f 75 73 20 65 6e 20 7b 7d 7d 0a 0a 20 20 20 n_us en {}}..
13b0: 20 74 65 73 74 20 6d 73 67 63 61 74 2d 31 2e 31 test msgcat-1.1
13c0: 32 20 7b 6d 63 6c 6f 63 61 6c 65 20 73 65 74 2c 2 {mclocale set,
13d0: 20 72 65 6a 65 63 74 20 65 76 69 6c 20 69 6e 70 reject evil inp
13e0: 75 74 7d 20 2d 73 65 74 75 70 20 7b 0a 09 76 61 ut} -setup {..va
13f0: 72 69 61 62 6c 65 20 6c 6f 63 61 6c 65 20 5b 6d riable locale [m
1400: 63 6c 6f 63 61 6c 65 5d 0a 20 20 20 20 7d 20 2d clocale]. } -
1410: 63 6c 65 61 6e 75 70 20 7b 0a 09 6d 63 6c 6f 63 cleanup {..mcloc
1420: 61 6c 65 20 24 6c 6f 63 61 6c 65 0a 20 20 20 20 ale $locale.
1430: 7d 20 2d 62 6f 64 79 20 7b 0a 09 6d 63 6c 6f 63 } -body {..mcloc
1440: 61 6c 65 20 2f 70 61 74 68 2f 74 6f 2f 65 76 69 ale /path/to/evi
1450: 6c 2f 63 6f 64 65 0a 20 20 20 20 7d 20 2d 72 65 l/code. } -re
1460: 74 75 72 6e 43 6f 64 65 73 20 65 72 72 6f 72 20 turnCodes error
1470: 2d 6d 61 74 63 68 20 67 6c 6f 62 20 2d 72 65 73 -match glob -res
1480: 75 6c 74 20 7b 69 6e 76 61 6c 69 64 20 6e 65 77 ult {invalid new
1490: 4c 6f 63 61 6c 65 20 76 61 6c 75 65 20 2a 7d 0a Locale value *}.
14a0: 0a 20 20 20 20 74 65 73 74 20 6d 73 67 63 61 74 . test msgcat
14b0: 2d 31 2e 31 33 20 7b 6d 63 6c 6f 63 61 6c 65 20 -1.13 {mclocale
14c0: 73 65 74 2c 20 72 65 6a 65 63 74 20 65 76 69 6c set, reject evil
14d0: 20 69 6e 70 75 74 7d 20 2d 73 65 74 75 70 20 7b input} -setup {
14e0: 0a 09 76 61 72 69 61 62 6c 65 20 6c 6f 63 61 6c ..variable local
14f0: 65 20 5b 6d 63 6c 6f 63 61 6c 65 5d 0a 20 20 20 e [mclocale].
1500: 20 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 6d } -cleanup {..m
1510: 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 6c 65 0a clocale $locale.
1520: 20 20 20 20 7d 20 2d 62 6f 64 79 20 7b 0a 09 6d } -body {..m
1530: 63 6c 6f 63 61 6c 65 20 6c 6f 6f 6b 73 2f 6f 6b clocale looks/ok
1540: 2f 2e 2e 2f 2e 2e 2f 2e 2e 2f 2e 2e 2f 62 75 74 /../../../../but
1550: 2f 69 73 2f 70 61 74 68 2f 74 6f 2f 65 76 69 6c /is/path/to/evil
1560: 2f 63 6f 64 65 0a 20 20 20 20 7d 20 2d 72 65 74 /code. } -ret
1570: 75 72 6e 43 6f 64 65 73 20 65 72 72 6f 72 20 2d urnCodes error -
1580: 6d 61 74 63 68 20 67 6c 6f 62 20 2d 72 65 73 75 match glob -resu
1590: 6c 74 20 7b 69 6e 76 61 6c 69 64 20 6e 65 77 4c lt {invalid newL
15a0: 6f 63 61 6c 65 20 76 61 6c 75 65 20 2a 7d 0a 0a ocale value *}..
15b0: 20 20 20 20 74 65 73 74 20 6d 73 67 63 61 74 2d test msgcat-
15c0: 31 2e 31 34 20 7b 6d 63 70 72 65 66 65 72 65 6e 1.14 {mcpreferen
15d0: 63 65 73 2c 20 63 75 73 74 6f 6d 20 6c 6f 63 61 ces, custom loca
15e0: 6c 65 20 70 72 65 66 65 72 65 6e 63 65 73 7d 20 le preferences}
15f0: 2d 73 65 74 75 70 20 7b 0a 09 76 61 72 69 61 62 -setup {..variab
1600: 6c 65 20 6c 6f 63 61 6c 65 20 5b 6d 63 6c 6f 63 le locale [mcloc
1610: 61 6c 65 5d 0a 09 6d 63 6c 6f 63 61 6c 65 20 65 ale]..mclocale e
1620: 6e 0a 09 6d 63 70 72 65 66 65 72 65 6e 63 65 73 n..mcpreferences
1630: 20 66 72 20 65 6e 20 7b 7d 0a 20 20 20 20 7d 20 fr en {}. }
1640: 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 6d 63 6c 6f -cleanup {..mclo
1650: 63 61 6c 65 20 24 6c 6f 63 61 6c 65 0a 20 20 20 cale $locale.
1660: 20 7d 20 2d 62 6f 64 79 20 7b 0a 09 6d 63 70 72 } -body {..mcpr
1670: 65 66 65 72 65 6e 63 65 73 0a 20 20 20 20 7d 20 eferences. }
1680: 2d 72 65 73 75 6c 74 20 7b 66 72 20 65 6e 20 7b -result {fr en {
1690: 7d 7d 0a 0a 20 20 20 20 74 65 73 74 20 6d 73 67 }}.. test msg
16a0: 63 61 74 2d 31 2e 31 35 20 7b 6d 63 70 72 65 66 cat-1.15 {mcpref
16b0: 65 72 65 6e 63 65 73 2c 20 6f 76 65 72 77 72 69 erences, overwri
16c0: 74 65 20 63 75 73 74 6f 6d 20 6c 6f 63 61 6c 65 te custom locale
16d0: 20 70 72 65 66 65 72 65 6e 63 65 73 7d 5c 0a 20 preferences}\.
16e0: 20 20 20 2d 73 65 74 75 70 20 7b 0a 09 76 61 72 -setup {..var
16f0: 69 61 62 6c 65 20 6c 6f 63 61 6c 65 20 5b 6d 63 iable locale [mc
1700: 6c 6f 63 61 6c 65 5d 0a 09 6d 63 70 72 65 66 65 locale]..mcprefe
1710: 72 65 6e 63 65 73 20 66 72 20 65 6e 20 7b 7d 0a rences fr en {}.
1720: 09 6d 63 6c 6f 63 61 6c 65 20 65 6e 0a 20 20 20 .mclocale en.
1730: 20 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 6d } -cleanup {..m
1740: 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 6c 65 0a clocale $locale.
1750: 20 20 20 20 7d 20 2d 62 6f 64 79 20 7b 0a 09 6d } -body {..m
1760: 63 70 72 65 66 65 72 65 6e 63 65 73 0a 20 20 20 cpreferences.
1770: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 65 6e 20 7b } -result {en {
1780: 7d 7d 0a 0a 0a 20 20 20 20 23 20 54 65 73 74 73 }}... # Tests
1790: 20 6d 73 67 63 61 74 2d 32 2e 2a 3a 20 5b 6d 63 msgcat-2.*: [mc
17a0: 73 65 74 5d 2c 20 5b 6d 63 6d 73 65 74 5d 2c 20 set], [mcmset],
17b0: 6e 61 6d 65 73 70 61 63 65 20 70 61 72 74 69 74 namespace partit
17c0: 69 6f 6e 69 6e 67 0a 0a 20 20 20 20 74 65 73 74 ioning.. test
17d0: 20 6d 73 67 63 61 74 2d 32 2e 31 20 7b 6d 63 73 msgcat-2.1 {mcs
17e0: 65 74 2c 20 67 6c 6f 62 61 6c 20 73 63 6f 70 65 et, global scope
17f0: 7d 20 7b 0a 09 6e 61 6d 65 73 70 61 63 65 20 65 } {..namespace e
1800: 76 61 6c 20 3a 3a 20 3a 3a 6d 73 67 63 61 74 3a val :: ::msgcat:
1810: 3a 6d 63 73 65 74 20 20 66 6f 6f 5f 42 41 52 20 :mcset foo_BAR
1820: 74 65 78 74 31 20 74 65 78 74 32 0a 20 20 20 20 text1 text2.
1830: 7d 20 7b 74 65 78 74 32 7d 0a 0a 20 20 20 20 74 } {text2}.. t
1840: 65 73 74 20 6d 73 67 63 61 74 2d 32 2e 32 20 7b est msgcat-2.2 {
1850: 6d 63 73 65 74 2c 20 67 6c 6f 62 61 6c 20 73 63 mcset, global sc
1860: 6f 70 65 2c 20 64 65 66 61 75 6c 74 7d 20 7b 0a ope, default} {.
1870: 09 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 .namespace eval
1880: 3a 3a 20 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 73 :: ::msgcat::mcs
1890: 65 74 20 66 6f 6f 5f 42 41 52 20 74 65 78 74 33 et foo_BAR text3
18a0: 0a 20 20 20 20 7d 20 7b 74 65 78 74 33 7d 0a 0a . } {text3}..
18b0: 20 20 20 20 74 65 73 74 20 6d 73 67 63 61 74 2d test msgcat-
18c0: 32 2e 32 2e 31 20 7b 6d 63 73 65 74 2c 20 6e 61 2.2.1 {mcset, na
18d0: 6d 65 73 70 61 63 65 20 6f 76 65 72 6c 61 70 7d mespace overlap}
18e0: 20 7b 0a 09 6e 61 6d 65 73 70 61 63 65 20 65 76 {..namespace ev
18f0: 61 6c 20 62 61 7a 20 7b 3a 3a 6d 73 67 63 61 74 al baz {::msgcat
1900: 3a 3a 6d 63 73 65 74 20 20 66 6f 6f 5f 42 41 52 ::mcset foo_BAR
1910: 20 63 6f 6e 31 20 63 6f 6e 31 62 61 7a 7d 0a 20 con1 con1baz}.
1920: 20 20 20 7d 20 7b 63 6f 6e 31 62 61 7a 7d 0a 0a } {con1baz}..
1930: 20 20 20 20 74 65 73 74 20 6d 73 67 63 61 74 2d test msgcat-
1940: 32 2e 33 20 7b 6d 63 73 65 74 2c 20 6e 61 6d 65 2.3 {mcset, name
1950: 73 70 61 63 65 20 6f 76 65 72 6c 61 70 7d 20 2d space overlap} -
1960: 73 65 74 75 70 20 7b 0a 09 6e 61 6d 65 73 70 61 setup {..namespa
1970: 63 65 20 65 76 61 6c 20 62 61 72 20 7b 3a 3a 6d ce eval bar {::m
1980: 73 67 63 61 74 3a 3a 6d 63 73 65 74 20 20 66 6f sgcat::mcset fo
1990: 6f 5f 42 41 52 20 63 6f 6e 31 20 63 6f 6e 31 62 o_BAR con1 con1b
19a0: 61 72 7d 0a 09 6e 61 6d 65 73 70 61 63 65 20 65 ar}..namespace e
19b0: 76 61 6c 20 62 61 7a 20 7b 3a 3a 6d 73 67 63 61 val baz {::msgca
19c0: 74 3a 3a 6d 63 73 65 74 20 20 66 6f 6f 5f 42 41 t::mcset foo_BA
19d0: 52 20 63 6f 6e 31 20 63 6f 6e 31 62 61 7a 7d 0a R con1 con1baz}.
19e0: 09 76 61 72 69 61 62 6c 65 20 6c 6f 63 61 6c 65 .variable locale
19f0: 20 5b 6d 63 6c 6f 63 61 6c 65 5d 0a 09 6d 63 6c [mclocale]..mcl
1a00: 6f 63 61 6c 65 20 66 6f 6f 5f 42 41 52 0a 20 20 ocale foo_BAR.
1a10: 20 20 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 } -cleanup {..
1a20: 6d 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 6c 65 mclocale $locale
1a30: 0a 20 20 20 20 7d 20 2d 62 6f 64 79 20 7b 0a 09 . } -body {..
1a40: 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 62 namespace eval b
1a50: 61 72 20 7b 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 ar {::msgcat::mc
1a60: 20 63 6f 6e 31 7d 0a 20 20 20 20 7d 20 2d 72 65 con1}. } -re
1a70: 73 75 6c 74 20 63 6f 6e 31 62 61 72 0a 0a 20 20 sult con1bar..
1a80: 20 20 74 65 73 74 20 6d 73 67 63 61 74 2d 32 2e test msgcat-2.
1a90: 34 20 7b 6d 63 73 65 74 2c 20 6e 61 6d 65 73 70 4 {mcset, namesp
1aa0: 61 63 65 20 6f 76 65 72 6c 61 70 7d 20 2d 73 65 ace overlap} -se
1ab0: 74 75 70 20 7b 0a 09 6e 61 6d 65 73 70 61 63 65 tup {..namespace
1ac0: 20 65 76 61 6c 20 62 61 72 20 7b 3a 3a 6d 73 67 eval bar {::msg
1ad0: 63 61 74 3a 3a 6d 63 73 65 74 20 20 66 6f 6f 5f cat::mcset foo_
1ae0: 42 41 52 20 63 6f 6e 31 20 63 6f 6e 31 62 61 72 BAR con1 con1bar
1af0: 7d 0a 09 6e 61 6d 65 73 70 61 63 65 20 65 76 61 }..namespace eva
1b00: 6c 20 62 61 7a 20 7b 3a 3a 6d 73 67 63 61 74 3a l baz {::msgcat:
1b10: 3a 6d 63 73 65 74 20 20 66 6f 6f 5f 42 41 52 20 :mcset foo_BAR
1b20: 63 6f 6e 31 20 63 6f 6e 31 62 61 7a 7d 0a 09 76 con1 con1baz}..v
1b30: 61 72 69 61 62 6c 65 20 6c 6f 63 61 6c 65 20 5b ariable locale [
1b40: 6d 63 6c 6f 63 61 6c 65 5d 0a 09 6d 63 6c 6f 63 mclocale]..mcloc
1b50: 61 6c 65 20 66 6f 6f 5f 42 41 52 0a 20 20 20 20 ale foo_BAR.
1b60: 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 6d 63 } -cleanup {..mc
1b70: 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 6c 65 0a 20 locale $locale.
1b80: 20 20 20 7d 20 2d 62 6f 64 79 20 7b 0a 09 6e 61 } -body {..na
1b90: 6d 65 73 70 61 63 65 20 65 76 61 6c 20 62 61 7a mespace eval baz
1ba0: 20 7b 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 20 63 {::msgcat::mc c
1bb0: 6f 6e 31 7d 0a 20 20 20 20 7d 20 2d 72 65 73 75 on1}. } -resu
1bc0: 6c 74 20 63 6f 6e 31 62 61 7a 0a 0a 20 20 20 20 lt con1baz..
1bd0: 74 65 73 74 20 6d 73 67 63 61 74 2d 32 2e 35 20 test msgcat-2.5
1be0: 7b 6d 63 6d 73 65 74 2c 20 67 6c 6f 62 61 6c 20 {mcmset, global
1bf0: 73 63 6f 70 65 7d 20 2d 73 65 74 75 70 20 7b 0a scope} -setup {.
1c00: 09 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 .namespace eval
1c10: 3a 3a 20 7b 0a 09 20 20 20 20 3a 3a 6d 73 67 63 :: {.. ::msgc
1c20: 61 74 3a 3a 6d 63 6d 73 65 74 20 20 66 6f 6f 5f at::mcmset foo_
1c30: 42 41 52 20 7b 0a 09 09 73 72 63 31 20 74 72 61 BAR {...src1 tra
1c40: 6e 73 31 0a 09 09 73 72 63 32 20 74 72 61 6e 73 ns1...src2 trans
1c50: 32 0a 09 20 20 20 20 7d 0a 09 7d 0a 09 76 61 72 2.. }..}..var
1c60: 69 61 62 6c 65 20 6c 6f 63 61 6c 65 20 5b 6d 63 iable locale [mc
1c70: 6c 6f 63 61 6c 65 5d 0a 09 6d 63 6c 6f 63 61 6c locale]..mclocal
1c80: 65 20 66 6f 6f 5f 42 41 52 0a 20 20 20 20 7d 20 e foo_BAR. }
1c90: 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 6d 63 6c 6f -cleanup {..mclo
1ca0: 63 61 6c 65 20 24 6c 6f 63 61 6c 65 0a 20 20 20 cale $locale.
1cb0: 20 7d 20 2d 62 6f 64 79 20 7b 0a 09 6e 61 6d 65 } -body {..name
1cc0: 73 70 61 63 65 20 65 76 61 6c 20 3a 3a 20 7b 0a space eval :: {.
1cd0: 09 20 20 20 20 3a 3a 6d 73 67 63 61 74 3a 3a 6d . ::msgcat::m
1ce0: 63 20 73 72 63 31 0a 09 7d 0a 20 20 20 20 7d 20 c src1..}. }
1cf0: 2d 72 65 73 75 6c 74 20 74 72 61 6e 73 31 0a 0a -result trans1..
1d00: 20 20 20 20 74 65 73 74 20 6d 73 67 63 61 74 2d test msgcat-
1d10: 32 2e 36 20 7b 6d 63 6d 73 65 74 2c 20 6e 61 6d 2.6 {mcmset, nam
1d20: 65 73 70 61 63 65 20 6f 76 65 72 6c 61 70 7d 20 espace overlap}
1d30: 2d 73 65 74 75 70 20 7b 0a 09 6e 61 6d 65 73 70 -setup {..namesp
1d40: 61 63 65 20 65 76 61 6c 20 62 61 72 20 7b 3a 3a ace eval bar {::
1d50: 6d 73 67 63 61 74 3a 3a 6d 63 6d 73 65 74 20 20 msgcat::mcmset
1d60: 66 6f 6f 5f 42 41 52 20 7b 63 6f 6e 32 20 63 6f foo_BAR {con2 co
1d70: 6e 32 62 61 72 7d 7d 0a 09 6e 61 6d 65 73 70 61 n2bar}}..namespa
1d80: 63 65 20 65 76 61 6c 20 62 61 7a 20 7b 3a 3a 6d ce eval baz {::m
1d90: 73 67 63 61 74 3a 3a 6d 63 6d 73 65 74 20 20 66 sgcat::mcmset f
1da0: 6f 6f 5f 42 41 52 20 7b 63 6f 6e 32 20 63 6f 6e oo_BAR {con2 con
1db0: 32 62 61 7a 7d 7d 0a 09 76 61 72 69 61 62 6c 65 2baz}}..variable
1dc0: 20 6c 6f 63 61 6c 65 20 5b 6d 63 6c 6f 63 61 6c locale [mclocal
1dd0: 65 5d 0a 09 6d 63 6c 6f 63 61 6c 65 20 66 6f 6f e]..mclocale foo
1de0: 5f 42 41 52 0a 20 20 20 20 7d 20 2d 63 6c 65 61 _BAR. } -clea
1df0: 6e 75 70 20 7b 0a 09 6d 63 6c 6f 63 61 6c 65 20 nup {..mclocale
1e00: 24 6c 6f 63 61 6c 65 0a 20 20 20 20 7d 20 2d 62 $locale. } -b
1e10: 6f 64 79 20 7b 0a 09 6e 61 6d 65 73 70 61 63 65 ody {..namespace
1e20: 20 65 76 61 6c 20 62 61 72 20 7b 3a 3a 6d 73 67 eval bar {::msg
1e30: 63 61 74 3a 3a 6d 63 20 63 6f 6e 32 7d 0a 20 20 cat::mc con2}.
1e40: 20 20 7d 20 2d 72 65 73 75 6c 74 20 63 6f 6e 32 } -result con2
1e50: 62 61 72 0a 0a 20 20 20 20 74 65 73 74 20 6d 73 bar.. test ms
1e60: 67 63 61 74 2d 32 2e 37 20 7b 6d 63 6d 73 65 74 gcat-2.7 {mcmset
1e70: 2c 20 6e 61 6d 65 73 70 61 63 65 20 6f 76 65 72 , namespace over
1e80: 6c 61 70 7d 20 2d 73 65 74 75 70 20 7b 0a 09 6e lap} -setup {..n
1e90: 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 62 61 amespace eval ba
1ea0: 72 20 7b 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 6d r {::msgcat::mcm
1eb0: 73 65 74 20 20 66 6f 6f 5f 42 41 52 20 7b 63 6f set foo_BAR {co
1ec0: 6e 32 20 63 6f 6e 32 62 61 72 7d 7d 0a 09 6e 61 n2 con2bar}}..na
1ed0: 6d 65 73 70 61 63 65 20 65 76 61 6c 20 62 61 7a mespace eval baz
1ee0: 20 7b 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 6d 73 {::msgcat::mcms
1ef0: 65 74 20 20 66 6f 6f 5f 42 41 52 20 7b 63 6f 6e et foo_BAR {con
1f00: 32 20 63 6f 6e 32 62 61 7a 7d 7d 0a 09 76 61 72 2 con2baz}}..var
1f10: 69 61 62 6c 65 20 6c 6f 63 61 6c 65 20 5b 6d 63 iable locale [mc
1f20: 6c 6f 63 61 6c 65 5d 0a 09 6d 63 6c 6f 63 61 6c locale]..mclocal
1f30: 65 20 66 6f 6f 5f 42 41 52 0a 20 20 20 20 7d 20 e foo_BAR. }
1f40: 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 6d 63 6c 6f -cleanup {..mclo
1f50: 63 61 6c 65 20 24 6c 6f 63 61 6c 65 0a 20 20 20 cale $locale.
1f60: 20 7d 20 2d 62 6f 64 79 20 7b 0a 09 6e 61 6d 65 } -body {..name
1f70: 73 70 61 63 65 20 65 76 61 6c 20 62 61 7a 20 7b space eval baz {
1f80: 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 20 63 6f 6e ::msgcat::mc con
1f90: 32 7d 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 2}. } -result
1fa0: 20 63 6f 6e 32 62 61 7a 0a 0a 20 20 20 20 23 20 con2baz.. #
1fb0: 54 65 73 74 73 20 6d 73 67 63 61 74 2d 33 2e 2a Tests msgcat-3.*
1fc0: 3a 20 5b 6d 63 73 65 74 5d 2c 20 5b 6d 63 5d 2c : [mcset], [mc],
1fd0: 20 63 61 74 61 6c 6f 67 20 22 69 6e 68 65 72 69 catalog "inheri
1fe0: 74 61 6e 63 65 22 0a 20 20 20 20 23 0a 20 20 20 tance". #.
1ff0: 20 23 20 54 65 73 74 20 6d 63 73 65 74 20 61 6e # Test mcset an
2000: 64 20 6d 63 2c 20 65 6e 73 75 72 69 6e 67 20 74 d mc, ensuring t
2010: 68 61 74 20 6d 6f 72 65 20 73 70 65 63 69 66 69 hat more specifi
2020: 63 20 6c 6f 63 61 6c 65 73 0a 20 20 20 20 23 20 c locales. #
2030: 28 65 2e 67 2e 20 65 6e 5f 55 4b 29 20 77 69 6c (e.g. en_UK) wil
2040: 6c 20 73 65 61 72 63 68 20 6c 65 73 73 20 73 70 l search less sp
2050: 65 63 69 66 69 63 20 6c 6f 63 61 6c 65 73 0a 20 ecific locales.
2060: 20 20 20 23 20 28 65 2e 67 2e 20 65 6e 29 20 66 # (e.g. en) f
2070: 6f 72 20 74 72 61 6e 73 6c 61 74 69 6f 6e 20 73 or translation s
2080: 74 72 69 6e 67 73 2e 0a 20 20 20 20 23 0a 20 20 trings.. #.
2090: 20 20 23 20 44 6f 20 74 68 69 73 20 66 6f 72 20 # Do this for
20a0: 74 68 65 20 31 35 20 70 65 72 6d 75 74 61 74 69 the 15 permutati
20b0: 6f 6e 73 20 6f 66 0a 20 20 20 20 23 20 20 20 20 ons of. #
20c0: 20 6c 6f 63 61 6c 65 73 3a 20 7b 66 6f 6f 20 66 locales: {foo f
20d0: 6f 6f 5f 42 41 52 20 66 6f 6f 5f 42 41 52 5f 62 oo_BAR foo_BAR_b
20e0: 61 7a 7d 0a 20 20 20 20 23 20 20 20 20 20 73 74 az}. # st
20f0: 72 69 6e 67 73 3a 20 7b 6f 76 30 20 6f 76 31 20 rings: {ov0 ov1
2100: 6f 76 32 20 6f 76 33 20 6f 76 34 7d 0a 20 20 20 ov2 ov3 ov4}.
2110: 20 23 09 20 20 6c 6f 63 61 6c 65 20 52 4f 4f 54 #. locale ROOT
2120: 20 20 20 20 20 20 20 20 64 65 66 69 6e 65 73 20 defines
2130: 6f 76 30 2c 20 6f 76 31 2c 20 6f 76 32 2c 20 6f ov0, ov1, ov2, o
2140: 76 33 0a 20 20 20 20 23 20 20 20 20 20 6c 6f 63 v3. # loc
2150: 61 6c 65 20 66 6f 6f 20 20 20 20 20 20 20 20 20 ale foo
2160: 64 65 66 69 6e 65 73 20 20 20 20 20 20 6f 76 31 defines ov1
2170: 2c 20 6f 76 32 2c 20 6f 76 33 0a 20 20 20 20 23 , ov2, ov3. #
2180: 20 20 20 20 20 6c 6f 63 61 6c 65 20 66 6f 6f 5f locale foo_
2190: 42 41 52 20 20 20 20 20 64 65 66 69 6e 65 73 20 BAR defines
21a0: 20 20 20 20 20 20 20 20 20 20 6f 76 32 2c 20 6f ov2, o
21b0: 76 33 0a 20 20 20 20 23 20 20 20 20 20 6c 6f 63 v3. # loc
21c0: 61 6c 65 20 66 6f 6f 5f 42 41 52 5f 42 41 5a 20 ale foo_BAR_BAZ
21d0: 64 65 66 69 6e 65 73 20 20 20 20 20 20 20 20 20 defines
21e0: 20 20 20 20 20 20 20 6f 76 33 0a 20 20 20 20 23 ov3. #
21f0: 20 20 20 20 20 28 6f 76 34 20 69 73 20 64 65 66 (ov4 is def
2200: 69 6e 65 64 20 69 6e 20 6e 6f 6e 65 29 0a 20 20 ined in none).
2210: 20 20 23 20 53 6f 2c 0a 20 20 20 20 23 20 20 20 # So,. #
2220: 20 20 6f 76 33 20 73 68 6f 75 6c 64 20 62 65 20 ov3 should be
2230: 72 65 73 6f 6c 76 65 64 20 69 6e 20 66 6f 6f 2c resolved in foo,
2240: 20 66 6f 6f 5f 42 41 52 2c 20 66 6f 6f 5f 42 41 foo_BAR, foo_BA
2250: 52 5f 62 61 7a 0a 20 20 20 20 23 20 20 20 20 20 R_baz. #
2260: 6f 76 32 20 73 68 6f 75 6c 64 20 62 65 20 72 65 ov2 should be re
2270: 73 6f 6c 76 65 64 20 69 6e 20 66 6f 6f 2c 20 66 solved in foo, f
2280: 6f 6f 5f 42 41 52 0a 20 20 20 20 23 20 20 20 20 oo_BAR. #
2290: 20 6f 76 32 20 73 68 6f 75 6c 64 20 72 65 73 6f ov2 should reso
22a0: 6c 76 65 20 74 6f 20 66 6f 6f 5f 42 41 52 20 69 lve to foo_BAR i
22b0: 6e 20 66 6f 6f 5f 42 41 52 5f 62 61 7a 0a 20 20 n foo_BAR_baz.
22c0: 20 20 23 20 20 20 20 20 6f 76 31 20 73 68 6f 75 # ov1 shou
22d0: 6c 64 20 62 65 20 72 65 73 6f 6c 76 65 64 20 69 ld be resolved i
22e0: 6e 20 66 6f 6f 0a 20 20 20 20 23 20 20 20 20 20 n foo. #
22f0: 6f 76 31 20 73 68 6f 75 6c 64 20 72 65 73 6f 6c ov1 should resol
2300: 76 65 20 74 6f 20 66 6f 6f 20 69 6e 20 66 6f 6f ve to foo in foo
2310: 5f 42 41 52 2c 20 66 6f 6f 5f 42 41 52 5f 62 61 _BAR, foo_BAR_ba
2320: 7a 0a 20 20 20 20 23 20 20 20 20 20 6f 76 34 20 z. # ov4
2330: 73 68 6f 75 6c 64 20 62 65 20 72 65 73 6f 6c 76 should be resolv
2340: 65 64 20 69 6e 20 6e 6f 6e 65 2c 20 61 6e 64 20 ed in none, and
2350: 63 61 6c 6c 20 6d 63 75 6e 6b 6e 6f 77 6e 0a 20 call mcunknown.
2360: 20 20 20 23 0a 20 20 20 20 76 61 72 69 61 62 6c #. variabl
2370: 65 20 63 6f 75 6e 74 20 32 0a 20 20 20 20 76 61 e count 2. va
2380: 72 69 61 62 6c 65 20 72 65 73 75 6c 74 0a 20 20 riable result.
2390: 20 20 61 72 72 61 79 20 73 65 74 20 72 65 73 75 array set resu
23a0: 6c 74 20 7b 0a 09 66 6f 6f 2c 6f 76 30 20 6f 76 lt {..foo,ov0 ov
23b0: 30 5f 52 4f 4f 54 20 66 6f 6f 2c 6f 76 31 20 6f 0_ROOT foo,ov1 o
23c0: 76 31 5f 66 6f 6f 20 66 6f 6f 2c 6f 76 32 20 6f v1_foo foo,ov2 o
23d0: 76 32 5f 66 6f 6f 0a 09 66 6f 6f 2c 6f 76 33 20 v2_foo..foo,ov3
23e0: 6f 76 33 5f 66 6f 6f 20 66 6f 6f 2c 6f 76 34 20 ov3_foo foo,ov4
23f0: 6f 76 34 0a 09 66 6f 6f 5f 42 41 52 2c 6f 76 30 ov4..foo_BAR,ov0
2400: 20 6f 76 30 5f 52 4f 4f 54 20 66 6f 6f 5f 42 41 ov0_ROOT foo_BA
2410: 52 2c 6f 76 31 20 6f 76 31 5f 66 6f 6f 20 66 6f R,ov1 ov1_foo fo
2420: 6f 5f 42 41 52 2c 6f 76 32 20 6f 76 32 5f 66 6f o_BAR,ov2 ov2_fo
2430: 6f 5f 42 41 52 0a 09 66 6f 6f 5f 42 41 52 2c 6f o_BAR..foo_BAR,o
2440: 76 33 20 6f 76 33 5f 66 6f 6f 5f 42 41 52 09 66 v3 ov3_foo_BAR.f
2450: 6f 6f 5f 42 41 52 2c 6f 76 34 20 6f 76 34 0a 09 oo_BAR,ov4 ov4..
2460: 66 6f 6f 5f 42 41 52 5f 62 61 7a 2c 6f 76 30 20 foo_BAR_baz,ov0
2470: 6f 76 30 5f 52 4f 4f 54 20 66 6f 6f 5f 42 41 52 ov0_ROOT foo_BAR
2480: 5f 62 61 7a 2c 6f 76 31 20 6f 76 31 5f 66 6f 6f _baz,ov1 ov1_foo
2490: 0a 09 66 6f 6f 5f 42 41 52 5f 62 61 7a 2c 6f 76 ..foo_BAR_baz,ov
24a0: 32 20 6f 76 32 5f 66 6f 6f 5f 42 41 52 0a 09 66 2 ov2_foo_BAR..f
24b0: 6f 6f 5f 42 41 52 5f 62 61 7a 2c 6f 76 33 20 6f oo_BAR_baz,ov3 o
24c0: 76 33 5f 66 6f 6f 5f 42 41 52 5f 62 61 7a 20 66 v3_foo_BAR_baz f
24d0: 6f 6f 5f 42 41 52 5f 62 61 7a 2c 6f 76 34 20 6f oo_BAR_baz,ov4 o
24e0: 76 34 0a 20 20 20 20 7d 0a 20 20 20 20 76 61 72 v4. }. var
24f0: 69 61 62 6c 65 20 6c 6f 63 0a 20 20 20 20 76 61 iable loc. va
2500: 72 69 61 62 6c 65 20 73 74 72 69 6e 67 0a 20 20 riable string.
2510: 20 20 66 6f 72 65 61 63 68 20 6c 6f 63 20 7b 66 foreach loc {f
2520: 6f 6f 20 66 6f 6f 5f 42 41 52 20 66 6f 6f 5f 42 oo foo_BAR foo_B
2530: 41 52 5f 62 61 7a 7d 20 7b 0a 09 66 6f 72 65 61 AR_baz} {..forea
2540: 63 68 20 73 74 72 69 6e 67 20 7b 6f 76 30 20 6f ch string {ov0 o
2550: 76 31 20 6f 76 32 20 6f 76 33 20 6f 76 34 7d 20 v1 ov2 ov3 ov4}
2560: 7b 0a 09 20 20 20 20 74 65 73 74 20 6d 73 67 63 {.. test msgc
2570: 61 74 2d 33 2e 24 63 6f 75 6e 74 20 7b 6d 63 73 at-3.$count {mcs
2580: 65 74 2c 20 6f 76 65 72 6c 61 70 7d 20 2d 73 65 et, overlap} -se
2590: 74 75 70 20 7b 0a 09 09 6d 63 73 65 74 20 7b 7d tup {...mcset {}
25a0: 20 6f 76 30 20 6f 76 30 5f 52 4f 4f 54 0a 09 09 ov0 ov0_ROOT...
25b0: 6d 63 73 65 74 20 7b 7d 20 6f 76 31 20 6f 76 31 mcset {} ov1 ov1
25c0: 5f 52 4f 4f 54 0a 09 09 6d 63 73 65 74 20 7b 7d _ROOT...mcset {}
25d0: 20 6f 76 32 20 6f 76 32 5f 52 4f 4f 54 0a 09 09 ov2 ov2_ROOT...
25e0: 6d 63 73 65 74 20 7b 7d 20 6f 76 33 20 6f 76 33 mcset {} ov3 ov3
25f0: 5f 52 4f 4f 54 0a 09 09 6d 63 73 65 74 20 66 6f _ROOT...mcset fo
2600: 6f 20 6f 76 31 20 6f 76 31 5f 66 6f 6f 0a 09 09 o ov1 ov1_foo...
2610: 6d 63 73 65 74 20 66 6f 6f 20 6f 76 32 20 6f 76 mcset foo ov2 ov
2620: 32 5f 66 6f 6f 0a 09 09 6d 63 73 65 74 20 66 6f 2_foo...mcset fo
2630: 6f 20 6f 76 33 20 6f 76 33 5f 66 6f 6f 0a 09 09 o ov3 ov3_foo...
2640: 6d 63 73 65 74 20 66 6f 6f 5f 42 41 52 20 6f 76 mcset foo_BAR ov
2650: 32 20 6f 76 32 5f 66 6f 6f 5f 42 41 52 0a 09 09 2 ov2_foo_BAR...
2660: 6d 63 73 65 74 20 66 6f 6f 5f 42 41 52 20 6f 76 mcset foo_BAR ov
2670: 33 20 6f 76 33 5f 66 6f 6f 5f 42 41 52 0a 09 09 3 ov3_foo_BAR...
2680: 6d 63 73 65 74 20 66 6f 6f 5f 42 41 52 5f 62 61 mcset foo_BAR_ba
2690: 7a 20 6f 76 33 20 6f 76 33 5f 66 6f 6f 5f 42 41 z ov3 ov3_foo_BA
26a0: 52 5f 62 61 7a 0a 09 09 76 61 72 69 61 62 6c 65 R_baz...variable
26b0: 20 6c 6f 63 61 6c 65 20 5b 6d 63 6c 6f 63 61 6c locale [mclocal
26c0: 65 5d 0a 09 09 6d 63 6c 6f 63 61 6c 65 20 24 6c e]...mclocale $l
26d0: 6f 63 0a 09 20 20 20 20 7d 20 2d 63 6c 65 61 6e oc.. } -clean
26e0: 75 70 20 7b 0a 09 09 6d 63 6c 6f 63 61 6c 65 20 up {...mclocale
26f0: 24 6c 6f 63 61 6c 65 0a 09 20 20 20 20 7d 20 2d $locale.. } -
2700: 62 6f 64 79 20 7b 0a 09 09 6d 63 20 24 73 74 72 body {...mc $str
2710: 69 6e 67 0a 09 20 20 20 20 7d 20 2d 72 65 73 75 ing.. } -resu
2720: 6c 74 20 24 72 65 73 75 6c 74 28 24 6c 6f 63 2c lt $result($loc,
2730: 24 73 74 72 69 6e 67 29 0a 09 20 20 20 20 69 6e $string).. in
2740: 63 72 20 63 6f 75 6e 74 0a 09 7d 0a 20 20 20 20 cr count..}.
2750: 7d 0a 20 20 20 20 75 6e 73 65 74 20 2d 6e 6f 63 }. unset -noc
2760: 6f 6d 70 6c 61 69 6e 20 72 65 73 75 6c 74 0a 0a omplain result..
2770: 20 20 20 20 23 20 54 65 73 74 73 20 6d 73 67 63 # Tests msgc
2780: 61 74 2d 34 2e 2a 3a 20 5b 6d 63 75 6e 6b 6e 6f at-4.*: [mcunkno
2790: 77 6e 5d 0a 0a 20 20 20 20 74 65 73 74 20 6d 73 wn].. test ms
27a0: 67 63 61 74 2d 34 2e 32 20 7b 6d 63 75 6e 6b 6e gcat-4.2 {mcunkn
27b0: 6f 77 6e 2c 20 64 65 66 61 75 6c 74 7d 20 2d 73 own, default} -s
27c0: 65 74 75 70 20 7b 0a 09 6d 63 73 65 74 20 66 6f etup {..mcset fo
27d0: 6f 20 75 6e 6b 31 20 22 75 6e 6b 6e 6f 77 6e 20 o unk1 "unknown
27e0: 31 22 0a 09 76 61 72 69 61 62 6c 65 20 6c 6f 63 1"..variable loc
27f0: 61 6c 65 20 5b 6d 63 6c 6f 63 61 6c 65 5d 0a 09 ale [mclocale]..
2800: 6d 63 6c 6f 63 61 6c 65 20 66 6f 6f 0a 20 20 20 mclocale foo.
2810: 20 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 6d } -cleanup {..m
2820: 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 6c 65 0a clocale $locale.
2830: 20 20 20 20 7d 20 2d 62 6f 64 79 20 7b 0a 09 6d } -body {..m
2840: 63 20 75 6e 6b 31 0a 20 20 20 20 7d 20 2d 72 65 c unk1. } -re
2850: 73 75 6c 74 20 7b 75 6e 6b 6e 6f 77 6e 20 31 7d sult {unknown 1}
2860: 0a 0a 20 20 20 20 74 65 73 74 20 6d 73 67 63 61 .. test msgca
2870: 74 2d 34 2e 33 20 7b 6d 63 75 6e 6b 6e 6f 77 6e t-4.3 {mcunknown
2880: 2c 20 64 65 66 61 75 6c 74 7d 20 2d 73 65 74 75 , default} -setu
2890: 70 20 7b 0a 09 6d 63 73 65 74 20 66 6f 6f 20 75 p {..mcset foo u
28a0: 6e 6b 31 20 22 75 6e 6b 6e 6f 77 6e 20 31 22 0a nk1 "unknown 1".
28b0: 09 76 61 72 69 61 62 6c 65 20 6c 6f 63 61 6c 65 .variable locale
28c0: 20 5b 6d 63 6c 6f 63 61 6c 65 5d 0a 09 6d 63 6c [mclocale]..mcl
28d0: 6f 63 61 6c 65 20 66 6f 6f 0a 20 20 20 20 7d 20 ocale foo. }
28e0: 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 6d 63 6c 6f -cleanup {..mclo
28f0: 63 61 6c 65 20 24 6c 6f 63 61 6c 65 0a 20 20 20 cale $locale.
2900: 20 7d 20 2d 62 6f 64 79 20 7b 0a 09 6d 63 20 75 } -body {..mc u
2910: 6e 6b 32 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c nk2. } -resul
2920: 74 20 75 6e 6b 32 0a 0a 20 20 20 20 74 65 73 74 t unk2.. test
2930: 20 6d 73 67 63 61 74 2d 34 2e 34 20 7b 6d 63 75 msgcat-4.4 {mcu
2940: 6e 6b 6e 6f 77 6e 2c 20 6f 76 65 72 72 69 64 64 nknown, overridd
2950: 65 6e 7d 20 2d 73 65 74 75 70 20 7b 0a 09 72 65 en} -setup {..re
2960: 6e 61 6d 65 20 3a 3a 6d 73 67 63 61 74 3a 3a 6d name ::msgcat::m
2970: 63 75 6e 6b 6e 6f 77 6e 20 53 61 76 65 64 4d 63 cunknown SavedMc
2980: 75 6e 6b 6e 6f 77 6e 0a 09 70 72 6f 63 20 3a 3a unknown..proc ::
2990: 6d 73 67 63 61 74 3a 3a 6d 63 75 6e 6b 6e 6f 77 msgcat::mcunknow
29a0: 6e 20 7b 64 6f 6d 20 73 7d 20 7b 0a 09 20 20 20 n {dom s} {..
29b0: 20 72 65 74 75 72 6e 20 75 6e 6b 6e 6f 77 6e 3a return unknown:
29c0: 24 64 6f 6d 3a 24 73 0a 09 7d 0a 09 6d 63 73 65 $dom:$s..}..mcse
29d0: 74 20 66 6f 6f 20 75 6e 6b 31 20 22 75 6e 6b 6e t foo unk1 "unkn
29e0: 6f 77 6e 20 31 22 0a 09 76 61 72 69 61 62 6c 65 own 1"..variable
29f0: 20 6c 6f 63 61 6c 65 20 5b 6d 63 6c 6f 63 61 6c locale [mclocal
2a00: 65 5d 0a 09 6d 63 6c 6f 63 61 6c 65 20 66 6f 6f e]..mclocale foo
2a10: 0a 20 20 20 20 7d 20 2d 63 6c 65 61 6e 75 70 20 . } -cleanup
2a20: 7b 0a 09 6d 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 {..mclocale $loc
2a30: 61 6c 65 0a 09 72 65 6e 61 6d 65 20 3a 3a 6d 73 ale..rename ::ms
2a40: 67 63 61 74 3a 3a 6d 63 75 6e 6b 6e 6f 77 6e 20 gcat::mcunknown
2a50: 7b 7d 0a 09 72 65 6e 61 6d 65 20 53 61 76 65 64 {}..rename Saved
2a60: 4d 63 75 6e 6b 6e 6f 77 6e 20 3a 3a 6d 73 67 63 Mcunknown ::msgc
2a70: 61 74 3a 3a 6d 63 75 6e 6b 6e 6f 77 6e 0a 20 20 at::mcunknown.
2a80: 20 20 7d 20 2d 62 6f 64 79 20 7b 0a 09 6d 63 20 } -body {..mc
2a90: 75 6e 6b 31 0a 20 20 20 20 7d 20 2d 72 65 73 75 unk1. } -resu
2aa0: 6c 74 20 7b 75 6e 6b 6e 6f 77 6e 20 31 7d 0a 0a lt {unknown 1}..
2ab0: 20 20 20 20 74 65 73 74 20 6d 73 67 63 61 74 2d test msgcat-
2ac0: 34 2e 35 20 7b 6d 63 75 6e 6b 6e 6f 77 6e 2c 20 4.5 {mcunknown,
2ad0: 6f 76 65 72 72 69 64 64 65 6e 7d 20 2d 73 65 74 overridden} -set
2ae0: 75 70 20 7b 0a 09 72 65 6e 61 6d 65 20 3a 3a 6d up {..rename ::m
2af0: 73 67 63 61 74 3a 3a 6d 63 75 6e 6b 6e 6f 77 6e sgcat::mcunknown
2b00: 20 53 61 76 65 64 4d 63 75 6e 6b 6e 6f 77 6e 0a SavedMcunknown.
2b10: 09 70 72 6f 63 20 3a 3a 6d 73 67 63 61 74 3a 3a .proc ::msgcat::
2b20: 6d 63 75 6e 6b 6e 6f 77 6e 20 7b 64 6f 6d 20 73 mcunknown {dom s
2b30: 7d 20 7b 0a 09 20 20 20 20 72 65 74 75 72 6e 20 } {.. return
2b40: 75 6e 6b 6e 6f 77 6e 3a 24 64 6f 6d 3a 24 73 0a unknown:$dom:$s.
2b50: 09 7d 0a 09 6d 63 73 65 74 20 66 6f 6f 20 75 6e .}..mcset foo un
2b60: 6b 31 20 22 75 6e 6b 6e 6f 77 6e 20 31 22 0a 09 k1 "unknown 1"..
2b70: 76 61 72 69 61 62 6c 65 20 6c 6f 63 61 6c 65 20 variable locale
2b80: 5b 6d 63 6c 6f 63 61 6c 65 5d 0a 09 6d 63 6c 6f [mclocale]..mclo
2b90: 63 61 6c 65 20 66 6f 6f 0a 20 20 20 20 7d 20 2d cale foo. } -
2ba0: 63 6c 65 61 6e 75 70 20 7b 0a 09 6d 63 6c 6f 63 cleanup {..mcloc
2bb0: 61 6c 65 20 24 6c 6f 63 61 6c 65 0a 09 72 65 6e ale $locale..ren
2bc0: 61 6d 65 20 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 ame ::msgcat::mc
2bd0: 75 6e 6b 6e 6f 77 6e 20 7b 7d 0a 09 72 65 6e 61 unknown {}..rena
2be0: 6d 65 20 53 61 76 65 64 4d 63 75 6e 6b 6e 6f 77 me SavedMcunknow
2bf0: 6e 20 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 75 6e n ::msgcat::mcun
2c00: 6b 6e 6f 77 6e 0a 20 20 20 20 7d 20 2d 62 6f 64 known. } -bod
2c10: 79 20 7b 0a 09 6d 63 20 75 6e 6b 32 0a 20 20 20 y {..mc unk2.
2c20: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 75 6e 6b 6e } -result {unkn
2c30: 6f 77 6e 3a 66 6f 6f 3a 75 6e 6b 32 7d 0a 0a 20 own:foo:unk2}..
2c40: 20 20 20 74 65 73 74 20 6d 73 67 63 61 74 2d 34 test msgcat-4
2c50: 2e 36 20 7b 6d 63 75 6e 6b 6e 6f 77 6e 2c 20 75 .6 {mcunknown, u
2c60: 70 6c 65 76 65 6c 20 63 6f 6e 74 65 78 74 7d 20 plevel context}
2c70: 2d 73 65 74 75 70 20 7b 0a 09 72 65 6e 61 6d 65 -setup {..rename
2c80: 20 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 75 6e 6b ::msgcat::mcunk
2c90: 6e 6f 77 6e 20 53 61 76 65 64 4d 63 75 6e 6b 6e nown SavedMcunkn
2ca0: 6f 77 6e 0a 09 70 72 6f 63 20 3a 3a 6d 73 67 63 own..proc ::msgc
2cb0: 61 74 3a 3a 6d 63 75 6e 6b 6e 6f 77 6e 20 7b 64 at::mcunknown {d
2cc0: 6f 6d 20 73 7d 20 7b 0a 09 20 20 20 20 72 65 74 om s} {.. ret
2cd0: 75 72 6e 20 22 75 6e 6b 6e 6f 77 6e 3a 24 64 6f urn "unknown:$do
2ce0: 6d 3a 24 73 3a 5b 65 78 70 72 20 7b 5b 69 6e 66 m:$s:[expr {[inf
2cf0: 6f 20 6c 65 76 65 6c 5d 20 2d 20 31 7d 5d 22 0a o level] - 1}]".
2d00: 09 7d 0a 09 6d 63 73 65 74 20 66 6f 6f 20 75 6e .}..mcset foo un
2d10: 6b 31 20 22 75 6e 6b 6e 6f 77 6e 20 31 22 0a 09 k1 "unknown 1"..
2d20: 76 61 72 69 61 62 6c 65 20 6c 6f 63 61 6c 65 20 variable locale
2d30: 5b 6d 63 6c 6f 63 61 6c 65 5d 0a 09 6d 63 6c 6f [mclocale]..mclo
2d40: 63 61 6c 65 20 66 6f 6f 0a 20 20 20 20 7d 20 2d cale foo. } -
2d50: 63 6c 65 61 6e 75 70 20 7b 0a 09 6d 63 6c 6f 63 cleanup {..mcloc
2d60: 61 6c 65 20 24 6c 6f 63 61 6c 65 0a 09 72 65 6e ale $locale..ren
2d70: 61 6d 65 20 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 ame ::msgcat::mc
2d80: 75 6e 6b 6e 6f 77 6e 20 7b 7d 0a 09 72 65 6e 61 unknown {}..rena
2d90: 6d 65 20 53 61 76 65 64 4d 63 75 6e 6b 6e 6f 77 me SavedMcunknow
2da0: 6e 20 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 75 6e n ::msgcat::mcun
2db0: 6b 6e 6f 77 6e 0a 20 20 20 20 7d 20 2d 62 6f 64 known. } -bod
2dc0: 79 20 7b 0a 09 6d 63 20 75 6e 6b 32 0a 20 20 20 y {..mc unk2.
2dd0: 20 7d 20 2d 72 65 73 75 6c 74 20 75 6e 6b 6e 6f } -result unkno
2de0: 77 6e 3a 66 6f 6f 3a 75 6e 6b 32 3a 5b 69 6e 66 wn:foo:unk2:[inf
2df0: 6f 20 6c 65 76 65 6c 5d 0a 0a 20 20 20 20 23 20 o level].. #
2e00: 54 65 73 74 73 20 6d 73 67 63 61 74 2d 35 2e 2a Tests msgcat-5.*
2e10: 3a 20 5b 6d 63 6c 6f 61 64 5d 0a 0a 20 20 20 20 : [mcload]..
2e20: 76 61 72 69 61 62 6c 65 20 6c 6f 63 61 6c 65 73 variable locales
2e30: 20 7b 7b 7d 20 66 6f 6f 20 66 6f 6f 5f 42 41 52 {{} foo foo_BAR
2e40: 20 66 6f 6f 5f 42 41 52 5f 62 61 7a 7d 0a 20 20 foo_BAR_baz}.
2e50: 20 20 73 65 74 20 6d 73 67 64 69 72 20 5b 6d 61 set msgdir [ma
2e60: 6b 65 44 69 72 65 63 74 6f 72 79 20 6d 73 67 64 keDirectory msgd
2e70: 69 72 5d 0a 20 20 20 20 66 6f 72 65 61 63 68 20 ir]. foreach
2e80: 6c 6f 63 20 24 6c 6f 63 61 6c 65 73 20 7b 0a 09 loc $locales {..
2e90: 69 66 20 7b 20 24 6c 6f 63 20 65 71 20 7b 7d 20 if { $loc eq {}
2ea0: 7d 20 7b 0a 09 20 20 20 20 73 65 74 20 6d 73 67 } {.. set msg
2eb0: 20 52 4f 4f 54 0a 09 7d 20 65 6c 73 65 20 7b 0a ROOT..} else {.
2ec0: 09 20 20 20 20 73 65 74 20 6d 73 67 20 5b 73 74 . set msg [st
2ed0: 72 69 6e 67 20 74 6f 6c 6f 77 65 72 20 24 6c 6f ring tolower $lo
2ee0: 63 5d 0a 09 7d 0a 09 6d 61 6b 65 46 69 6c 65 20 c]..}..makeFile
2ef0: 5b 6c 69 73 74 20 3a 3a 6d 73 67 63 61 74 3a 3a [list ::msgcat::
2f00: 6d 63 73 65 74 20 24 6c 6f 63 20 61 62 63 20 61 mcset $loc abc a
2f10: 62 63 2d 24 6c 6f 63 5d 20 24 6d 73 67 2e 6d 73 bc-$loc] $msg.ms
2f20: 67 20 24 6d 73 67 64 69 72 0a 20 20 20 20 7d 0a g $msgdir. }.
2f30: 20 20 20 20 76 61 72 69 61 62 6c 65 20 63 6f 75 variable cou
2f40: 6e 74 20 31 0a 20 20 20 20 66 6f 72 65 61 63 68 nt 1. foreach
2f50: 20 6c 6f 63 20 7b 66 6f 6f 20 66 6f 6f 5f 42 41 loc {foo foo_BA
2f60: 52 20 66 6f 6f 5f 42 41 52 5f 62 61 7a 7d 20 7b R foo_BAR_baz} {
2f70: 0a 09 74 65 73 74 20 6d 73 67 63 61 74 2d 35 2e ..test msgcat-5.
2f80: 24 63 6f 75 6e 74 20 7b 6d 63 6c 6f 61 64 7d 20 $count {mcload}
2f90: 2d 73 65 74 75 70 20 7b 0a 09 20 20 20 20 76 61 -setup {.. va
2fa0: 72 69 61 62 6c 65 20 6c 6f 63 61 6c 65 20 5b 6d riable locale [m
2fb0: 63 6c 6f 63 61 6c 65 5d 0a 09 20 20 20 20 3a 3a clocale].. ::
2fc0: 6d 73 67 63 61 74 3a 3a 6d 63 6c 6f 63 61 6c 65 msgcat::mclocale
2fd0: 20 22 22 0a 09 20 20 20 20 3a 3a 6d 73 67 63 61 "".. ::msgca
2fe0: 74 3a 3a 6d 63 6c 6f 61 64 65 64 6c 6f 63 61 6c t::mcloadedlocal
2ff0: 65 73 20 63 6c 65 61 72 0a 09 20 20 20 20 3a 3a es clear.. ::
3000: 6d 73 67 63 61 74 3a 3a 6d 63 70 61 63 6b 61 67 msgcat::mcpackag
3010: 65 63 6f 6e 66 69 67 20 75 6e 73 65 74 20 6d 63 econfig unset mc
3020: 66 6f 6c 64 65 72 0a 09 20 20 20 20 6d 63 6c 6f folder.. mclo
3030: 63 61 6c 65 20 24 6c 6f 63 0a 09 7d 20 2d 63 6c cale $loc..} -cl
3040: 65 61 6e 75 70 20 7b 0a 09 20 20 20 20 6d 63 6c eanup {.. mcl
3050: 6f 63 61 6c 65 20 24 6c 6f 63 61 6c 65 0a 09 20 ocale $locale..
3060: 20 20 20 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 6c ::msgcat::mcl
3070: 6f 61 64 65 64 6c 6f 63 61 6c 65 73 20 63 6c 65 oadedlocales cle
3080: 61 72 0a 09 20 20 20 20 3a 3a 6d 73 67 63 61 74 ar.. ::msgcat
3090: 3a 3a 6d 63 70 61 63 6b 61 67 65 63 6f 6e 66 69 ::mcpackageconfi
30a0: 67 20 75 6e 73 65 74 20 6d 63 66 6f 6c 64 65 72 g unset mcfolder
30b0: 0a 09 7d 20 2d 62 6f 64 79 20 7b 0a 09 20 20 20 ..} -body {..
30c0: 20 6d 63 6c 6f 61 64 20 24 6d 73 67 64 69 72 0a mcload $msgdir.
30d0: 09 7d 20 2d 72 65 73 75 6c 74 20 5b 65 78 70 72 .} -result [expr
30e0: 20 7b 20 24 63 6f 75 6e 74 2b 31 20 7d 5d 0a 09 { $count+1 }]..
30f0: 69 6e 63 72 20 63 6f 75 6e 74 0a 20 20 20 20 7d incr count. }
3100: 0a 0a 20 20 20 20 23 20 45 76 65 6e 20 74 68 6f .. # Even tho
3110: 75 67 68 20 66 6f 6f 5f 42 41 52 5f 6e 6f 74 65 ugh foo_BAR_note
3120: 78 69 73 74 20 64 6f 65 73 20 6e 6f 74 20 65 78 xist does not ex
3130: 69 73 74 2c 0a 20 20 20 20 23 20 66 6f 6f 5f 42 ist,. # foo_B
3140: 41 52 2c 20 66 6f 6f 20 61 6e 64 20 74 68 65 20 AR, foo and the
3150: 72 6f 6f 74 20 73 68 6f 75 6c 64 20 62 65 20 6c root should be l
3160: 6f 61 64 65 64 2e 0a 09 74 65 73 74 20 6d 73 67 oaded...test msg
3170: 63 61 74 2d 35 2e 34 20 7b 6d 63 6c 6f 61 64 7d cat-5.4 {mcload}
3180: 20 2d 73 65 74 75 70 20 7b 0a 09 20 20 20 20 76 -setup {.. v
3190: 61 72 69 61 62 6c 65 20 6c 6f 63 61 6c 65 20 5b ariable locale [
31a0: 6d 63 6c 6f 63 61 6c 65 5d 0a 09 20 20 20 20 6d mclocale].. m
31b0: 63 6c 6f 63 61 6c 65 20 66 6f 6f 5f 42 41 52 5f clocale foo_BAR_
31c0: 6e 6f 74 65 78 69 73 74 0a 09 7d 20 2d 63 6c 65 notexist..} -cle
31d0: 61 6e 75 70 20 7b 0a 09 20 20 20 20 6d 63 6c 6f anup {.. mclo
31e0: 63 61 6c 65 20 24 6c 6f 63 61 6c 65 0a 09 20 20 cale $locale..
31f0: 20 20 6d 63 6c 6f 61 64 65 64 6c 6f 63 61 6c 65 mcloadedlocale
3200: 73 20 63 6c 65 61 72 0a 09 20 20 20 20 6d 63 70 s clear.. mcp
3210: 61 63 6b 61 67 65 63 6f 6e 66 69 67 20 75 6e 73 ackageconfig uns
3220: 65 74 20 6d 63 66 6f 6c 64 65 72 0a 09 7d 20 2d et mcfolder..} -
3230: 62 6f 64 79 20 7b 0a 09 20 20 20 20 6d 63 6c 6f body {.. mclo
3240: 61 64 20 24 6d 73 67 64 69 72 0a 09 7d 20 2d 72 ad $msgdir..} -r
3250: 65 73 75 6c 74 20 33 0a 0a 09 74 65 73 74 20 6d esult 3...test m
3260: 73 67 63 61 74 2d 35 2e 35 20 7b 6d 63 6c 6f 61 sgcat-5.5 {mcloa
3270: 64 7d 20 2d 73 65 74 75 70 20 7b 0a 09 20 20 20 d} -setup {..
3280: 20 76 61 72 69 61 62 6c 65 20 6c 6f 63 61 6c 65 variable locale
3290: 20 5b 6d 63 6c 6f 63 61 6c 65 5d 0a 09 20 20 20 [mclocale]..
32a0: 20 6d 63 6c 6f 63 61 6c 65 20 6e 6f 5f 46 49 5f mclocale no_FI_
32b0: 6e 6f 74 65 78 69 73 74 0a 09 7d 20 2d 63 6c 65 notexist..} -cle
32c0: 61 6e 75 70 20 7b 0a 09 20 20 20 20 6d 63 6c 6f anup {.. mclo
32d0: 63 61 6c 65 20 24 6c 6f 63 61 6c 65 0a 09 20 20 cale $locale..
32e0: 20 20 6d 63 6c 6f 61 64 65 64 6c 6f 63 61 6c 65 mcloadedlocale
32f0: 73 20 63 6c 65 61 72 0a 09 20 20 20 20 6d 63 70 s clear.. mcp
3300: 61 63 6b 61 67 65 63 6f 6e 66 69 67 20 75 6e 73 ackageconfig uns
3310: 65 74 20 6d 63 66 6f 6c 64 65 72 0a 09 7d 20 2d et mcfolder..} -
3320: 62 6f 64 79 20 7b 0a 09 20 20 20 20 6d 63 6c 6f body {.. mclo
3330: 61 64 20 24 6d 73 67 64 69 72 0a 09 7d 20 2d 72 ad $msgdir..} -r
3340: 65 73 75 6c 74 20 31 0a 0a 09 74 65 73 74 20 6d esult 1...test m
3350: 73 67 63 61 74 2d 35 2e 36 20 7b 6d 63 6c 6f 61 sgcat-5.6 {mcloa
3360: 64 7d 20 2d 73 65 74 75 70 20 7b 0a 09 20 20 20 d} -setup {..
3370: 20 76 61 72 69 61 62 6c 65 20 6c 6f 63 61 6c 65 variable locale
3380: 20 5b 6d 63 6c 6f 63 61 6c 65 5d 0a 09 20 20 20 [mclocale]..
3390: 20 6d 63 6c 6f 63 61 6c 65 20 66 6f 6f 0a 09 20 mclocale foo..
33a0: 20 20 20 6d 63 6c 6f 61 64 20 24 6d 73 67 64 69 mcload $msgdi
33b0: 72 0a 09 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a r..} -cleanup {.
33c0: 09 20 20 20 20 6d 63 6c 6f 63 61 6c 65 20 24 6c . mclocale $l
33d0: 6f 63 61 6c 65 0a 09 7d 20 2d 62 6f 64 79 20 7b ocale..} -body {
33e0: 0a 09 20 20 20 20 6d 63 20 61 62 63 0a 09 7d 20 .. mc abc..}
33f0: 2d 72 65 73 75 6c 74 20 61 62 63 2d 66 6f 6f 0a -result abc-foo.
3400: 0a 09 74 65 73 74 20 6d 73 67 63 61 74 2d 35 2e ..test msgcat-5.
3410: 37 20 7b 6d 63 6c 6f 61 64 7d 20 2d 73 65 74 75 7 {mcload} -setu
3420: 70 20 7b 0a 09 20 20 20 20 76 61 72 69 61 62 6c p {.. variabl
3430: 65 20 6c 6f 63 61 6c 65 20 5b 6d 63 6c 6f 63 61 e locale [mcloca
3440: 6c 65 5d 0a 09 20 20 20 20 6d 63 6c 6f 63 61 6c le].. mclocal
3450: 65 20 66 6f 6f 5f 42 41 52 0a 09 20 20 20 20 6d e foo_BAR.. m
3460: 63 6c 6f 61 64 20 24 6d 73 67 64 69 72 0a 09 7d cload $msgdir..}
3470: 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 20 20 20 -cleanup {..
3480: 20 6d 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 6c mclocale $local
3490: 65 0a 09 7d 20 2d 62 6f 64 79 20 7b 0a 09 20 20 e..} -body {..
34a0: 20 20 6d 63 20 61 62 63 0a 09 7d 20 2d 72 65 73 mc abc..} -res
34b0: 75 6c 74 20 61 62 63 2d 66 6f 6f 5f 42 41 52 0a ult abc-foo_BAR.
34c0: 0a 09 74 65 73 74 20 6d 73 67 63 61 74 2d 35 2e ..test msgcat-5.
34d0: 38 20 7b 6d 63 6c 6f 61 64 7d 20 2d 73 65 74 75 8 {mcload} -setu
34e0: 70 20 7b 0a 09 20 20 20 20 76 61 72 69 61 62 6c p {.. variabl
34f0: 65 20 6c 6f 63 61 6c 65 20 5b 6d 63 6c 6f 63 61 e locale [mcloca
3500: 6c 65 5d 0a 09 20 20 20 20 6d 63 6c 6f 63 61 6c le].. mclocal
3510: 65 20 66 6f 6f 5f 42 41 52 5f 62 61 7a 0a 09 20 e foo_BAR_baz..
3520: 20 20 20 6d 63 6c 6f 61 64 20 24 6d 73 67 64 69 mcload $msgdi
3530: 72 0a 09 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a r..} -cleanup {.
3540: 09 20 20 20 20 6d 63 6c 6f 63 61 6c 65 20 24 6c . mclocale $l
3550: 6f 63 61 6c 65 0a 09 7d 20 2d 62 6f 64 79 20 7b ocale..} -body {
3560: 0a 09 20 20 20 20 6d 63 20 61 62 63 0a 09 7d 20 .. mc abc..}
3570: 2d 72 65 73 75 6c 74 20 61 62 63 2d 66 6f 6f 5f -result abc-foo_
3580: 42 41 52 5f 62 61 7a 0a 0a 09 74 65 73 74 20 6d BAR_baz...test m
3590: 73 67 63 61 74 2d 35 2e 39 20 7b 6d 63 6c 6f 61 sgcat-5.9 {mcloa
35a0: 64 7d 20 2d 73 65 74 75 70 20 7b 0a 09 20 20 20 d} -setup {..
35b0: 20 76 61 72 69 61 62 6c 65 20 6c 6f 63 61 6c 65 variable locale
35c0: 20 5b 6d 63 6c 6f 63 61 6c 65 5d 0a 09 20 20 20 [mclocale]..
35d0: 20 6d 63 6c 6f 63 61 6c 65 20 6e 6f 5f 46 49 5f mclocale no_FI_
35e0: 6e 6f 74 65 78 69 73 74 0a 09 20 20 20 20 6d 63 notexist.. mc
35f0: 6c 6f 61 64 20 24 6d 73 67 64 69 72 0a 09 7d 20 load $msgdir..}
3600: 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 20 20 20 20 -cleanup {..
3610: 6d 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 6c 65 mclocale $locale
3620: 0a 09 7d 20 2d 62 6f 64 79 20 7b 0a 09 20 20 20 ..} -body {..
3630: 20 6d 63 20 61 62 63 0a 09 7d 20 2d 72 65 73 75 mc abc..} -resu
3640: 6c 74 20 61 62 63 2d 0a 0a 09 74 65 73 74 20 6d lt abc-...test m
3650: 73 67 63 61 74 2d 35 2e 31 30 20 7b 6d 63 6c 6f sgcat-5.10 {mclo
3660: 61 64 7d 20 2d 73 65 74 75 70 20 7b 0a 09 20 20 ad} -setup {..
3670: 20 20 72 65 6e 61 6d 65 20 3a 3a 6d 73 67 63 61 rename ::msgca
3680: 74 3a 3a 6d 63 75 6e 6b 6e 6f 77 6e 20 53 61 76 t::mcunknown Sav
3690: 65 64 4d 63 75 6e 6b 6e 6f 77 6e 0a 09 20 20 20 edMcunknown..
36a0: 20 70 72 6f 63 20 3a 3a 6d 73 67 63 61 74 3a 3a proc ::msgcat::
36b0: 6d 63 75 6e 6b 6e 6f 77 6e 20 7b 64 6f 6d 20 73 mcunknown {dom s
36c0: 7d 20 7b 0a 09 09 72 65 74 75 72 6e 20 75 6e 6b } {...return unk
36d0: 6e 6f 77 6e 3a 24 64 6f 6d 3a 24 73 0a 09 20 20 nown:$dom:$s..
36e0: 20 20 7d 0a 09 20 20 20 20 76 61 72 69 61 62 6c }.. variabl
36f0: 65 20 6c 6f 63 61 6c 65 20 5b 6d 63 6c 6f 63 61 e locale [mcloca
3700: 6c 65 5d 0a 09 20 20 20 20 6d 63 6c 6f 63 61 6c le].. mclocal
3710: 65 20 6e 6f 5f 46 49 5f 6e 6f 74 65 78 69 73 74 e no_FI_notexist
3720: 0a 09 20 20 20 20 6d 63 6c 6f 61 64 20 24 6d 73 .. mcload $ms
3730: 67 64 69 72 0a 09 7d 20 2d 63 6c 65 61 6e 75 70 gdir..} -cleanup
3740: 20 7b 0a 09 20 20 20 20 6d 63 6c 6f 63 61 6c 65 {.. mclocale
3750: 20 24 6c 6f 63 61 6c 65 0a 09 20 20 20 20 72 65 $locale.. re
3760: 6e 61 6d 65 20 3a 3a 6d 73 67 63 61 74 3a 3a 6d name ::msgcat::m
3770: 63 75 6e 6b 6e 6f 77 6e 20 7b 7d 0a 09 20 20 20 cunknown {}..
3780: 20 72 65 6e 61 6d 65 20 53 61 76 65 64 4d 63 75 rename SavedMcu
3790: 6e 6b 6e 6f 77 6e 20 3a 3a 6d 73 67 63 61 74 3a nknown ::msgcat:
37a0: 3a 6d 63 75 6e 6b 6e 6f 77 6e 0a 09 7d 20 2d 62 :mcunknown..} -b
37b0: 6f 64 79 20 7b 0a 09 20 20 20 20 6d 63 20 64 65 ody {.. mc de
37c0: 66 0a 09 7d 20 2d 72 65 73 75 6c 74 20 75 6e 6b f..} -result unk
37d0: 6e 6f 77 6e 3a 6e 6f 5f 66 69 5f 6e 6f 74 65 78 nown:no_fi_notex
37e0: 69 73 74 3a 64 65 66 0a 0a 09 74 65 73 74 20 6d ist:def...test m
37f0: 73 67 63 61 74 2d 35 2e 31 31 20 7b 6d 63 70 61 sgcat-5.11 {mcpa
3800: 63 6b 61 67 65 63 6f 6e 66 69 67 20 6d 63 66 6f ckageconfig mcfo
3810: 6c 64 65 72 7d 20 2d 73 65 74 75 70 20 7b 0a 09 lder} -setup {..
3820: 20 20 20 20 76 61 72 69 61 62 6c 65 20 6c 6f 63 variable loc
3830: 61 6c 65 20 5b 6d 63 6c 6f 63 61 6c 65 5d 0a 09 ale [mclocale]..
3840: 20 20 20 20 6d 63 6c 6f 63 61 6c 65 20 22 22 0a mclocale "".
3850: 09 20 20 20 20 6d 63 6c 6f 61 64 65 64 6c 6f 63 . mcloadedloc
3860: 61 6c 65 73 20 63 6c 65 61 72 0a 09 20 20 20 20 ales clear..
3870: 6d 63 70 61 63 6b 61 67 65 63 6f 6e 66 69 67 20 mcpackageconfig
3880: 75 6e 73 65 74 20 6d 63 66 6f 6c 64 65 72 0a 09 unset mcfolder..
3890: 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 20 20 } -cleanup {..
38a0: 20 20 6d 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 mclocale $loca
38b0: 6c 65 0a 09 20 20 20 20 6d 63 6c 6f 61 64 65 64 le.. mcloaded
38c0: 6c 6f 63 61 6c 65 73 20 63 6c 65 61 72 0a 09 20 locales clear..
38d0: 20 20 20 6d 63 70 61 63 6b 61 67 65 63 6f 6e 66 mcpackageconf
38e0: 69 67 20 75 6e 73 65 74 20 6d 63 66 6f 6c 64 65 ig unset mcfolde
38f0: 72 0a 09 7d 20 2d 62 6f 64 79 20 7b 0a 09 20 20 r..} -body {..
3900: 20 20 6d 63 6c 6f 63 61 6c 65 20 66 6f 6f 0a 09 mclocale foo..
3910: 20 20 20 20 6d 63 70 61 63 6b 61 67 65 63 6f 6e mcpackagecon
3920: 66 69 67 20 73 65 74 20 6d 63 66 6f 6c 64 65 72 fig set mcfolder
3930: 20 24 6d 73 67 64 69 72 0a 09 7d 20 2d 72 65 73 $msgdir..} -res
3940: 75 6c 74 20 32 0a 0a 20 20 20 20 66 6f 72 65 61 ult 2.. forea
3950: 63 68 20 6c 6f 63 20 24 6c 6f 63 61 6c 65 73 20 ch loc $locales
3960: 7b 0a 09 69 66 20 7b 20 24 6c 6f 63 20 65 71 20 {..if { $loc eq
3970: 7b 7d 20 7d 20 7b 0a 09 20 20 20 20 73 65 74 20 {} } {.. set
3980: 6d 73 67 20 52 4f 4f 54 0a 09 7d 20 65 6c 73 65 msg ROOT..} else
3990: 20 7b 0a 09 20 20 20 20 73 65 74 20 6d 73 67 20 {.. set msg
39a0: 5b 73 74 72 69 6e 67 20 74 6f 6c 6f 77 65 72 20 [string tolower
39b0: 24 6c 6f 63 5d 0a 09 7d 0a 09 72 65 6d 6f 76 65 $loc]..}..remove
39c0: 46 69 6c 65 20 24 6d 73 67 2e 6d 73 67 20 24 6d File $msg.msg $m
39d0: 73 67 64 69 72 0a 20 20 20 20 7d 0a 20 20 20 20 sgdir. }.
39e0: 72 65 6d 6f 76 65 44 69 72 65 63 74 6f 72 79 20 removeDirectory
39f0: 6d 73 67 64 69 72 0a 0a 20 20 20 20 23 20 54 65 msgdir.. # Te
3a00: 73 74 73 20 6d 73 67 63 61 74 2d 36 2e 2a 3a 20 sts msgcat-6.*:
3a10: 5b 6d 63 73 65 74 5d 2c 20 5b 6d 63 5d 20 6e 61 [mcset], [mc] na
3a20: 6d 65 73 70 61 63 65 20 69 6e 68 65 72 69 74 61 mespace inherita
3a30: 6e 63 65 0a 23 0a 23 20 54 65 73 74 20 6d 63 73 nce.#.# Test mcs
3a40: 65 74 20 61 6e 64 20 6d 63 2c 20 65 6e 73 75 72 et and mc, ensur
3a50: 69 6e 67 20 74 68 61 74 20 72 65 73 6f 6c 75 74 ing that resolut
3a60: 69 6f 6e 20 66 6f 72 20 6d 65 73 73 61 67 65 73 ion for messages
3a70: 0a 23 20 70 72 6f 63 65 65 64 73 20 66 72 6f 6d .# proceeds from
3a80: 20 74 68 65 20 63 75 72 72 65 6e 74 20 6e 73 20 the current ns
3a90: 74 6f 20 69 74 73 20 70 61 72 65 6e 74 20 61 6e to its parent an
3aa0: 64 20 73 6f 20 6f 6e 20 74 6f 20 74 68 65 0a 23 d so on to the.#
3ab0: 20 67 6c 6f 62 61 6c 20 6e 73 2e 0a 23 0a 23 20 global ns..#.#
3ac0: 44 6f 20 74 68 69 73 20 66 6f 72 20 74 68 65 20 Do this for the
3ad0: 31 32 20 70 65 72 6d 75 74 61 74 69 6f 6e 73 20 12 permutations
3ae0: 6f 66 0a 23 20 20 20 20 20 6c 6f 63 61 6c 65 73 of.# locales
3af0: 3a 20 66 6f 6f 0a 23 20 20 20 20 20 6e 61 6d 65 : foo.# name
3b00: 73 70 61 63 65 73 3a 20 66 6f 6f 20 66 6f 6f 3a spaces: foo foo:
3b10: 3a 62 61 72 20 66 6f 6f 3a 3a 62 61 72 3a 3a 62 :bar foo::bar::b
3b20: 61 7a 0a 23 20 20 20 20 20 73 74 72 69 6e 67 73 az.# strings
3b30: 3a 20 7b 6f 76 31 20 6f 76 32 20 6f 76 33 20 6f : {ov1 ov2 ov3 o
3b40: 76 34 7d 0a 23 20 20 20 20 20 6e 61 6d 65 73 70 v4}.# namesp
3b50: 61 63 65 20 3a 3a 66 6f 6f 20 20 20 20 20 20 20 ace ::foo
3b60: 20 20 20 20 20 64 65 66 69 6e 65 73 20 6f 76 31 defines ov1
3b70: 2c 20 6f 76 32 2c 20 6f 76 33 0a 23 20 20 20 20 , ov2, ov3.#
3b80: 20 6e 61 6d 65 73 70 61 63 65 20 3a 3a 66 6f 6f namespace ::foo
3b90: 3a 3a 62 61 72 20 20 20 20 20 20 20 64 65 66 69 ::bar defi
3ba0: 6e 65 73 20 20 20 20 20 20 6f 76 32 2c 20 6f 76 nes ov2, ov
3bb0: 33 0a 23 20 20 20 20 20 6e 61 6d 65 73 70 61 63 3.# namespac
3bc0: 65 20 3a 3a 66 6f 6f 3a 3a 62 61 72 3a 3a 62 61 e ::foo::bar::ba
3bd0: 7a 20 20 64 65 66 69 6e 65 73 20 20 20 20 20 20 z defines
3be0: 20 20 20 20 20 6f 76 33 0a 23 0a 23 20 20 20 20 ov3.#.#
3bf0: 20 6f 76 34 20 69 73 20 6e 6f 74 20 64 65 66 69 ov4 is not defi
3c00: 6e 65 64 20 69 6e 20 61 6e 79 20 6e 61 6d 65 73 ned in any names
3c10: 70 61 63 65 2e 0a 23 0a 23 20 53 6f 2c 0a 23 20 pace..#.# So,.#
3c20: 20 20 20 20 6f 76 33 20 73 68 6f 75 6c 64 20 62 ov3 should b
3c30: 65 20 72 65 73 6f 6c 76 65 64 20 69 6e 20 3a 3a e resolved in ::
3c40: 66 6f 6f 3a 3a 62 61 72 3a 3a 62 61 7a 2c 20 3a foo::bar::baz, :
3c50: 3a 66 6f 6f 3a 3a 62 61 72 2c 20 3a 3a 66 6f 6f :foo::bar, ::foo
3c60: 3b 0a 23 20 20 20 20 20 6f 76 32 20 73 68 6f 75 ;.# ov2 shou
3c70: 6c 64 20 62 65 20 72 65 73 6f 6c 76 65 64 20 69 ld be resolved i
3c80: 6e 20 3a 3a 66 6f 6f 2c 20 3a 3a 66 6f 6f 3a 3a n ::foo, ::foo::
3c90: 62 61 72 0a 23 20 20 20 20 20 6f 76 31 20 73 68 bar.# ov1 sh
3ca0: 6f 75 6c 64 20 62 65 20 72 65 73 6f 6c 76 65 64 ould be resolved
3cb0: 20 69 6e 20 3a 3a 66 6f 6f 0a 23 20 20 20 20 20 in ::foo.#
3cc0: 6f 76 34 20 73 68 6f 75 6c 64 20 62 65 20 72 65 ov4 should be re
3cd0: 73 6f 6c 76 65 64 20 69 6e 20 6e 6f 6e 65 2c 20 solved in none,
3ce0: 61 6e 64 20 63 61 6c 6c 20 6d 63 75 6e 6b 6e 6f and call mcunkno
3cf0: 77 6e 0a 23 0a 0a 20 20 20 20 76 61 72 69 61 62 wn.#.. variab
3d00: 6c 65 20 72 65 73 75 6c 74 0a 20 20 20 20 61 72 le result. ar
3d10: 72 61 79 20 73 65 74 20 72 65 73 75 6c 74 20 7b ray set result {
3d20: 0a 09 66 6f 6f 2c 6f 76 31 20 6f 76 31 5f 66 6f ..foo,ov1 ov1_fo
3d30: 6f 20 66 6f 6f 2c 6f 76 32 20 6f 76 32 5f 66 6f o foo,ov2 ov2_fo
3d40: 6f 20 66 6f 6f 2c 6f 76 33 20 6f 76 33 5f 66 6f o foo,ov3 ov3_fo
3d50: 6f 20 66 6f 6f 2c 6f 76 34 20 6f 76 34 0a 09 66 o foo,ov4 ov4..f
3d60: 6f 6f 3a 3a 62 61 72 2c 6f 76 31 20 6f 76 31 5f oo::bar,ov1 ov1_
3d70: 66 6f 6f 20 66 6f 6f 3a 3a 62 61 72 2c 6f 76 32 foo foo::bar,ov2
3d80: 20 6f 76 32 5f 66 6f 6f 5f 62 61 72 0a 09 66 6f ov2_foo_bar..fo
3d90: 6f 3a 3a 62 61 72 2c 6f 76 33 20 6f 76 33 5f 66 o::bar,ov3 ov3_f
3da0: 6f 6f 5f 62 61 72 20 66 6f 6f 3a 3a 62 61 72 2c oo_bar foo::bar,
3db0: 6f 76 34 20 6f 76 34 20 66 6f 6f 3a 3a 62 61 72 ov4 ov4 foo::bar
3dc0: 3a 3a 62 61 7a 2c 6f 76 31 20 6f 76 31 5f 66 6f ::baz,ov1 ov1_fo
3dd0: 6f 0a 09 66 6f 6f 3a 3a 62 61 72 3a 3a 62 61 7a o..foo::bar::baz
3de0: 2c 6f 76 32 20 6f 76 32 5f 66 6f 6f 5f 62 61 72 ,ov2 ov2_foo_bar
3df0: 20 66 6f 6f 3a 3a 62 61 72 3a 3a 62 61 7a 2c 6f foo::bar::baz,o
3e00: 76 33 20 6f 76 33 5f 66 6f 6f 5f 62 61 72 5f 62 v3 ov3_foo_bar_b
3e10: 61 7a 0a 09 66 6f 6f 3a 3a 62 61 72 3a 3a 62 61 az..foo::bar::ba
3e20: 7a 2c 6f 76 34 20 6f 76 34 0a 20 20 20 20 7d 0a z,ov4 ov4. }.
3e30: 20 20 20 20 76 61 72 69 61 62 6c 65 20 63 6f 75 variable cou
3e40: 6e 74 20 31 0a 20 20 20 20 76 61 72 69 61 62 6c nt 1. variabl
3e50: 65 20 6e 73 0a 20 20 20 20 66 6f 72 65 61 63 68 e ns. foreach
3e60: 20 6e 73 20 7b 66 6f 6f 20 66 6f 6f 3a 3a 62 61 ns {foo foo::ba
3e70: 72 20 66 6f 6f 3a 3a 62 61 72 3a 3a 62 61 7a 7d r foo::bar::baz}
3e80: 20 7b 0a 09 66 6f 72 65 61 63 68 20 73 74 72 69 {..foreach stri
3e90: 6e 67 20 7b 6f 76 31 20 6f 76 32 20 6f 76 33 20 ng {ov1 ov2 ov3
3ea0: 6f 76 34 7d 20 7b 0a 09 20 20 20 20 74 65 73 74 ov4} {.. test
3eb0: 20 6d 73 67 63 61 74 2d 36 2e 24 63 6f 75 6e 74 msgcat-6.$count
3ec0: 20 7b 6d 63 73 65 74 2c 20 6f 76 65 72 6c 61 70 {mcset, overlap
3ed0: 7d 20 2d 73 65 74 75 70 20 7b 0a 09 09 6e 61 6d } -setup {...nam
3ee0: 65 73 70 61 63 65 20 65 76 61 6c 20 66 6f 6f 20 espace eval foo
3ef0: 7b 0a 09 09 20 20 20 20 3a 3a 6d 73 67 63 61 74 {... ::msgcat
3f00: 3a 3a 6d 63 73 65 74 20 66 6f 6f 20 6f 76 31 20 ::mcset foo ov1
3f10: 6f 76 31 5f 66 6f 6f 0a 09 09 20 20 20 20 3a 3a ov1_foo... ::
3f20: 6d 73 67 63 61 74 3a 3a 6d 63 73 65 74 20 66 6f msgcat::mcset fo
3f30: 6f 20 6f 76 32 20 6f 76 32 5f 66 6f 6f 0a 09 09 o ov2 ov2_foo...
3f40: 20 20 20 20 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 ::msgcat::mc
3f50: 73 65 74 20 66 6f 6f 20 6f 76 33 20 6f 76 33 5f set foo ov3 ov3_
3f60: 66 6f 6f 0a 09 09 20 20 20 20 6e 61 6d 65 73 70 foo... namesp
3f70: 61 63 65 20 65 76 61 6c 20 62 61 72 20 7b 0a 09 ace eval bar {..
3f80: 09 09 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 73 65 ..::msgcat::mcse
3f90: 74 20 66 6f 6f 20 6f 76 32 20 6f 76 32 5f 66 6f t foo ov2 ov2_fo
3fa0: 6f 5f 62 61 72 0a 09 09 09 3a 3a 6d 73 67 63 61 o_bar....::msgca
3fb0: 74 3a 3a 6d 63 73 65 74 20 66 6f 6f 20 6f 76 33 t::mcset foo ov3
3fc0: 20 6f 76 33 5f 66 6f 6f 5f 62 61 72 0a 09 09 09 ov3_foo_bar....
3fd0: 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 62 namespace eval b
3fe0: 61 7a 20 7b 0a 09 09 09 20 20 20 20 3a 3a 6d 73 az {.... ::ms
3ff0: 67 63 61 74 3a 3a 6d 63 73 65 74 20 66 6f 6f 20 gcat::mcset foo
4000: 6f 76 33 20 22 6f 76 33 5f 66 6f 6f 5f 62 61 72 ov3 "ov3_foo_bar
4010: 5f 62 61 7a 22 0a 09 09 09 7d 0a 09 09 20 20 20 _baz"....}...
4020: 20 7d 0a 0a 09 09 7d 0a 09 09 76 61 72 69 61 62 }....}...variab
4030: 6c 65 20 6c 6f 63 61 6c 65 20 5b 6d 63 6c 6f 63 le locale [mcloc
4040: 61 6c 65 5d 0a 09 09 6d 63 6c 6f 63 61 6c 65 20 ale]...mclocale
4050: 66 6f 6f 0a 09 20 20 20 20 7d 20 2d 63 6c 65 61 foo.. } -clea
4060: 6e 75 70 20 7b 0a 09 09 6d 63 6c 6f 63 61 6c 65 nup {...mclocale
4070: 20 24 6c 6f 63 61 6c 65 0a 09 09 6e 61 6d 65 73 $locale...names
4080: 70 61 63 65 20 64 65 6c 65 74 65 20 66 6f 6f 0a pace delete foo.
4090: 09 20 20 20 20 7d 20 2d 62 6f 64 79 20 7b 0a 09 . } -body {..
40a0: 09 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 .namespace eval
40b0: 24 6e 73 20 5b 6c 69 73 74 20 3a 3a 6d 73 67 63 $ns [list ::msgc
40c0: 61 74 3a 3a 6d 63 20 24 73 74 72 69 6e 67 5d 0a at::mc $string].
40d0: 09 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 24 . } -result $
40e0: 72 65 73 75 6c 74 28 24 6e 73 2c 24 73 74 72 69 result($ns,$stri
40f0: 6e 67 29 0a 09 20 20 20 20 69 6e 63 72 20 63 6f ng).. incr co
4100: 75 6e 74 0a 09 7d 0a 20 20 20 20 7d 0a 0a 20 20 unt..}. }..
4110: 20 20 23 20 54 65 73 74 73 20 6d 73 67 63 61 74 # Tests msgcat
4120: 2d 37 2e 2a 3a 20 5b 6d 63 5d 20 65 78 74 72 61 -7.*: [mc] extra
4130: 20 61 72 67 73 20 70 72 6f 63 65 73 73 65 64 20 args processed
4140: 62 79 20 5b 66 6f 72 6d 61 74 5d 0a 0a 20 20 20 by [format]..
4150: 20 74 65 73 74 20 6d 73 67 63 61 74 2d 37 2e 31 test msgcat-7.1
4160: 20 7b 6d 63 20 65 78 74 72 61 20 61 72 67 73 20 {mc extra args
4170: 67 6f 20 74 68 72 6f 75 67 68 20 74 6f 20 66 6f go through to fo
4180: 72 6d 61 74 7d 20 2d 73 65 74 75 70 20 7b 0a 09 rmat} -setup {..
4190: 6d 63 73 65 74 20 66 6f 6f 20 66 6f 72 6d 61 74 mcset foo format
41a0: 31 20 22 74 68 69 73 20 69 73 20 61 20 74 65 73 1 "this is a tes
41b0: 74 22 0a 09 6d 63 73 65 74 20 66 6f 6f 20 66 6f t"..mcset foo fo
41c0: 72 6d 61 74 32 20 22 74 68 69 73 20 69 73 20 61 rmat2 "this is a
41d0: 20 25 73 22 0a 09 6d 63 73 65 74 20 66 6f 6f 20 %s"..mcset foo
41e0: 66 6f 72 6d 61 74 33 20 22 74 68 69 73 20 69 73 format3 "this is
41f0: 20 61 20 25 73 20 25 73 22 0a 09 76 61 72 69 61 a %s %s"..varia
4200: 62 6c 65 20 6c 6f 63 61 6c 65 20 5b 6d 63 6c 6f ble locale [mclo
4210: 63 61 6c 65 5d 0a 09 6d 63 6c 6f 63 61 6c 65 20 cale]..mclocale
4220: 66 6f 6f 0a 20 20 20 20 7d 20 2d 63 6c 65 61 6e foo. } -clean
4230: 75 70 20 7b 0a 09 6d 63 6c 6f 63 61 6c 65 20 24 up {..mclocale $
4240: 6c 6f 63 61 6c 65 0a 20 20 20 20 7d 20 2d 62 6f locale. } -bo
4250: 64 79 20 7b 0a 09 6d 63 20 66 6f 72 6d 61 74 31 dy {..mc format1
4260: 20 22 67 6f 6f 64 20 74 65 73 74 22 0a 20 20 20 "good test".
4270: 20 7d 20 2d 72 65 73 75 6c 74 20 22 74 68 69 73 } -result "this
4280: 20 69 73 20 61 20 74 65 73 74 22 0a 0a 20 20 20 is a test"..
4290: 20 74 65 73 74 20 6d 73 67 63 61 74 2d 37 2e 32 test msgcat-7.2
42a0: 20 7b 6d 63 20 65 78 74 72 61 20 61 72 67 73 20 {mc extra args
42b0: 67 6f 20 74 68 72 6f 75 67 68 20 74 6f 20 66 6f go through to fo
42c0: 72 6d 61 74 7d 20 2d 73 65 74 75 70 20 7b 0a 09 rmat} -setup {..
42d0: 6d 63 73 65 74 20 66 6f 6f 20 66 6f 72 6d 61 74 mcset foo format
42e0: 31 20 22 74 68 69 73 20 69 73 20 61 20 74 65 73 1 "this is a tes
42f0: 74 22 0a 09 6d 63 73 65 74 20 66 6f 6f 20 66 6f t"..mcset foo fo
4300: 72 6d 61 74 32 20 22 74 68 69 73 20 69 73 20 61 rmat2 "this is a
4310: 20 25 73 22 0a 09 6d 63 73 65 74 20 66 6f 6f 20 %s"..mcset foo
4320: 66 6f 72 6d 61 74 33 20 22 74 68 69 73 20 69 73 format3 "this is
4330: 20 61 20 25 73 20 25 73 22 0a 09 76 61 72 69 61 a %s %s"..varia
4340: 62 6c 65 20 6c 6f 63 61 6c 65 20 5b 6d 63 6c 6f ble locale [mclo
4350: 63 61 6c 65 5d 0a 09 6d 63 6c 6f 63 61 6c 65 20 cale]..mclocale
4360: 66 6f 6f 0a 20 20 20 20 7d 20 2d 63 6c 65 61 6e foo. } -clean
4370: 75 70 20 7b 0a 09 6d 63 6c 6f 63 61 6c 65 20 24 up {..mclocale $
4380: 6c 6f 63 61 6c 65 0a 20 20 20 20 7d 20 2d 62 6f locale. } -bo
4390: 64 79 20 7b 0a 09 6d 63 20 66 6f 72 6d 61 74 32 dy {..mc format2
43a0: 20 22 67 6f 6f 64 20 74 65 73 74 22 0a 20 20 20 "good test".
43b0: 20 7d 20 2d 72 65 73 75 6c 74 20 22 74 68 69 73 } -result "this
43c0: 20 69 73 20 61 20 67 6f 6f 64 20 74 65 73 74 22 is a good test"
43d0: 0a 0a 20 20 20 20 74 65 73 74 20 6d 73 67 63 61 .. test msgca
43e0: 74 2d 37 2e 33 20 7b 6d 63 20 65 72 72 6f 72 73 t-7.3 {mc errors
43f0: 20 66 72 6f 6d 20 66 6f 72 6d 61 74 20 61 72 65 from format are
4400: 20 70 72 6f 70 61 67 61 74 65 64 7d 20 2d 73 65 propagated} -se
4410: 74 75 70 20 7b 0a 09 6d 63 73 65 74 20 66 6f 6f tup {..mcset foo
4420: 20 66 6f 72 6d 61 74 31 20 22 74 68 69 73 20 69 format1 "this i
4430: 73 20 61 20 74 65 73 74 22 0a 09 6d 63 73 65 74 s a test"..mcset
4440: 20 66 6f 6f 20 66 6f 72 6d 61 74 32 20 22 74 68 foo format2 "th
4450: 69 73 20 69 73 20 61 20 25 73 22 0a 09 6d 63 73 is is a %s"..mcs
4460: 65 74 20 66 6f 6f 20 66 6f 72 6d 61 74 33 20 22 et foo format3 "
4470: 74 68 69 73 20 69 73 20 61 20 25 73 20 25 73 22 this is a %s %s"
4480: 0a 09 76 61 72 69 61 62 6c 65 20 6c 6f 63 61 6c ..variable local
4490: 65 20 5b 6d 63 6c 6f 63 61 6c 65 5d 0a 09 6d 63 e [mclocale]..mc
44a0: 6c 6f 63 61 6c 65 20 66 6f 6f 0a 20 20 20 20 7d locale foo. }
44b0: 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 6d 63 6c -cleanup {..mcl
44c0: 6f 63 61 6c 65 20 24 6c 6f 63 61 6c 65 0a 20 20 ocale $locale.
44d0: 20 20 7d 20 2d 62 6f 64 79 20 7b 0a 09 63 61 74 } -body {..cat
44e0: 63 68 20 7b 6d 63 20 66 6f 72 6d 61 74 33 20 22 ch {mc format3 "
44f0: 67 6f 6f 64 20 74 65 73 74 22 7d 0a 20 20 20 20 good test"}.
4500: 7d 20 2d 72 65 73 75 6c 74 20 31 0a 0a 20 20 20 } -result 1..
4510: 20 74 65 73 74 20 6d 73 67 63 61 74 2d 37 2e 34 test msgcat-7.4
4520: 20 7b 6d 63 2c 20 65 78 74 72 61 20 61 72 67 73 {mc, extra args
4530: 20 61 72 65 20 67 69 76 65 6e 20 74 6f 20 75 6e are given to un
4540: 6b 6e 6f 77 6e 7d 20 2d 73 65 74 75 70 20 7b 0a known} -setup {.
4550: 09 6d 63 73 65 74 20 66 6f 6f 20 66 6f 72 6d 61 .mcset foo forma
4560: 74 31 20 22 74 68 69 73 20 69 73 20 61 20 74 65 t1 "this is a te
4570: 73 74 22 0a 09 6d 63 73 65 74 20 66 6f 6f 20 66 st"..mcset foo f
4580: 6f 72 6d 61 74 32 20 22 74 68 69 73 20 69 73 20 ormat2 "this is
4590: 61 20 25 73 22 0a 09 6d 63 73 65 74 20 66 6f 6f a %s"..mcset foo
45a0: 20 66 6f 72 6d 61 74 33 20 22 74 68 69 73 20 69 format3 "this i
45b0: 73 20 61 20 25 73 20 25 73 22 0a 09 76 61 72 69 s a %s %s"..vari
45c0: 61 62 6c 65 20 6c 6f 63 61 6c 65 20 5b 6d 63 6c able locale [mcl
45d0: 6f 63 61 6c 65 5d 0a 09 6d 63 6c 6f 63 61 6c 65 ocale]..mclocale
45e0: 20 66 6f 6f 0a 20 20 20 20 7d 20 2d 63 6c 65 61 foo. } -clea
45f0: 6e 75 70 20 7b 0a 09 6d 63 6c 6f 63 61 6c 65 20 nup {..mclocale
4600: 24 6c 6f 63 61 6c 65 0a 20 20 20 20 7d 20 2d 62 $locale. } -b
4610: 6f 64 79 20 7b 0a 09 6d 63 20 22 74 68 69 73 20 ody {..mc "this
4620: 69 73 20 61 20 25 73 22 20 22 67 6f 6f 64 20 74 is a %s" "good t
4630: 65 73 74 22 0a 20 20 20 20 7d 20 2d 72 65 73 75 est". } -resu
4640: 6c 74 20 22 74 68 69 73 20 69 73 20 61 20 67 6f lt "this is a go
4650: 6f 64 20 74 65 73 74 22 0a 0a 20 20 20 20 23 20 od test".. #
4660: 54 65 73 74 73 20 6d 73 67 63 61 74 2d 38 2e 2a Tests msgcat-8.*
4670: 3a 20 5b 6d 63 66 6c 73 65 74 5d 0a 0a 20 20 20 : [mcflset]..
4680: 20 73 65 74 20 6d 73 67 64 69 72 31 20 5b 6d 61 set msgdir1 [ma
4690: 6b 65 44 69 72 65 63 74 6f 72 79 20 6d 73 67 64 keDirectory msgd
46a0: 69 72 31 5d 0a 20 20 20 20 6d 61 6b 65 46 69 6c ir1]. makeFil
46b0: 65 20 7b 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 66 e {::msgcat::mcf
46c0: 6c 73 65 74 20 6b 31 20 76 31 7d 20 6c 31 2e 6d lset k1 v1} l1.m
46d0: 73 67 20 24 6d 73 67 64 69 72 31 0a 0a 09 74 65 sg $msgdir1...te
46e0: 73 74 20 6d 73 67 63 61 74 2d 38 2e 31 20 7b 6d st msgcat-8.1 {m
46f0: 63 66 6c 73 65 74 7d 20 2d 73 65 74 75 70 20 7b cflset} -setup {
4700: 0a 09 20 20 20 20 76 61 72 69 61 62 6c 65 20 6c .. variable l
4710: 6f 63 61 6c 65 20 5b 6d 63 6c 6f 63 61 6c 65 5d ocale [mclocale]
4720: 0a 09 20 20 20 20 6d 63 6c 6f 63 61 6c 65 20 6c .. mclocale l
4730: 31 0a 09 20 20 20 20 6d 63 6c 6f 61 64 20 24 6d 1.. mcload $m
4740: 73 67 64 69 72 31 0a 09 7d 20 2d 63 6c 65 61 6e sgdir1..} -clean
4750: 75 70 20 7b 0a 09 20 20 20 20 6d 63 6c 6f 63 61 up {.. mcloca
4760: 6c 65 20 24 6c 6f 63 61 6c 65 0a 09 7d 20 2d 62 le $locale..} -b
4770: 6f 64 79 20 7b 0a 09 20 20 20 20 6d 63 20 6b 31 ody {.. mc k1
4780: 0a 09 7d 20 2d 72 65 73 75 6c 74 20 76 31 0a 0a ..} -result v1..
4790: 20 20 20 20 72 65 6d 6f 76 65 46 69 6c 65 20 6c removeFile l
47a0: 31 2e 6d 73 67 20 24 6d 73 67 64 69 72 31 0a 20 1.msg $msgdir1.
47b0: 20 20 20 72 65 6d 6f 76 65 44 69 72 65 63 74 6f removeDirecto
47c0: 72 79 20 6d 73 67 64 69 72 31 0a 0a 20 20 20 20 ry msgdir1..
47d0: 73 65 74 20 6d 73 67 64 69 72 32 20 5b 6d 61 6b set msgdir2 [mak
47e0: 65 44 69 72 65 63 74 6f 72 79 20 6d 73 67 64 69 eDirectory msgdi
47f0: 72 32 5d 0a 20 20 20 20 73 65 74 20 6d 73 67 64 r2]. set msgd
4800: 69 72 33 20 5b 6d 61 6b 65 44 69 72 65 63 74 6f ir3 [makeDirecto
4810: 72 79 20 6d 73 67 64 69 72 33 5d 0a 20 20 20 20 ry msgdir3].
4820: 6d 61 6b 65 46 69 6c 65 20 22 3a 3a 6d 73 67 63 makeFile "::msgc
4830: 61 74 3a 3a 6d 63 66 6c 73 65 74 20 6b 32 20 76 at::mcflset k2 v
4840: 32 20 3b 20 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 2 ; ::msgcat::mc
4850: 6c 6f 61 64 20 5b 6c 69 73 74 20 24 6d 73 67 64 load [list $msgd
4860: 69 72 33 5d 22 5c 0a 09 20 20 20 20 6c 32 2e 6d ir3]"\.. l2.m
4870: 73 67 20 24 6d 73 67 64 69 72 32 0a 20 20 20 20 sg $msgdir2.
4880: 6d 61 6b 65 46 69 6c 65 20 7b 3a 3a 6d 73 67 63 makeFile {::msgc
4890: 61 74 3a 3a 6d 63 66 6c 73 65 74 20 6b 33 20 76 at::mcflset k3 v
48a0: 33 20 3b 20 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 3 ; ::msgcat::mc
48b0: 66 6c 6d 73 65 74 20 7b 6b 34 20 76 34 20 6b 35 flmset {k4 v4 k5
48c0: 20 76 35 7d 7d 20 6c 32 2e 6d 73 67 20 24 6d 73 v5}} l2.msg $ms
48d0: 67 64 69 72 33 0a 0a 09 23 20 63 68 61 69 6e 65 gdir3...# chaine
48e0: 64 20 6d 63 6c 6f 61 64 0a 09 74 65 73 74 20 6d d mcload..test m
48f0: 73 67 63 61 74 2d 38 2e 32 20 7b 6d 63 66 6c 73 sgcat-8.2 {mcfls
4900: 65 74 2f 6d 63 66 6c 6d 73 65 74 7d 20 2d 73 65 et/mcflmset} -se
4910: 74 75 70 20 7b 0a 09 20 20 20 20 76 61 72 69 61 tup {.. varia
4920: 62 6c 65 20 6c 6f 63 61 6c 65 20 5b 6d 63 6c 6f ble locale [mclo
4930: 63 61 6c 65 5d 0a 09 20 20 20 20 6d 63 6c 6f 63 cale].. mcloc
4940: 61 6c 65 20 6c 32 0a 09 20 20 20 20 6d 63 6c 6f ale l2.. mclo
4950: 61 64 20 24 6d 73 67 64 69 72 32 0a 09 7d 20 2d ad $msgdir2..} -
4960: 63 6c 65 61 6e 75 70 20 7b 0a 09 20 20 20 20 6d cleanup {.. m
4970: 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 6c 65 0a clocale $locale.
4980: 09 7d 20 2d 62 6f 64 79 20 7b 0a 09 20 20 20 20 .} -body {..
4990: 72 65 74 75 72 6e 20 5b 6d 63 20 6b 32 5d 5b 6d return [mc k2][m
49a0: 63 20 6b 33 5d 2d 2d 5b 6d 63 20 6b 34 5d 5b 6d c k3]--[mc k4][m
49b0: 63 20 6b 35 5d 0a 09 7d 20 2d 72 65 73 75 6c 74 c k5]..} -result
49c0: 20 76 32 76 33 2d 2d 76 34 76 35 0a 0a 20 20 20 v2v3--v4v5..
49d0: 20 72 65 6d 6f 76 65 46 69 6c 65 20 6c 32 2e 6d removeFile l2.m
49e0: 73 67 20 24 6d 73 67 64 69 72 32 0a 20 20 20 20 sg $msgdir2.
49f0: 72 65 6d 6f 76 65 44 69 72 65 63 74 6f 72 79 20 removeDirectory
4a00: 6d 73 67 64 69 72 32 0a 20 20 20 20 72 65 6d 6f msgdir2. remo
4a10: 76 65 44 69 72 65 63 74 6f 72 79 20 6d 73 67 64 veDirectory msgd
4a20: 69 72 33 0a 0a 20 20 20 20 23 20 54 65 73 74 73 ir3.. # Tests
4a30: 20 6d 73 67 63 61 74 2d 39 2e 2a 3a 20 5b 6d 63 msgcat-9.*: [mc
4a40: 65 78 69 73 74 73 5d 0a 0a 09 74 65 73 74 20 6d exists]...test m
4a50: 73 67 63 61 74 2d 39 2e 31 20 7b 6d 63 65 78 69 sgcat-9.1 {mcexi
4a60: 73 74 73 20 6e 6f 20 70 61 72 61 6d 65 74 65 72 sts no parameter
4a70: 7d 20 2d 62 6f 64 79 20 7b 0a 09 20 20 20 20 6d } -body {.. m
4a80: 63 65 78 69 73 74 73 0a 09 7d 20 2d 72 65 74 75 cexists..} -retu
4a90: 72 6e 43 6f 64 65 73 20 31 5c 0a 09 2d 72 65 73 rnCodes 1\..-res
4aa0: 75 6c 74 20 7b 77 72 6f 6e 67 20 23 20 61 72 67 ult {wrong # arg
4ab0: 73 3a 20 73 68 6f 75 6c 64 20 62 65 20 22 6d 63 s: should be "mc
4ac0: 65 78 69 73 74 73 20 3f 2d 65 78 61 63 74 6e 61 exists ?-exactna
4ad0: 6d 65 73 70 61 63 65 3f 20 3f 2d 65 78 61 63 74 mespace? ?-exact
4ae0: 6c 6f 63 61 6c 65 3f 20 3f 2d 6e 61 6d 65 73 70 locale? ?-namesp
4af0: 61 63 65 20 6e 73 3f 20 73 72 63 22 7d 0a 0a 09 ace ns? src"}...
4b00: 74 65 73 74 20 6d 73 67 63 61 74 2d 39 2e 32 20 test msgcat-9.2
4b10: 7b 6d 63 65 78 69 73 74 73 20 75 6e 6b 6e 6f 77 {mcexists unknow
4b20: 6e 20 6f 70 74 69 6f 6e 7d 20 2d 62 6f 64 79 20 n option} -body
4b30: 7b 0a 09 20 20 20 20 6d 63 65 78 69 73 74 73 20 {.. mcexists
4b40: 2d 75 6e 6b 6e 6f 77 6e 20 73 72 63 0a 09 7d 20 -unknown src..}
4b50: 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 31 5c 0a -returnCodes 1\.
4b60: 09 2d 72 65 73 75 6c 74 20 7b 75 6e 6b 6e 6f 77 .-result {unknow
4b70: 6e 20 6f 70 74 69 6f 6e 20 22 2d 75 6e 6b 6e 6f n option "-unkno
4b80: 77 6e 22 7d 0a 0a 09 74 65 73 74 20 6d 73 67 63 wn"}...test msgc
4b90: 61 74 2d 39 2e 33 20 7b 6d 63 65 78 69 73 74 73 at-9.3 {mcexists
4ba0: 7d 20 2d 73 65 74 75 70 20 7b 0a 09 20 20 20 20 } -setup {..
4bb0: 6d 63 66 6f 72 67 65 74 70 61 63 6b 61 67 65 0a mcforgetpackage.
4bc0: 09 20 20 20 20 76 61 72 69 61 62 6c 65 20 6c 6f . variable lo
4bd0: 63 61 6c 65 20 5b 6d 63 6c 6f 63 61 6c 65 5d 0a cale [mclocale].
4be0: 09 20 20 20 20 6d 63 6c 6f 63 61 6c 65 20 66 6f . mclocale fo
4bf0: 6f 0a 09 20 20 20 20 6d 63 73 65 74 20 66 6f 6f o.. mcset foo
4c00: 20 6b 31 20 76 31 0a 09 7d 20 2d 63 6c 65 61 6e k1 v1..} -clean
4c10: 75 70 20 7b 0a 09 20 20 20 20 6d 63 6c 6f 63 61 up {.. mcloca
4c20: 6c 65 20 24 6c 6f 63 61 6c 65 0a 09 7d 20 2d 62 le $locale..} -b
4c30: 6f 64 79 20 7b 0a 09 20 20 20 20 6c 69 73 74 20 ody {.. list
4c40: 5b 6d 63 65 78 69 73 74 73 20 6b 31 5d 20 5b 6d [mcexists k1] [m
4c50: 63 65 78 69 73 74 73 20 6b 32 5d 0a 09 7d 20 2d cexists k2]..} -
4c60: 72 65 73 75 6c 74 20 7b 31 20 30 7d 0a 0a 09 74 result {1 0}...t
4c70: 65 73 74 20 6d 73 67 63 61 74 2d 39 2e 34 20 7b est msgcat-9.4 {
4c80: 6d 63 65 78 69 73 74 73 20 64 65 73 63 65 6e 64 mcexists descend
4c90: 65 6e 74 20 70 72 65 66 65 72 65 6e 63 65 7d 20 ent preference}
4ca0: 2d 73 65 74 75 70 20 7b 0a 09 20 20 20 20 6d 63 -setup {.. mc
4cb0: 66 6f 72 67 65 74 70 61 63 6b 61 67 65 0a 09 20 forgetpackage..
4cc0: 20 20 20 76 61 72 69 61 62 6c 65 20 6c 6f 63 61 variable loca
4cd0: 6c 65 20 5b 6d 63 6c 6f 63 61 6c 65 5d 0a 09 20 le [mclocale]..
4ce0: 20 20 20 6d 63 6c 6f 63 61 6c 65 20 66 6f 6f 5f mclocale foo_
4cf0: 62 61 72 0a 09 20 20 20 20 6d 63 73 65 74 20 66 bar.. mcset f
4d00: 6f 6f 20 6b 31 20 76 31 0a 09 7d 20 2d 63 6c 65 oo k1 v1..} -cle
4d10: 61 6e 75 70 20 7b 0a 09 20 20 20 20 6d 63 6c 6f anup {.. mclo
4d20: 63 61 6c 65 20 24 6c 6f 63 61 6c 65 0a 09 7d 20 cale $locale..}
4d30: 2d 62 6f 64 79 20 7b 0a 09 20 20 20 20 6c 69 73 -body {.. lis
4d40: 74 20 5b 6d 63 65 78 69 73 74 73 20 6b 31 5d 20 t [mcexists k1]
4d50: 5b 6d 63 65 78 69 73 74 73 20 2d 65 78 61 63 74 [mcexists -exact
4d60: 6c 6f 63 61 6c 65 20 6b 31 5d 0a 09 7d 20 2d 72 locale k1]..} -r
4d70: 65 73 75 6c 74 20 7b 31 20 30 7d 0a 0a 09 74 65 esult {1 0}...te
4d80: 73 74 20 6d 73 67 63 61 74 2d 39 2e 35 20 7b 6d st msgcat-9.5 {m
4d90: 63 65 78 69 73 74 73 20 70 61 72 65 6e 74 20 6e cexists parent n
4da0: 61 6d 65 73 70 61 63 65 7d 20 2d 73 65 74 75 70 amespace} -setup
4db0: 20 7b 0a 09 20 20 20 20 6d 63 66 6f 72 67 65 74 {.. mcforget
4dc0: 70 61 63 6b 61 67 65 0a 09 20 20 20 20 76 61 72 package.. var
4dd0: 69 61 62 6c 65 20 6c 6f 63 61 6c 65 20 5b 6d 63 iable locale [mc
4de0: 6c 6f 63 61 6c 65 5d 0a 09 20 20 20 20 6d 63 6c locale].. mcl
4df0: 6f 63 61 6c 65 20 66 6f 6f 5f 62 61 72 0a 09 20 ocale foo_bar..
4e00: 20 20 20 6d 63 73 65 74 20 66 6f 6f 20 6b 31 20 mcset foo k1
4e10: 76 31 0a 09 7d 20 2d 63 6c 65 61 6e 75 70 20 7b v1..} -cleanup {
4e20: 0a 09 20 20 20 20 6d 63 6c 6f 63 61 6c 65 20 24 .. mclocale $
4e30: 6c 6f 63 61 6c 65 0a 09 20 20 20 20 6e 61 6d 65 locale.. name
4e40: 73 70 61 63 65 20 64 65 6c 65 74 65 20 3a 3a 66 space delete ::f
4e50: 6f 6f 0a 09 7d 20 2d 62 6f 64 79 20 7b 0a 09 20 oo..} -body {..
4e60: 20 20 20 6e 61 6d 65 73 70 61 63 65 20 65 76 61 namespace eva
4e70: 6c 20 3a 3a 66 6f 6f 20 7b 0a 09 09 6c 69 73 74 l ::foo {...list
4e80: 20 5b 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 65 78 [::msgcat::mcex
4e90: 69 73 74 73 20 6b 31 5d 5c 0a 09 09 09 5b 3a 3a ists k1]\....[::
4ea0: 6d 73 67 63 61 74 3a 3a 6d 63 65 78 69 73 74 73 msgcat::mcexists
4eb0: 20 2d 6e 61 6d 65 73 70 61 63 65 20 3a 3a 6d 73 -namespace ::ms
4ec0: 67 63 61 74 3a 3a 74 65 73 74 20 6b 31 5d 0a 09 gcat::test k1]..
4ed0: 20 20 20 20 7d 0a 09 7d 20 2d 72 65 73 75 6c 74 }..} -result
4ee0: 20 7b 30 20 31 7d 0a 0a 09 74 65 73 74 20 6d 73 {0 1}...test ms
4ef0: 67 63 61 74 2d 39 2e 36 20 7b 6d 63 65 78 69 73 gcat-9.6 {mcexis
4f00: 74 73 20 2d 6e 61 6d 65 73 70 61 63 65 20 6e 73 ts -namespace ns
4f10: 20 70 61 72 61 6d 65 74 65 72 7d 20 2d 73 65 74 parameter} -set
4f20: 75 70 20 7b 0a 09 20 20 20 20 6d 63 66 6f 72 67 up {.. mcforg
4f30: 65 74 70 61 63 6b 61 67 65 0a 09 20 20 20 20 76 etpackage.. v
4f40: 61 72 69 61 62 6c 65 20 6c 6f 63 61 6c 65 20 5b ariable locale [
4f50: 6d 63 6c 6f 63 61 6c 65 5d 0a 09 20 20 20 20 6d mclocale].. m
4f60: 63 6c 6f 63 61 6c 65 20 66 6f 6f 5f 62 61 72 0a clocale foo_bar.
4f70: 09 20 20 20 20 6d 63 73 65 74 20 66 6f 6f 20 6b . mcset foo k
4f80: 31 20 76 31 0a 09 7d 20 2d 63 6c 65 61 6e 75 70 1 v1..} -cleanup
4f90: 20 7b 0a 09 20 20 20 20 6d 63 6c 6f 63 61 6c 65 {.. mclocale
4fa0: 20 24 6c 6f 63 61 6c 65 0a 09 20 20 20 20 6e 61 $locale.. na
4fb0: 6d 65 73 70 61 63 65 20 64 65 6c 65 74 65 20 3a mespace delete :
4fc0: 3a 66 6f 6f 0a 09 7d 20 2d 62 6f 64 79 20 7b 0a :foo..} -body {.
4fd0: 09 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20 65 . namespace e
4fe0: 76 61 6c 20 3a 3a 66 6f 6f 20 7b 0a 09 09 6c 69 val ::foo {...li
4ff0: 73 74 20 5b 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 st [::msgcat::mc
5000: 65 78 69 73 74 73 20 6b 31 5d 5c 0a 09 09 09 5b exists k1]\....[
5010: 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 65 78 69 73 ::msgcat::mcexis
5020: 74 73 20 2d 6e 61 6d 65 73 70 61 63 65 20 3a 3a ts -namespace ::
5030: 6d 73 67 63 61 74 3a 3a 74 65 73 74 20 6b 31 5d msgcat::test k1]
5040: 0a 09 20 20 20 20 7d 0a 09 7d 20 2d 72 65 73 75 .. }..} -resu
5050: 6c 74 20 7b 30 20 31 7d 0a 0a 09 74 65 73 74 20 lt {0 1}...test
5060: 6d 73 67 63 61 74 2d 39 2e 37 20 7b 6d 63 65 78 msgcat-9.7 {mcex
5070: 69 73 74 73 20 2d 6e 61 6d 65 73 70 61 63 65 20 ists -namespace
5080: 2d 20 6e 73 20 61 72 67 75 6d 65 6e 74 20 6d 69 - ns argument mi
5090: 73 73 69 6e 67 7d 20 2d 62 6f 64 79 20 7b 0a 09 ssing} -body {..
50a0: 20 20 20 20 6d 63 65 78 69 73 74 73 20 2d 6e 61 mcexists -na
50b0: 6d 65 73 70 61 63 65 20 73 72 63 0a 09 7d 20 2d mespace src..} -
50c0: 72 65 74 75 72 6e 43 6f 64 65 73 20 31 5c 0a 09 returnCodes 1\..
50d0: 2d 72 65 73 75 6c 74 20 7b 41 72 67 75 6d 65 6e -result {Argumen
50e0: 74 20 6d 69 73 73 69 6e 67 20 66 6f 72 20 73 77 t missing for sw
50f0: 69 74 63 68 20 22 2d 6e 61 6d 65 73 70 61 63 65 itch "-namespace
5100: 22 7d 0a 0a 0a 20 20 20 20 23 20 54 65 73 74 73 "}... # Tests
5110: 20 6d 73 67 63 61 74 2d 31 30 2e 2a 3a 20 5b 6d msgcat-10.*: [m
5120: 63 6c 6f 61 64 65 64 6c 6f 63 61 6c 65 73 5d 0a cloadedlocales].
5130: 0a 09 74 65 73 74 20 6d 73 67 63 61 74 2d 31 30 ..test msgcat-10
5140: 2e 31 20 7b 6d 63 6c 6f 61 64 65 64 6c 6f 63 61 .1 {mcloadedloca
5150: 6c 65 73 20 6e 6f 20 61 72 67 7d 20 2d 62 6f 64 les no arg} -bod
5160: 79 20 7b 0a 09 20 20 20 20 6d 63 6c 6f 61 64 65 y {.. mcloade
5170: 64 6c 6f 63 61 6c 65 73 0a 09 7d 20 2d 72 65 74 dlocales..} -ret
5180: 75 72 6e 43 6f 64 65 73 20 31 5c 0a 09 2d 72 65 urnCodes 1\..-re
5190: 73 75 6c 74 20 7b 77 72 6f 6e 67 20 23 20 61 72 sult {wrong # ar
51a0: 67 73 3a 20 73 68 6f 75 6c 64 20 62 65 20 22 6d gs: should be "m
51b0: 63 6c 6f 61 64 65 64 6c 6f 63 61 6c 65 73 20 73 cloadedlocales s
51c0: 75 62 63 6f 6d 6d 61 6e 64 22 7d 0a 0a 09 74 65 ubcommand"}...te
51d0: 73 74 20 6d 73 67 63 61 74 2d 31 30 2e 32 20 7b st msgcat-10.2 {
51e0: 6d 63 6c 6f 61 64 65 64 6c 6f 63 61 6c 65 73 20 mcloadedlocales
51f0: 77 72 6f 6e 67 20 73 75 62 63 6f 6d 6d 61 6e 64 wrong subcommand
5200: 7d 20 2d 62 6f 64 79 20 7b 0a 09 20 20 20 20 6d } -body {.. m
5210: 63 6c 6f 61 64 65 64 6c 6f 63 61 6c 65 73 20 6a cloadedlocales j
5220: 75 6e 6b 0a 09 7d 20 2d 72 65 74 75 72 6e 43 6f unk..} -returnCo
5230: 64 65 73 20 31 5c 0a 09 2d 72 65 73 75 6c 74 20 des 1\..-result
5240: 7b 75 6e 6b 6e 6f 77 6e 20 73 75 62 63 6f 6d 6d {unknown subcomm
5250: 61 6e 64 20 22 6a 75 6e 6b 22 3a 20 6d 75 73 74 and "junk": must
5260: 20 62 65 20 63 6c 65 61 72 2c 20 6f 72 20 6c 6f be clear, or lo
5270: 61 64 65 64 7d 0a 0a 09 74 65 73 74 20 6d 73 67 aded}...test msg
5280: 63 61 74 2d 31 30 2e 33 20 7b 6d 63 6c 6f 61 64 cat-10.3 {mcload
5290: 65 64 6c 6f 63 61 6c 65 73 20 6c 6f 61 64 65 64 edlocales loaded
52a0: 7d 20 2d 73 65 74 75 70 20 7b 0a 09 20 20 20 20 } -setup {..
52b0: 6d 63 66 6f 72 67 65 74 70 61 63 6b 61 67 65 0a mcforgetpackage.
52c0: 09 20 20 20 20 76 61 72 69 61 62 6c 65 20 6c 6f . variable lo
52d0: 63 61 6c 65 20 5b 6d 63 6c 6f 63 61 6c 65 5d 0a cale [mclocale].
52e0: 09 20 20 20 20 6d 63 6c 6f 63 61 6c 65 20 7b 7d . mclocale {}
52f0: 0a 09 20 20 20 20 6d 63 6c 6f 61 64 65 64 6c 6f .. mcloadedlo
5300: 63 61 6c 65 73 20 63 6c 65 61 72 0a 09 7d 20 2d cales clear..} -
5310: 63 6c 65 61 6e 75 70 20 7b 0a 09 20 20 20 20 6d cleanup {.. m
5320: 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 6c 65 0a clocale $locale.
5330: 09 7d 20 2d 62 6f 64 79 20 7b 0a 09 20 20 20 20 .} -body {..
5340: 6d 63 6c 6f 63 61 6c 65 20 66 6f 6f 5f 62 61 72 mclocale foo_bar
5350: 0a 09 20 20 20 20 23 20 54 68 65 20 72 65 73 75 .. # The resu
5360: 6c 74 20 69 73 20 70 6f 73 69 74 69 6f 6e 20 69 lt is position i
5370: 6e 64 65 70 65 6e 64 65 6e 74 20 73 6f 20 73 6f ndependent so so
5380: 72 74 0a 09 20 20 20 20 73 65 74 20 72 65 73 75 rt.. set resu
5390: 6c 74 6c 69 73 74 20 5b 6c 73 6f 72 74 20 5b 6d ltlist [lsort [m
53a0: 63 6c 6f 61 64 65 64 6c 6f 63 61 6c 65 73 20 6c cloadedlocales l
53b0: 6f 61 64 65 64 5d 5d 0a 09 7d 20 2d 72 65 73 75 oaded]]..} -resu
53c0: 6c 74 20 7b 7b 7d 20 66 6f 6f 20 66 6f 6f 5f 62 lt {{} foo foo_b
53d0: 61 72 7d 0a 0a 09 74 65 73 74 20 6d 73 67 63 61 ar}...test msgca
53e0: 74 2d 31 30 2e 34 20 7b 6d 63 6c 6f 61 64 65 64 t-10.4 {mcloaded
53f0: 6c 6f 63 61 6c 65 73 20 63 6c 65 61 72 7d 20 2d locales clear} -
5400: 73 65 74 75 70 20 7b 0a 09 20 20 20 20 6d 63 66 setup {.. mcf
5410: 6f 72 67 65 74 70 61 63 6b 61 67 65 0a 09 20 20 orgetpackage..
5420: 20 20 76 61 72 69 61 62 6c 65 20 6c 6f 63 61 6c variable local
5430: 65 20 5b 6d 63 6c 6f 63 61 6c 65 5d 0a 09 20 20 e [mclocale]..
5440: 20 20 6d 63 6c 6f 63 61 6c 65 20 7b 7d 0a 09 20 mclocale {}..
5450: 20 20 20 6d 63 6c 6f 61 64 65 64 6c 6f 63 61 6c mcloadedlocal
5460: 65 73 20 63 6c 65 61 72 0a 09 7d 20 2d 63 6c 65 es clear..} -cle
5470: 61 6e 75 70 20 7b 0a 09 20 20 20 20 6d 63 6c 6f anup {.. mclo
5480: 63 61 6c 65 20 24 6c 6f 63 61 6c 65 0a 09 7d 20 cale $locale..}
5490: 2d 62 6f 64 79 20 7b 0a 09 20 20 20 20 6d 63 6c -body {.. mcl
54a0: 6f 63 61 6c 65 20 66 6f 6f 0a 09 20 20 20 20 6d ocale foo.. m
54b0: 63 73 65 74 20 66 6f 6f 20 6b 31 20 76 31 0a 09 cset foo k1 v1..
54c0: 20 20 20 20 73 65 74 20 72 65 73 20 5b 6d 63 65 set res [mce
54d0: 78 69 73 74 73 20 6b 31 5d 0a 09 20 20 20 20 6d xists k1].. m
54e0: 63 6c 6f 63 61 6c 65 20 22 22 0a 09 20 20 20 20 clocale ""..
54f0: 6d 63 6c 6f 61 64 65 64 6c 6f 63 61 6c 65 73 20 mcloadedlocales
5500: 63 6c 65 61 72 0a 09 20 20 20 20 6d 63 6c 6f 63 clear.. mcloc
5510: 61 6c 65 20 66 6f 6f 0a 09 20 20 20 20 6c 61 70 ale foo.. lap
5520: 70 65 6e 64 20 72 65 73 20 5b 6d 63 65 78 69 73 pend res [mcexis
5530: 74 73 20 6b 31 5d 0a 09 7d 20 2d 72 65 73 75 6c ts k1]..} -resul
5540: 74 20 7b 31 20 30 7d 0a 0a 20 20 20 20 23 20 54 t {1 0}.. # T
5550: 65 73 74 73 20 6d 73 67 63 61 74 2d 31 31 2e 2a ests msgcat-11.*
5560: 3a 20 5b 6d 63 66 6f 72 67 65 74 70 61 63 6b 61 : [mcforgetpacka
5570: 67 65 5d 0a 0a 09 74 65 73 74 20 6d 73 67 63 61 ge]...test msgca
5580: 74 2d 31 31 2e 31 20 7b 6d 63 66 6f 72 67 65 74 t-11.1 {mcforget
5590: 70 61 63 6b 61 67 65 20 74 72 61 6e 73 6c 61 74 package translat
55a0: 69 6f 6e 7d 20 2d 73 65 74 75 70 20 7b 0a 09 20 ion} -setup {..
55b0: 20 20 20 76 61 72 69 61 62 6c 65 20 6c 6f 63 61 variable loca
55c0: 6c 65 20 5b 6d 63 6c 6f 63 61 6c 65 5d 0a 09 7d le [mclocale]..}
55d0: 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 20 20 20 -cleanup {..
55e0: 20 6d 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 6c mclocale $local
55f0: 65 0a 09 7d 20 2d 62 6f 64 79 20 7b 0a 09 20 20 e..} -body {..
5600: 20 20 6d 63 6c 6f 63 61 6c 65 20 66 6f 6f 0a 09 mclocale foo..
5610: 20 20 20 20 6d 63 73 65 74 20 66 6f 6f 20 6b 31 mcset foo k1
5620: 20 76 31 0a 09 20 20 20 20 73 65 74 20 72 65 73 v1.. set res
5630: 20 5b 6d 63 65 78 69 73 74 73 20 6b 31 5d 0a 09 [mcexists k1]..
5640: 20 20 20 20 6d 63 66 6f 72 67 65 74 70 61 63 6b mcforgetpack
5650: 61 67 65 0a 09 20 20 20 20 6c 61 70 70 65 6e 64 age.. lappend
5660: 20 72 65 73 20 5b 6d 63 65 78 69 73 74 73 20 6b res [mcexists k
5670: 31 5d 0a 09 7d 20 2d 72 65 73 75 6c 74 20 7b 31 1]..} -result {1
5680: 20 30 7d 0a 0a 09 74 65 73 74 20 6d 73 67 63 61 0}...test msgca
5690: 74 2d 31 31 2e 32 20 7b 6d 63 66 6f 72 67 65 74 t-11.2 {mcforget
56a0: 70 61 63 6b 61 67 65 20 6c 6f 63 61 6c 65 7d 20 package locale}
56b0: 2d 73 65 74 75 70 20 7b 0a 09 20 20 20 20 76 61 -setup {.. va
56c0: 72 69 61 62 6c 65 20 6c 6f 63 61 6c 65 20 5b 6d riable locale [m
56d0: 63 6c 6f 63 61 6c 65 5d 0a 09 7d 20 2d 63 6c 65 clocale]..} -cle
56e0: 61 6e 75 70 20 7b 0a 09 20 20 20 20 6d 63 6c 6f anup {.. mclo
56f0: 63 61 6c 65 20 24 6c 6f 63 61 6c 65 0a 09 7d 20 cale $locale..}
5700: 2d 62 6f 64 79 20 7b 0a 09 20 20 20 20 6d 63 6c -body {.. mcl
5710: 6f 63 61 6c 65 20 66 6f 6f 0a 09 20 20 20 20 6d ocale foo.. m
5720: 63 70 61 63 6b 61 67 65 6c 6f 63 61 6c 65 20 73 cpackagelocale s
5730: 65 74 20 62 61 72 0a 09 20 20 20 20 73 65 74 20 et bar.. set
5740: 72 65 73 20 5b 6d 63 70 61 63 6b 61 67 65 6c 6f res [mcpackagelo
5750: 63 61 6c 65 20 67 65 74 5d 0a 09 20 20 20 20 6d cale get].. m
5760: 63 66 6f 72 67 65 74 70 61 63 6b 61 67 65 0a 09 cforgetpackage..
5770: 20 20 20 20 6c 61 70 70 65 6e 64 20 72 65 73 20 lappend res
5780: 5b 6d 63 70 61 63 6b 61 67 65 6c 6f 63 61 6c 65 [mcpackagelocale
5790: 20 67 65 74 5d 0a 09 7d 20 2d 72 65 73 75 6c 74 get]..} -result
57a0: 20 7b 62 61 72 20 66 6f 6f 7d 0a 0a 09 74 65 73 {bar foo}...tes
57b0: 74 20 6d 73 67 63 61 74 2d 31 31 2e 33 20 7b 6d t msgcat-11.3 {m
57c0: 63 66 6f 72 67 65 74 70 61 63 6b 61 67 65 20 6f cforgetpackage o
57d0: 70 74 69 6f 6e 73 7d 20 2d 62 6f 64 79 20 7b 0a ptions} -body {.
57e0: 09 20 20 20 20 6d 63 70 61 63 6b 61 67 65 63 6f . mcpackageco
57f0: 6e 66 69 67 20 73 65 74 20 6c 6f 61 64 63 6d 64 nfig set loadcmd
5800: 20 22 22 0a 09 20 20 20 20 73 65 74 20 72 65 73 "".. set res
5810: 20 5b 6d 63 70 61 63 6b 61 67 65 63 6f 6e 66 69 [mcpackageconfi
5820: 67 20 69 73 73 65 74 20 6c 6f 61 64 63 6d 64 5d g isset loadcmd]
5830: 0a 09 20 20 20 20 6d 63 66 6f 72 67 65 74 70 61 .. mcforgetpa
5840: 63 6b 61 67 65 0a 09 20 20 20 20 6c 61 70 70 65 ckage.. lappe
5850: 6e 64 20 72 65 73 20 5b 6d 63 70 61 63 6b 61 67 nd res [mcpackag
5860: 65 63 6f 6e 66 69 67 20 69 73 73 65 74 20 6c 6f econfig isset lo
5870: 61 64 63 6d 64 5d 0a 09 7d 20 2d 72 65 73 75 6c adcmd]..} -resul
5880: 74 20 7b 31 20 30 7d 0a 0a 20 20 20 20 23 20 54 t {1 0}.. # T
5890: 65 73 74 73 20 6d 73 67 63 61 74 2d 31 32 2e 2a ests msgcat-12.*
58a0: 3a 20 5b 6d 63 70 61 63 6b 61 67 65 6c 6f 63 61 : [mcpackageloca
58b0: 6c 65 5d 0a 0a 09 74 65 73 74 20 6d 73 67 63 61 le]...test msgca
58c0: 74 2d 31 32 2e 31 20 7b 6d 63 70 61 63 6b 61 67 t-12.1 {mcpackag
58d0: 65 6c 6f 63 61 6c 65 20 6e 6f 20 73 75 62 63 6f elocale no subco
58e0: 6d 6d 61 6e 64 7d 20 2d 62 6f 64 79 20 7b 0a 09 mmand} -body {..
58f0: 20 20 20 20 6d 63 70 61 63 6b 61 67 65 6c 6f 63 mcpackageloc
5900: 61 6c 65 0a 09 7d 20 2d 72 65 74 75 72 6e 43 6f ale..} -returnCo
5910: 64 65 73 20 31 5c 0a 09 2d 72 65 73 75 6c 74 20 des 1\..-result
5920: 7b 77 72 6f 6e 67 20 23 20 61 72 67 73 3a 20 73 {wrong # args: s
5930: 68 6f 75 6c 64 20 62 65 20 22 6d 63 70 61 63 6b hould be "mcpack
5940: 61 67 65 6c 6f 63 61 6c 65 20 73 75 62 63 6f 6d agelocale subcom
5950: 6d 61 6e 64 20 3f 61 72 67 20 2e 2e 2e 3f 22 7d mand ?arg ...?"}
5960: 0a 0a 09 74 65 73 74 20 6d 73 67 63 61 74 2d 31 ...test msgcat-1
5970: 32 2e 32 20 7b 6d 63 6c 70 61 63 6b 61 67 65 6c 2.2 {mclpackagel
5980: 6f 63 61 6c 65 20 77 72 6f 6e 67 20 73 75 62 63 ocale wrong subc
5990: 6f 6d 6d 61 6e 64 7d 20 2d 62 6f 64 79 20 7b 0a ommand} -body {.
59a0: 09 20 20 20 20 6d 63 70 61 63 6b 61 67 65 6c 6f . mcpackagelo
59b0: 63 61 6c 65 20 6a 75 6e 6b 0a 09 7d 20 2d 72 65 cale junk..} -re
59c0: 74 75 72 6e 43 6f 64 65 73 20 31 5c 0a 09 2d 72 turnCodes 1\..-r
59d0: 65 73 75 6c 74 20 7b 75 6e 6b 6e 6f 77 6e 20 73 esult {unknown s
59e0: 75 62 63 6f 6d 6d 61 6e 64 20 22 6a 75 6e 6b 22 ubcommand "junk"
59f0: 3a 20 6d 75 73 74 20 62 65 20 63 6c 65 61 72 2c : must be clear,
5a00: 20 67 65 74 2c 20 69 73 73 65 74 2c 20 6c 6f 61 get, isset, loa
5a10: 64 65 64 2c 20 70 72 65 73 65 6e 74 2c 20 73 65 ded, present, se
5a20: 74 2c 20 6f 72 20 75 6e 73 65 74 7d 0a 0a 09 74 t, or unset}...t
5a30: 65 73 74 20 6d 73 67 63 61 74 2d 31 32 2e 32 2e est msgcat-12.2.
5a40: 31 20 7b 6d 63 6c 70 61 63 6b 61 67 65 6c 6f 63 1 {mclpackageloc
5a50: 61 6c 65 20 73 65 74 20 6d 75 6c 74 69 70 6c 65 ale set multiple
5a60: 20 61 72 67 73 7d 20 2d 62 6f 64 79 20 7b 0a 09 args} -body {..
5a70: 20 20 20 20 6d 63 70 61 63 6b 61 67 65 6c 6f 63 mcpackageloc
5a80: 61 6c 65 20 73 65 74 20 61 20 62 0a 09 7d 20 2d ale set a b..} -
5a90: 72 65 74 75 72 6e 43 6f 64 65 73 20 31 5c 0a 09 returnCodes 1\..
5aa0: 2d 72 65 73 75 6c 74 20 7b 77 72 6f 6e 67 20 23 -result {wrong #
5ab0: 20 61 72 67 73 3a 20 73 68 6f 75 6c 64 20 62 65 args: should be
5ac0: 20 22 6d 63 70 61 63 6b 61 67 65 6c 6f 63 61 6c "mcpackagelocal
5ad0: 65 20 73 65 74 20 3f 6c 6f 63 61 6c 65 3f 22 7d e set ?locale?"}
5ae0: 0a 0a 09 74 65 73 74 20 6d 73 67 63 61 74 2d 31 ...test msgcat-1
5af0: 32 2e 33 20 7b 6d 63 70 61 63 6b 61 67 65 6c 6f 2.3 {mcpackagelo
5b00: 63 61 6c 65 20 73 65 74 7d 20 2d 73 65 74 75 70 cale set} -setup
5b10: 20 7b 0a 09 20 20 20 20 76 61 72 69 61 62 6c 65 {.. variable
5b20: 20 6c 6f 63 61 6c 65 20 5b 6d 63 6c 6f 63 61 6c locale [mclocal
5b30: 65 5d 0a 09 7d 20 2d 63 6c 65 61 6e 75 70 20 7b e]..} -cleanup {
5b40: 0a 09 20 20 20 20 6d 63 6c 6f 63 61 6c 65 20 24 .. mclocale $
5b50: 6c 6f 63 61 6c 65 0a 09 20 20 20 20 6d 63 66 6f locale.. mcfo
5b60: 72 67 65 74 70 61 63 6b 61 67 65 0a 09 7d 20 2d rgetpackage..} -
5b70: 62 6f 64 79 20 7b 0a 09 20 20 20 20 6d 63 6c 6f body {.. mclo
5b80: 63 61 6c 65 20 66 6f 6f 0a 09 20 20 20 20 6d 63 cale foo.. mc
5b90: 70 61 63 6b 61 67 65 6c 6f 63 61 6c 65 20 73 65 packagelocale se
5ba0: 74 20 62 61 72 0a 09 20 20 20 20 6c 69 73 74 20 t bar.. list
5bb0: 5b 6d 63 70 61 63 6b 61 67 65 6c 6f 63 61 6c 65 [mcpackagelocale
5bc0: 20 67 65 74 5d 20 5b 6d 63 6c 6f 63 61 6c 65 5d get] [mclocale]
5bd0: 0a 09 7d 20 2d 72 65 73 75 6c 74 20 7b 62 61 72 ..} -result {bar
5be0: 20 66 6f 6f 7d 0a 0a 09 74 65 73 74 20 6d 73 67 foo}...test msg
5bf0: 63 61 74 2d 31 32 2e 34 20 7b 6d 63 70 61 63 6b cat-12.4 {mcpack
5c00: 61 67 65 6c 6f 63 61 6c 65 20 67 65 74 7d 20 2d agelocale get} -
5c10: 73 65 74 75 70 20 7b 0a 09 20 20 20 20 76 61 72 setup {.. var
5c20: 69 61 62 6c 65 20 6c 6f 63 61 6c 65 20 5b 6d 63 iable locale [mc
5c30: 6c 6f 63 61 6c 65 5d 0a 09 7d 20 2d 63 6c 65 61 locale]..} -clea
5c40: 6e 75 70 20 7b 0a 09 20 20 20 20 6d 63 6c 6f 63 nup {.. mcloc
5c50: 61 6c 65 20 24 6c 6f 63 61 6c 65 0a 09 20 20 20 ale $locale..
5c60: 20 6d 63 66 6f 72 67 65 74 70 61 63 6b 61 67 65 mcforgetpackage
5c70: 0a 09 7d 20 2d 62 6f 64 79 20 7b 0a 09 20 20 20 ..} -body {..
5c80: 20 6d 63 6c 6f 63 61 6c 65 20 66 6f 6f 0a 09 20 mclocale foo..
5c90: 20 20 20 73 65 74 20 72 65 73 20 5b 6d 63 70 61 set res [mcpa
5ca0: 63 6b 61 67 65 6c 6f 63 61 6c 65 20 67 65 74 5d ckagelocale get]
5cb0: 0a 09 20 20 20 20 6d 63 70 61 63 6b 61 67 65 6c .. mcpackagel
5cc0: 6f 63 61 6c 65 20 73 65 74 20 62 61 72 0a 09 20 ocale set bar..
5cd0: 20 20 20 6c 61 70 70 65 6e 64 20 72 65 73 20 5b lappend res [
5ce0: 6d 63 70 61 63 6b 61 67 65 6c 6f 63 61 6c 65 20 mcpackagelocale
5cf0: 67 65 74 5d 0a 09 7d 20 2d 72 65 73 75 6c 74 20 get]..} -result
5d00: 7b 66 6f 6f 20 62 61 72 7d 0a 0a 09 74 65 73 74 {foo bar}...test
5d10: 20 6d 73 67 63 61 74 2d 31 32 2e 35 20 7b 6d 63 msgcat-12.5 {mc
5d20: 70 61 63 6b 61 67 65 6c 6f 63 61 6c 65 20 70 72 packagelocale pr
5d30: 65 66 65 72 65 6e 63 65 73 7d 20 2d 73 65 74 75 eferences} -setu
5d40: 70 20 7b 0a 09 20 20 20 20 76 61 72 69 61 62 6c p {.. variabl
5d50: 65 20 6c 6f 63 61 6c 65 20 5b 6d 63 6c 6f 63 61 e locale [mcloca
5d60: 6c 65 5d 0a 09 7d 20 2d 63 6c 65 61 6e 75 70 20 le]..} -cleanup
5d70: 7b 0a 09 20 20 20 20 6d 63 6c 6f 63 61 6c 65 20 {.. mclocale
5d80: 24 6c 6f 63 61 6c 65 0a 09 20 20 20 20 6d 63 66 $locale.. mcf
5d90: 6f 72 67 65 74 70 61 63 6b 61 67 65 0a 09 7d 20 orgetpackage..}
5da0: 2d 62 6f 64 79 20 7b 0a 09 20 20 20 20 6d 63 6c -body {.. mcl
5db0: 6f 63 61 6c 65 20 66 6f 6f 0a 09 20 20 20 20 73 ocale foo.. s
5dc0: 65 74 20 72 65 73 20 5b 6c 69 73 74 20 5b 6d 63 et res [list [mc
5dd0: 70 61 63 6b 61 67 65 6c 6f 63 61 6c 65 20 70 72 packagelocale pr
5de0: 65 66 65 72 65 6e 63 65 73 5d 5d 0a 09 20 20 20 eferences]]..
5df0: 20 6d 63 70 61 63 6b 61 67 65 6c 6f 63 61 6c 65 mcpackagelocale
5e00: 20 73 65 74 20 62 61 72 0a 09 20 20 20 20 6c 61 set bar.. la
5e10: 70 70 65 6e 64 20 72 65 73 20 5b 6d 63 70 61 63 ppend res [mcpac
5e20: 6b 61 67 65 6c 6f 63 61 6c 65 20 70 72 65 66 65 kagelocale prefe
5e30: 72 65 6e 63 65 73 5d 0a 09 7d 20 2d 72 65 73 75 rences]..} -resu
5e40: 6c 74 20 7b 7b 66 6f 6f 20 7b 7d 7d 20 7b 62 61 lt {{foo {}} {ba
5e50: 72 20 7b 7d 7d 7d 0a 0a 09 74 65 73 74 20 6d 73 r {}}}...test ms
5e60: 67 63 61 74 2d 31 32 2e 36 20 7b 6d 63 70 61 63 gcat-12.6 {mcpac
5e70: 6b 61 67 65 6c 6f 63 61 6c 65 20 6c 6f 61 64 65 kagelocale loade
5e80: 64 7d 20 2d 73 65 74 75 70 20 7b 0a 09 20 20 20 d} -setup {..
5e90: 20 76 61 72 69 61 62 6c 65 20 6c 6f 63 61 6c 65 variable locale
5ea0: 20 5b 6d 63 6c 6f 63 61 6c 65 5d 0a 09 7d 20 2d [mclocale]..} -
5eb0: 63 6c 65 61 6e 75 70 20 7b 0a 09 20 20 20 20 6d cleanup {.. m
5ec0: 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 6c 65 0a clocale $locale.
5ed0: 09 20 20 20 20 6d 63 66 6f 72 67 65 74 70 61 63 . mcforgetpac
5ee0: 6b 61 67 65 0a 09 7d 20 2d 62 6f 64 79 20 7b 0a kage..} -body {.
5ef0: 09 20 20 20 20 6d 63 6c 6f 63 61 6c 65 20 22 22 . mclocale ""
5f00: 0a 09 20 20 20 20 6d 63 6c 6f 61 64 65 64 6c 6f .. mcloadedlo
5f10: 63 61 6c 65 73 20 63 6c 65 61 72 0a 09 20 20 20 cales clear..
5f20: 20 6d 63 6c 6f 63 61 6c 65 20 66 6f 6f 0a 09 20 mclocale foo..
5f30: 20 20 20 23 20 54 68 65 20 72 65 73 75 6c 74 20 # The result
5f40: 69 73 20 70 6f 73 69 74 69 6f 6e 20 69 6e 64 65 is position inde
5f50: 70 65 6e 64 65 6e 74 20 73 6f 20 73 6f 72 74 0a pendent so sort.
5f60: 09 20 20 20 20 73 65 74 20 72 65 73 20 5b 6c 69 . set res [li
5f70: 73 74 20 5b 6c 73 6f 72 74 20 5b 6d 63 70 61 63 st [lsort [mcpac
5f80: 6b 61 67 65 6c 6f 63 61 6c 65 20 6c 6f 61 64 65 kagelocale loade
5f90: 64 5d 5d 5d 0a 09 20 20 20 20 6d 63 70 61 63 6b d]]].. mcpack
5fa0: 61 67 65 6c 6f 63 61 6c 65 20 73 65 74 20 62 61 agelocale set ba
5fb0: 72 0a 09 20 20 20 20 6c 61 70 70 65 6e 64 20 72 r.. lappend r
5fc0: 65 73 20 5b 6c 73 6f 72 74 20 5b 6d 63 70 61 63 es [lsort [mcpac
5fd0: 6b 61 67 65 6c 6f 63 61 6c 65 20 6c 6f 61 64 65 kagelocale loade
5fe0: 64 5d 5d 0a 09 7d 20 2d 72 65 73 75 6c 74 20 7b d]]..} -result {
5ff0: 7b 7b 7d 20 66 6f 6f 7d 20 7b 7b 7d 20 62 61 72 {{} foo} {{} bar
6000: 20 66 6f 6f 7d 7d 0a 0a 09 74 65 73 74 20 6d 73 foo}}...test ms
6010: 67 63 61 74 2d 31 32 2e 37 20 7b 6d 63 70 61 63 gcat-12.7 {mcpac
6020: 6b 61 67 65 6c 6f 63 61 6c 65 20 69 73 73 65 74 kagelocale isset
6030: 7d 20 2d 73 65 74 75 70 20 7b 0a 09 20 20 20 20 } -setup {..
6040: 76 61 72 69 61 62 6c 65 20 6c 6f 63 61 6c 65 20 variable locale
6050: 5b 6d 63 6c 6f 63 61 6c 65 5d 0a 09 7d 20 2d 63 [mclocale]..} -c
6060: 6c 65 61 6e 75 70 20 7b 0a 09 20 20 20 20 6d 63 leanup {.. mc
6070: 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 6c 65 0a 09 locale $locale..
6080: 20 20 20 20 6d 63 66 6f 72 67 65 74 70 61 63 6b mcforgetpack
6090: 61 67 65 0a 09 7d 20 2d 62 6f 64 79 20 7b 0a 09 age..} -body {..
60a0: 20 20 20 20 6d 63 6c 6f 63 61 6c 65 20 66 6f 6f mclocale foo
60b0: 0a 09 20 20 20 20 73 65 74 20 72 65 73 20 5b 6d .. set res [m
60c0: 63 70 61 63 6b 61 67 65 6c 6f 63 61 6c 65 20 69 cpackagelocale i
60d0: 73 73 65 74 5d 0a 09 20 20 20 20 6d 63 70 61 63 sset].. mcpac
60e0: 6b 61 67 65 6c 6f 63 61 6c 65 20 73 65 74 20 62 kagelocale set b
60f0: 61 72 0a 09 20 20 20 20 6c 61 70 70 65 6e 64 20 ar.. lappend
6100: 72 65 73 20 5b 6d 63 70 61 63 6b 61 67 65 6c 6f res [mcpackagelo
6110: 63 61 6c 65 20 69 73 73 65 74 5d 0a 09 7d 20 2d cale isset]..} -
6120: 72 65 73 75 6c 74 20 7b 30 20 31 7d 0a 0a 09 74 result {0 1}...t
6130: 65 73 74 20 6d 73 67 63 61 74 2d 31 32 2e 38 20 est msgcat-12.8
6140: 7b 6d 63 70 61 63 6b 61 67 65 6c 6f 63 61 6c 65 {mcpackagelocale
6150: 20 75 6e 73 65 74 7d 20 2d 73 65 74 75 70 20 7b unset} -setup {
6160: 0a 09 20 20 20 20 76 61 72 69 61 62 6c 65 20 6c .. variable l
6170: 6f 63 61 6c 65 20 5b 6d 63 6c 6f 63 61 6c 65 5d ocale [mclocale]
6180: 0a 09 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 ..} -cleanup {..
6190: 20 20 20 20 6d 63 6c 6f 63 61 6c 65 20 24 6c 6f mclocale $lo
61a0: 63 61 6c 65 0a 09 20 20 20 20 6d 63 66 6f 72 67 cale.. mcforg
61b0: 65 74 70 61 63 6b 61 67 65 0a 09 7d 20 2d 62 6f etpackage..} -bo
61c0: 64 79 20 7b 0a 09 20 20 20 20 6d 63 70 61 63 6b dy {.. mcpack
61d0: 61 67 65 6c 6f 63 61 6c 65 20 73 65 74 20 62 61 agelocale set ba
61e0: 72 0a 09 20 20 20 20 73 65 74 20 72 65 73 20 5b r.. set res [
61f0: 6d 63 70 61 63 6b 61 67 65 6c 6f 63 61 6c 65 20 mcpackagelocale
6200: 69 73 73 65 74 5d 0a 09 20 20 20 20 6d 63 70 61 isset].. mcpa
6210: 63 6b 61 67 65 6c 6f 63 61 6c 65 20 75 6e 73 65 ckagelocale unse
6220: 74 0a 09 20 20 20 20 6c 61 70 70 65 6e 64 20 72 t.. lappend r
6230: 65 73 20 5b 6d 63 70 61 63 6b 61 67 65 6c 6f 63 es [mcpackageloc
6240: 61 6c 65 20 69 73 73 65 74 5d 0a 09 7d 20 2d 72 ale isset]..} -r
6250: 65 73 75 6c 74 20 7b 31 20 30 7d 0a 0a 09 74 65 esult {1 0}...te
6260: 73 74 20 6d 73 67 63 61 74 2d 31 32 2e 39 20 7b st msgcat-12.9 {
6270: 6d 63 70 61 63 6b 61 67 65 6c 6f 63 61 6c 65 20 mcpackagelocale
6280: 70 72 65 73 65 6e 74 7d 20 2d 73 65 74 75 70 20 present} -setup
6290: 7b 0a 09 20 20 20 20 76 61 72 69 61 62 6c 65 20 {.. variable
62a0: 6c 6f 63 61 6c 65 20 5b 6d 63 6c 6f 63 61 6c 65 locale [mclocale
62b0: 5d 0a 09 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a ]..} -cleanup {.
62c0: 09 20 20 20 20 6d 63 6c 6f 63 61 6c 65 20 24 6c . mclocale $l
62d0: 6f 63 61 6c 65 0a 09 20 20 20 20 6d 63 66 6f 72 ocale.. mcfor
62e0: 67 65 74 70 61 63 6b 61 67 65 0a 09 7d 20 2d 62 getpackage..} -b
62f0: 6f 64 79 20 7b 0a 09 20 20 20 20 6d 63 6c 6f 63 ody {.. mcloc
6300: 61 6c 65 20 22 22 0a 09 20 20 20 20 6d 63 6c 6f ale "".. mclo
6310: 61 64 65 64 6c 6f 63 61 6c 65 73 20 63 6c 65 61 adedlocales clea
6320: 72 0a 09 20 20 20 20 6d 63 6c 6f 63 61 6c 65 20 r.. mclocale
6330: 66 6f 6f 0a 09 20 20 20 20 73 65 74 20 72 65 73 foo.. set res
6340: 20 5b 6d 63 70 61 63 6b 61 67 65 6c 6f 63 61 6c [mcpackagelocal
6350: 65 20 70 72 65 73 65 6e 74 20 66 6f 6f 5d 0a 09 e present foo]..
6360: 20 20 20 20 6c 61 70 70 65 6e 64 20 72 65 73 20 lappend res
6370: 5b 6d 63 70 61 63 6b 61 67 65 6c 6f 63 61 6c 65 [mcpackagelocale
6380: 20 70 72 65 73 65 6e 74 20 62 61 72 5d 0a 09 20 present bar]..
6390: 20 20 20 6d 63 70 61 63 6b 61 67 65 6c 6f 63 61 mcpackageloca
63a0: 6c 65 20 73 65 74 20 62 61 72 0a 09 20 20 20 20 le set bar..
63b0: 6c 61 70 70 65 6e 64 20 72 65 73 20 5b 6d 63 70 lappend res [mcp
63c0: 61 63 6b 61 67 65 6c 6f 63 61 6c 65 20 70 72 65 ackagelocale pre
63d0: 73 65 6e 74 20 66 6f 6f 5d 5c 0a 09 09 20 20 20 sent foo]\...
63e0: 20 5b 6d 63 70 61 63 6b 61 67 65 6c 6f 63 61 6c [mcpackagelocal
63f0: 65 20 70 72 65 73 65 6e 74 20 62 61 72 5d 0a 09 e present bar]..
6400: 7d 20 2d 72 65 73 75 6c 74 20 7b 31 20 30 20 31 } -result {1 0 1
6410: 20 31 7d 0a 0a 09 74 65 73 74 20 6d 73 67 63 61 1}...test msgca
6420: 74 2d 31 32 2e 31 30 20 7b 6d 63 70 61 63 6b 61 t-12.10 {mcpacka
6430: 67 65 6c 6f 63 61 6c 65 20 63 6c 65 61 72 7d 20 gelocale clear}
6440: 2d 73 65 74 75 70 20 7b 0a 09 20 20 20 20 76 61 -setup {.. va
6450: 72 69 61 62 6c 65 20 6c 6f 63 61 6c 65 20 5b 6d riable locale [m
6460: 63 6c 6f 63 61 6c 65 5d 0a 09 7d 20 2d 63 6c 65 clocale]..} -cle
6470: 61 6e 75 70 20 7b 0a 09 20 20 20 20 6d 63 6c 6f anup {.. mclo
6480: 63 61 6c 65 20 24 6c 6f 63 61 6c 65 0a 09 20 20 cale $locale..
6490: 20 20 6d 63 66 6f 72 67 65 74 70 61 63 6b 61 67 mcforgetpackag
64a0: 65 0a 09 7d 20 2d 62 6f 64 79 20 7b 0a 09 20 20 e..} -body {..
64b0: 20 20 6d 63 6c 6f 63 61 6c 65 20 22 22 0a 09 20 mclocale ""..
64c0: 20 20 20 6d 63 6c 6f 61 64 65 64 6c 6f 63 61 6c mcloadedlocal
64d0: 65 73 20 63 6c 65 61 72 0a 09 20 20 20 20 6d 63 es clear.. mc
64e0: 6c 6f 63 61 6c 65 20 66 6f 6f 0a 09 20 20 20 20 locale foo..
64f0: 6d 63 70 61 63 6b 61 67 65 6c 6f 63 61 6c 65 20 mcpackagelocale
6500: 73 65 74 20 62 61 72 0a 09 20 20 20 20 6d 63 70 set bar.. mcp
6510: 61 63 6b 61 67 65 6c 6f 63 61 6c 65 20 63 6c 65 ackagelocale cle
6520: 61 72 0a 09 20 20 20 20 6c 69 73 74 20 5b 6d 63 ar.. list [mc
6530: 70 61 63 6b 61 67 65 6c 6f 63 61 6c 65 20 70 72 packagelocale pr
6540: 65 73 65 6e 74 20 66 6f 6f 5d 20 5b 6d 63 70 61 esent foo] [mcpa
6550: 63 6b 61 67 65 6c 6f 63 61 6c 65 20 70 72 65 73 ckagelocale pres
6560: 65 6e 74 20 62 61 72 5d 0a 09 7d 20 2d 72 65 73 ent bar]..} -res
6570: 75 6c 74 20 7b 30 20 31 7d 0a 0a 09 74 65 73 74 ult {0 1}...test
6580: 20 6d 73 67 63 61 74 2d 31 32 2e 31 31 20 7b 6d msgcat-12.11 {m
6590: 63 70 61 63 6b 61 67 65 6c 6f 63 61 6c 65 20 63 cpackagelocale c
65a0: 75 73 74 6f 6d 20 70 72 65 66 65 72 65 6e 63 65 ustom preference
65b0: 73 7d 20 2d 73 65 74 75 70 20 7b 0a 09 20 20 20 s} -setup {..
65c0: 20 76 61 72 69 61 62 6c 65 20 6c 6f 63 61 6c 65 variable locale
65d0: 20 5b 6d 63 6c 6f 63 61 6c 65 5d 0a 09 7d 20 2d [mclocale]..} -
65e0: 63 6c 65 61 6e 75 70 20 7b 0a 09 20 20 20 20 6d cleanup {.. m
65f0: 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 6c 65 0a clocale $locale.
6600: 09 20 20 20 20 6d 63 66 6f 72 67 65 74 70 61 63 . mcforgetpac
6610: 6b 61 67 65 0a 09 7d 20 2d 62 6f 64 79 20 7b 0a kage..} -body {.
6620: 09 20 20 20 20 6d 63 6c 6f 63 61 6c 65 20 66 6f . mclocale fo
6630: 6f 0a 09 20 20 20 20 73 65 74 20 72 65 73 20 5b o.. set res [
6640: 6c 69 73 74 20 5b 6d 63 70 61 63 6b 61 67 65 6c list [mcpackagel
6650: 6f 63 61 6c 65 20 70 72 65 66 65 72 65 6e 63 65 ocale preference
6660: 73 5d 5d 0a 09 20 20 20 20 6d 63 70 61 63 6b 61 s]].. mcpacka
6670: 67 65 6c 6f 63 61 6c 65 20 70 72 65 66 65 72 65 gelocale prefere
6680: 6e 63 65 73 20 62 61 72 20 7b 7d 0a 09 20 20 20 nces bar {}..
6690: 20 6c 61 70 70 65 6e 64 20 72 65 73 20 5b 6d 63 lappend res [mc
66a0: 70 61 63 6b 61 67 65 6c 6f 63 61 6c 65 20 70 72 packagelocale pr
66b0: 65 66 65 72 65 6e 63 65 73 5d 0a 09 7d 20 2d 72 eferences]..} -r
66c0: 65 73 75 6c 74 20 7b 7b 66 6f 6f 20 7b 7d 7d 20 esult {{foo {}}
66d0: 7b 62 61 72 20 7b 7d 7d 7d 0a 0a 09 74 65 73 74 {bar {}}}...test
66e0: 20 6d 73 67 63 61 74 2d 31 32 2e 31 32 20 7b 6d msgcat-12.12 {m
66f0: 63 70 61 63 6b 61 67 65 6c 6f 63 61 6c 65 20 70 cpackagelocale p
6700: 72 65 66 65 72 65 6e 63 65 73 20 2d 3e 20 6e 6f references -> no
6710: 20 69 73 73 65 74 7d 20 2d 73 65 74 75 70 20 7b isset} -setup {
6720: 0a 09 20 20 20 20 76 61 72 69 61 62 6c 65 20 6c .. variable l
6730: 6f 63 61 6c 65 20 5b 6d 63 6c 6f 63 61 6c 65 5d ocale [mclocale]
6740: 0a 09 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 ..} -cleanup {..
6750: 20 20 20 20 6d 63 6c 6f 63 61 6c 65 20 24 6c 6f mclocale $lo
6760: 63 61 6c 65 0a 09 20 20 20 20 6d 63 66 6f 72 67 cale.. mcforg
6770: 65 74 70 61 63 6b 61 67 65 0a 09 7d 20 2d 62 6f etpackage..} -bo
6780: 64 79 20 7b 0a 09 20 20 20 20 6d 63 6c 6f 63 61 dy {.. mcloca
6790: 6c 65 20 66 6f 6f 0a 09 20 20 20 20 6d 63 70 61 le foo.. mcpa
67a0: 63 6b 61 67 65 6c 6f 63 61 6c 65 20 70 72 65 66 ckagelocale pref
67b0: 65 72 65 6e 63 65 73 0a 09 20 20 20 20 6d 63 70 erences.. mcp
67c0: 61 63 6b 61 67 65 6c 6f 63 61 6c 65 20 69 73 73 ackagelocale iss
67d0: 65 74 0a 09 7d 20 2d 72 65 73 75 6c 74 20 7b 30 et..} -result {0
67e0: 7d 0a 0a 0a 20 20 20 20 23 20 54 65 73 74 73 20 }... # Tests
67f0: 6d 73 67 63 61 74 2d 31 33 2e 2a 3a 20 5b 6d 63 msgcat-13.*: [mc
6800: 70 61 63 6b 61 67 65 63 6f 6e 66 69 67 20 73 75 packageconfig su
6810: 62 63 6d 64 73 5d 0a 0a 09 74 65 73 74 20 6d 73 bcmds]...test ms
6820: 67 63 61 74 2d 31 33 2e 31 20 7b 6d 63 70 61 63 gcat-13.1 {mcpac
6830: 6b 61 67 65 63 6f 6e 66 69 67 20 6e 6f 20 73 75 kageconfig no su
6840: 62 63 6f 6d 6d 61 6e 64 7d 20 2d 62 6f 64 79 20 bcommand} -body
6850: 7b 0a 09 20 20 20 20 6d 63 70 61 63 6b 61 67 65 {.. mcpackage
6860: 63 6f 6e 66 69 67 0a 09 7d 20 2d 72 65 74 75 72 config..} -retur
6870: 6e 43 6f 64 65 73 20 31 5c 0a 09 2d 72 65 73 75 nCodes 1\..-resu
6880: 6c 74 20 7b 77 72 6f 6e 67 20 23 20 61 72 67 73 lt {wrong # args
6890: 3a 20 73 68 6f 75 6c 64 20 62 65 20 22 6d 63 70 : should be "mcp
68a0: 61 63 6b 61 67 65 63 6f 6e 66 69 67 20 73 75 62 ackageconfig sub
68b0: 63 6f 6d 6d 61 6e 64 20 6f 70 74 69 6f 6e 20 3f command option ?
68c0: 76 61 6c 75 65 3f 22 7d 0a 0a 09 74 65 73 74 20 value?"}...test
68d0: 6d 73 67 63 61 74 2d 31 33 2e 32 20 7b 6d 63 6c msgcat-13.2 {mcl
68e0: 70 61 63 6b 61 67 65 63 6f 6e 66 69 67 20 77 72 packageconfig wr
68f0: 6f 6e 67 20 73 75 62 63 6f 6d 6d 61 6e 64 7d 20 ong subcommand}
6900: 2d 62 6f 64 79 20 7b 0a 09 20 20 20 20 6d 63 70 -body {.. mcp
6910: 61 63 6b 61 67 65 63 6f 6e 66 69 67 20 6a 75 6e ackageconfig jun
6920: 6b 20 6d 63 66 6f 6c 64 65 72 0a 09 7d 20 2d 72 k mcfolder..} -r
6930: 65 74 75 72 6e 43 6f 64 65 73 20 31 5c 0a 09 2d eturnCodes 1\..-
6940: 72 65 73 75 6c 74 20 7b 75 6e 6b 6e 6f 77 6e 20 result {unknown
6950: 73 75 62 63 6f 6d 6d 61 6e 64 20 22 6a 75 6e 6b subcommand "junk
6960: 22 3a 20 6d 75 73 74 20 62 65 20 67 65 74 2c 20 ": must be get,
6970: 69 73 73 65 74 2c 20 73 65 74 2c 20 6f 72 20 75 isset, set, or u
6980: 6e 73 65 74 7d 0a 0a 09 74 65 73 74 20 6d 73 67 nset}...test msg
6990: 63 61 74 2d 31 33 2e 33 20 7b 6d 63 6c 70 61 63 cat-13.3 {mclpac
69a0: 6b 61 67 65 63 6f 6e 66 69 67 20 77 72 6f 6e 67 kageconfig wrong
69b0: 20 6f 70 74 69 6f 6e 7d 20 2d 62 6f 64 79 20 7b option} -body {
69c0: 0a 09 20 20 20 20 6d 63 70 61 63 6b 61 67 65 63 .. mcpackagec
69d0: 6f 6e 66 69 67 20 67 65 74 20 6a 75 6e 6b 0a 09 onfig get junk..
69e0: 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 31 } -returnCodes 1
69f0: 5c 0a 09 2d 72 65 73 75 6c 74 20 7b 62 61 64 20 \..-result {bad
6a00: 6f 70 74 69 6f 6e 20 22 6a 75 6e 6b 22 3a 20 6d option "junk": m
6a10: 75 73 74 20 62 65 20 6d 63 66 6f 6c 64 65 72 2c ust be mcfolder,
6a20: 20 6c 6f 61 64 63 6d 64 2c 20 63 68 61 6e 67 65 loadcmd, change
6a30: 63 6d 64 2c 20 6f 72 20 75 6e 6b 6e 6f 77 6e 63 cmd, or unknownc
6a40: 6d 64 7d 0a 0a 09 74 65 73 74 20 6d 73 67 63 61 md}...test msgca
6a50: 74 2d 31 33 2e 34 20 7b 6d 63 70 61 63 6b 61 67 t-13.4 {mcpackag
6a60: 65 63 6f 6e 66 69 67 20 67 65 74 7d 20 2d 73 65 econfig get} -se
6a70: 74 75 70 20 7b 0a 09 20 20 20 20 6d 63 66 6f 72 tup {.. mcfor
6a80: 67 65 74 70 61 63 6b 61 67 65 0a 09 7d 20 2d 63 getpackage..} -c
6a90: 6c 65 61 6e 75 70 20 7b 0a 09 20 20 20 20 6d 63 leanup {.. mc
6aa0: 66 6f 72 67 65 74 70 61 63 6b 61 67 65 0a 09 7d forgetpackage..}
6ab0: 20 2d 62 6f 64 79 20 7b 0a 09 20 20 20 20 6d 63 -body {.. mc
6ac0: 70 61 63 6b 61 67 65 63 6f 6e 66 69 67 20 73 65 packageconfig se
6ad0: 74 20 6c 6f 61 64 63 6d 64 20 22 22 0a 09 20 20 t loadcmd ""..
6ae0: 20 20 6d 63 70 61 63 6b 61 67 65 63 6f 6e 66 69 mcpackageconfi
6af0: 67 20 67 65 74 20 6c 6f 61 64 63 6d 64 0a 09 7d g get loadcmd..}
6b00: 20 2d 72 65 73 75 6c 74 20 7b 7d 0a 0a 09 74 65 -result {}...te
6b10: 73 74 20 6d 73 67 63 61 74 2d 31 33 2e 35 20 7b st msgcat-13.5 {
6b20: 6d 63 70 61 63 6b 61 67 65 63 6f 6e 66 69 67 20 mcpackageconfig
6b30: 28 69 73 2f 75 6e 29 73 65 74 7d 20 2d 73 65 74 (is/un)set} -set
6b40: 75 70 20 7b 0a 09 20 20 20 20 6d 63 66 6f 72 67 up {.. mcforg
6b50: 65 74 70 61 63 6b 61 67 65 0a 09 7d 20 2d 63 6c etpackage..} -cl
6b60: 65 61 6e 75 70 20 7b 0a 09 20 20 20 20 6d 63 66 eanup {.. mcf
6b70: 6f 72 67 65 74 70 61 63 6b 61 67 65 0a 09 7d 20 orgetpackage..}
6b80: 2d 62 6f 64 79 20 7b 0a 09 20 20 20 20 73 65 74 -body {.. set
6b90: 20 72 65 73 20 5b 6d 63 70 61 63 6b 61 67 65 63 res [mcpackagec
6ba0: 6f 6e 66 69 67 20 69 73 73 65 74 20 6c 6f 61 64 onfig isset load
6bb0: 63 6d 64 5d 0a 09 20 20 20 20 6c 61 70 70 65 6e cmd].. lappen
6bc0: 64 20 72 65 73 20 5b 6d 63 70 61 63 6b 61 67 65 d res [mcpackage
6bd0: 63 6f 6e 66 69 67 20 73 65 74 20 6c 6f 61 64 63 config set loadc
6be0: 6d 64 20 22 22 5d 0a 09 20 20 20 20 6c 61 70 70 md ""].. lapp
6bf0: 65 6e 64 20 72 65 73 20 5b 6d 63 70 61 63 6b 61 end res [mcpacka
6c00: 67 65 63 6f 6e 66 69 67 20 69 73 73 65 74 20 6c geconfig isset l
6c10: 6f 61 64 63 6d 64 5d 0a 09 20 20 20 20 6d 63 70 oadcmd].. mcp
6c20: 61 63 6b 61 67 65 63 6f 6e 66 69 67 20 75 6e 73 ackageconfig uns
6c30: 65 74 20 6c 6f 61 64 63 6d 64 0a 09 20 20 20 20 et loadcmd..
6c40: 6c 61 70 70 65 6e 64 20 72 65 73 20 5b 6d 63 70 lappend res [mcp
6c50: 61 63 6b 61 67 65 63 6f 6e 66 69 67 20 69 73 73 ackageconfig iss
6c60: 65 74 20 6c 6f 61 64 63 6d 64 5d 0a 09 7d 20 2d et loadcmd]..} -
6c70: 72 65 73 75 6c 74 20 7b 30 20 30 20 31 20 30 7d result {0 0 1 0}
6c80: 0a 0a 20 20 20 20 23 20 6f 70 74 69 6f 6e 20 6d .. # option m
6c90: 63 66 6f 6c 64 65 72 20 69 73 20 61 6c 72 65 61 cfolder is alrea
6ca0: 64 79 20 74 65 73 74 65 64 20 77 69 74 68 20 35 dy tested with 5
6cb0: 2e 31 31 0a 0a 20 20 20 20 23 20 54 65 73 74 73 .11.. # Tests
6cc0: 20 6d 73 67 63 61 74 2d 31 34 2e 2a 3a 20 63 61 msgcat-14.*: ca
6cd0: 6c 6c 62 61 63 6b 73 3a 20 6c 6f 61 64 63 6d 64 llbacks: loadcmd
6ce0: 2c 20 63 68 61 6e 67 65 63 6d 64 2c 20 75 6e 6b , changecmd, unk
6cf0: 6e 6f 77 6e 63 6d 64 0a 0a 20 20 20 20 23 20 54 nowncmd.. # T
6d00: 68 69 73 20 72 6f 75 74 69 6e 65 20 69 73 20 75 his routine is u
6d10: 73 65 64 20 61 73 20 62 67 65 72 72 6f 72 20 61 sed as bgerror a
6d20: 6e 64 20 62 79 20 64 69 72 65 63 74 20 63 61 6c nd by direct cal
6d30: 6c 62 61 63 6b 20 69 6e 76 6f 63 61 74 69 6f 6e lback invocation
6d40: 0a 20 20 20 20 70 72 6f 63 20 63 61 6c 6c 62 61 . proc callba
6d50: 63 6b 70 72 6f 63 20 61 72 67 73 20 7b 0a 09 76 ckproc args {..v
6d60: 61 72 69 61 62 6c 65 20 72 65 73 75 6c 74 76 61 ariable resultva
6d70: 72 69 61 62 6c 65 0a 09 73 65 74 20 72 65 73 75 riable..set resu
6d80: 6c 74 76 61 72 69 61 62 6c 65 20 24 61 72 67 73 ltvariable $args
6d90: 0a 20 20 20 20 7d 0a 20 20 20 20 70 72 6f 63 20 . }. proc
6da0: 63 61 6c 6c 62 61 63 6b 66 61 69 6c 70 72 6f 63 callbackfailproc
6db0: 20 61 72 67 73 20 7b 0a 09 72 65 74 75 72 6e 20 args {..return
6dc0: 2d 63 6f 64 65 20 65 72 72 6f 72 20 66 61 69 6c -code error fail
6dd0: 0a 20 20 20 20 7d 0a 20 20 20 20 73 65 74 20 62 . }. set b
6de0: 67 65 72 72 6f 72 73 61 76 65 64 20 5b 69 6e 74 gerrorsaved [int
6df0: 65 72 70 20 62 67 65 72 72 6f 72 20 7b 7d 5d 0a erp bgerror {}].
6e00: 20 20 20 20 69 6e 74 65 72 70 20 62 67 65 72 72 interp bgerr
6e10: 6f 72 20 7b 7d 20 5b 6e 61 6d 65 73 70 61 63 65 or {} [namespace
6e20: 20 63 6f 64 65 20 63 61 6c 6c 62 61 63 6b 70 72 code callbackpr
6e30: 6f 63 5d 0a 0a 20 20 20 20 76 61 72 69 61 62 6c oc].. variabl
6e40: 65 20 6c 6f 63 61 6c 65 0a 20 20 20 20 69 66 20 e locale. if
6e50: 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 20 6c 6f {![info exist lo
6e60: 63 61 6c 65 5d 7d 20 7b 20 73 65 74 20 6c 6f 63 cale]} { set loc
6e70: 61 6c 65 20 5b 6d 63 6c 6f 63 61 6c 65 5d 20 7d ale [mclocale] }
6e80: 0a 0a 09 74 65 73 74 20 6d 73 67 63 61 74 2d 31 ...test msgcat-1
6e90: 34 2e 31 20 7b 69 6e 76 6f 63 61 74 69 6f 6e 20 4.1 {invocation
6ea0: 6c 6f 61 64 63 6d 64 7d 20 2d 73 65 74 75 70 20 loadcmd} -setup
6eb0: 7b 0a 09 20 20 20 20 6d 63 66 6f 72 67 65 74 70 {.. mcforgetp
6ec0: 61 63 6b 61 67 65 0a 09 20 20 20 20 6d 63 6c 6f ackage.. mclo
6ed0: 63 61 6c 65 20 24 6c 6f 63 61 6c 65 0a 09 20 20 cale $locale..
6ee0: 20 20 6d 63 6c 6f 63 61 6c 65 20 22 22 0a 09 20 mclocale ""..
6ef0: 20 20 20 6d 63 6c 6f 61 64 65 64 6c 6f 63 61 6c mcloadedlocal
6f00: 65 73 20 63 6c 65 61 72 0a 09 20 20 20 20 73 65 es clear.. se
6f10: 74 20 72 65 73 75 6c 74 76 61 72 69 61 62 6c 65 t resultvariable
6f20: 20 22 22 0a 09 7d 20 2d 63 6c 65 61 6e 75 70 20 ""..} -cleanup
6f30: 7b 0a 09 20 20 20 20 6d 63 66 6f 72 67 65 74 70 {.. mcforgetp
6f40: 61 63 6b 61 67 65 0a 09 7d 20 2d 62 6f 64 79 20 ackage..} -body
6f50: 7b 0a 09 20 20 20 20 6d 63 70 61 63 6b 61 67 65 {.. mcpackage
6f60: 63 6f 6e 66 69 67 20 73 65 74 20 6c 6f 61 64 63 config set loadc
6f70: 6d 64 20 5b 6e 61 6d 65 73 70 61 63 65 20 63 6f md [namespace co
6f80: 64 65 20 63 61 6c 6c 62 61 63 6b 70 72 6f 63 5d de callbackproc]
6f90: 0a 09 20 20 20 20 6d 63 6c 6f 63 61 6c 65 20 66 .. mclocale f
6fa0: 6f 6f 5f 62 61 72 0a 09 20 20 20 20 6c 73 6f 72 oo_bar.. lsor
6fb0: 74 20 24 72 65 73 75 6c 74 76 61 72 69 61 62 6c t $resultvariabl
6fc0: 65 0a 09 7d 20 2d 72 65 73 75 6c 74 20 7b 66 6f e..} -result {fo
6fd0: 6f 20 66 6f 6f 5f 62 61 72 7d 0a 0a 09 74 65 73 o foo_bar}...tes
6fe0: 74 20 6d 73 67 63 61 74 2d 31 34 2e 32 20 7b 69 t msgcat-14.2 {i
6ff0: 6e 76 6f 63 61 74 69 6f 6e 20 66 61 69 6c 65 64 nvocation failed
7000: 20 69 6e 20 6c 6f 61 64 63 6d 64 7d 20 2d 73 65 in loadcmd} -se
7010: 74 75 70 20 7b 0a 09 20 20 20 20 6d 63 66 6f 72 tup {.. mcfor
7020: 67 65 74 70 61 63 6b 61 67 65 0a 09 20 20 20 20 getpackage..
7030: 6d 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 6c 65 mclocale $locale
7040: 0a 09 20 20 20 20 6d 63 6c 6f 63 61 6c 65 20 22 .. mclocale "
7050: 22 0a 09 20 20 20 20 6d 63 6c 6f 61 64 65 64 6c ".. mcloadedl
7060: 6f 63 61 6c 65 73 20 63 6c 65 61 72 0a 09 7d 20 ocales clear..}
7070: 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 20 20 20 20 -cleanup {..
7080: 6d 63 66 6f 72 67 65 74 70 61 63 6b 61 67 65 0a mcforgetpackage.
7090: 09 20 20 20 20 61 66 74 65 72 20 63 61 6e 63 65 . after cance
70a0: 6c 20 73 65 74 20 5b 6e 61 6d 65 73 70 61 63 65 l set [namespace
70b0: 20 63 75 72 72 65 6e 74 5d 3a 3a 72 65 73 75 6c current]::resul
70c0: 74 76 61 72 69 61 62 6c 65 20 74 69 6d 65 6f 75 tvariable timeou
70d0: 74 0a 09 7d 20 2d 62 6f 64 79 20 7b 0a 09 20 20 t..} -body {..
70e0: 20 20 6d 63 70 61 63 6b 61 67 65 63 6f 6e 66 69 mcpackageconfi
70f0: 67 20 73 65 74 20 6c 6f 61 64 63 6d 64 20 5b 6e g set loadcmd [n
7100: 61 6d 65 73 70 61 63 65 20 63 6f 64 65 20 63 61 amespace code ca
7110: 6c 6c 62 61 63 6b 66 61 69 6c 70 72 6f 63 5d 0a llbackfailproc].
7120: 09 20 20 20 20 6d 63 6c 6f 63 61 6c 65 20 66 6f . mclocale fo
7130: 6f 5f 62 61 72 0a 09 20 20 20 20 23 20 6c 65 74 o_bar.. # let
7140: 20 74 68 65 20 62 67 65 72 72 6f 72 20 72 75 6e the bgerror run
7150: 0a 09 20 20 20 20 61 66 74 65 72 20 31 30 30 20 .. after 100
7160: 73 65 74 20 5b 6e 61 6d 65 73 70 61 63 65 20 63 set [namespace c
7170: 75 72 72 65 6e 74 5d 3a 3a 72 65 73 75 6c 74 76 urrent]::resultv
7180: 61 72 69 61 62 6c 65 20 74 69 6d 65 6f 75 74 0a ariable timeout.
7190: 09 20 20 20 20 76 77 61 69 74 20 5b 6e 61 6d 65 . vwait [name
71a0: 73 70 61 63 65 20 63 75 72 72 65 6e 74 5d 3a 3a space current]::
71b0: 72 65 73 75 6c 74 76 61 72 69 61 62 6c 65 0a 09 resultvariable..
71c0: 20 20 20 20 6c 61 73 73 69 67 6e 20 24 72 65 73 lassign $res
71d0: 75 6c 74 76 61 72 69 61 62 6c 65 20 65 72 72 20 ultvariable err
71e0: 65 72 72 64 69 63 74 0a 09 20 20 20 20 6c 69 73 errdict.. lis
71f0: 74 20 24 65 72 72 20 5b 64 69 63 74 20 67 65 74 t $err [dict get
7200: 20 24 65 72 72 64 69 63 74 20 2d 63 6f 64 65 5d $errdict -code]
7210: 0a 09 7d 20 2d 72 65 73 75 6c 74 20 7b 66 61 69 ..} -result {fai
7220: 6c 20 31 7d 0a 0a 09 74 65 73 74 20 6d 73 67 63 l 1}...test msgc
7230: 61 74 2d 31 34 2e 33 20 7b 69 6e 76 6f 63 61 74 at-14.3 {invocat
7240: 69 6f 6e 20 63 68 61 6e 67 65 63 6d 64 7d 20 2d ion changecmd} -
7250: 73 65 74 75 70 20 7b 0a 09 20 20 20 20 6d 63 66 setup {.. mcf
7260: 6f 72 67 65 74 70 61 63 6b 61 67 65 0a 09 20 20 orgetpackage..
7270: 20 20 6d 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 mclocale $loca
7280: 6c 65 0a 09 20 20 20 20 6d 63 6c 6f 63 61 6c 65 le.. mclocale
7290: 20 22 22 0a 09 20 20 20 20 73 65 74 20 72 65 73 "".. set res
72a0: 75 6c 74 76 61 72 69 61 62 6c 65 20 22 22 0a 09 ultvariable ""..
72b0: 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 20 20 } -cleanup {..
72c0: 20 20 6d 63 66 6f 72 67 65 74 70 61 63 6b 61 67 mcforgetpackag
72d0: 65 0a 09 7d 20 2d 62 6f 64 79 20 7b 0a 09 20 20 e..} -body {..
72e0: 20 20 6d 63 70 61 63 6b 61 67 65 63 6f 6e 66 69 mcpackageconfi
72f0: 67 20 73 65 74 20 63 68 61 6e 67 65 63 6d 64 20 g set changecmd
7300: 5b 6e 61 6d 65 73 70 61 63 65 20 63 6f 64 65 20 [namespace code
7310: 63 61 6c 6c 62 61 63 6b 70 72 6f 63 5d 0a 09 20 callbackproc]..
7320: 20 20 20 6d 63 6c 6f 63 61 6c 65 20 66 6f 6f 5f mclocale foo_
7330: 62 61 72 0a 09 20 20 20 20 73 65 74 20 72 65 73 bar.. set res
7340: 75 6c 74 76 61 72 69 61 62 6c 65 0a 09 7d 20 2d ultvariable..} -
7350: 72 65 73 75 6c 74 20 7b 66 6f 6f 5f 62 61 72 20 result {foo_bar
7360: 66 6f 6f 20 7b 7d 7d 0a 0a 09 74 65 73 74 20 6d foo {}}...test m
7370: 73 67 63 61 74 2d 31 34 2e 34 20 7b 69 6e 76 6f sgcat-14.4 {invo
7380: 63 61 74 69 6f 6e 20 75 6e 6b 6e 6f 77 6e 63 6d cation unknowncm
7390: 64 7d 20 2d 73 65 74 75 70 20 7b 0a 09 20 20 20 d} -setup {..
73a0: 20 6d 63 66 6f 72 67 65 74 70 61 63 6b 61 67 65 mcforgetpackage
73b0: 0a 09 20 20 20 20 6d 63 6c 6f 63 61 6c 65 20 24 .. mclocale $
73c0: 6c 6f 63 61 6c 65 0a 09 20 20 20 20 6d 63 6c 6f locale.. mclo
73d0: 63 61 6c 65 20 22 22 0a 09 20 20 20 20 6d 63 6c cale "".. mcl
73e0: 6f 61 64 65 64 6c 6f 63 61 6c 65 73 20 63 6c 65 oadedlocales cle
73f0: 61 72 0a 09 20 20 20 20 73 65 74 20 72 65 73 75 ar.. set resu
7400: 6c 74 76 61 72 69 61 62 6c 65 20 22 22 0a 09 7d ltvariable ""..}
7410: 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 20 20 20 -cleanup {..
7420: 20 6d 63 66 6f 72 67 65 74 70 61 63 6b 61 67 65 mcforgetpackage
7430: 0a 09 7d 20 2d 62 6f 64 79 20 7b 0a 09 20 20 20 ..} -body {..
7440: 20 6d 63 70 61 63 6b 61 67 65 63 6f 6e 66 69 67 mcpackageconfig
7450: 20 73 65 74 20 75 6e 6b 6e 6f 77 6e 63 6d 64 20 set unknowncmd
7460: 5b 6e 61 6d 65 73 70 61 63 65 20 63 6f 64 65 20 [namespace code
7470: 63 61 6c 6c 62 61 63 6b 70 72 6f 63 5d 0a 09 20 callbackproc]..
7480: 20 20 20 6d 63 6c 6f 63 61 6c 65 20 66 6f 6f 5f mclocale foo_
7490: 62 61 72 0a 09 20 20 20 20 6d 63 20 6b 31 20 70 bar.. mc k1 p
74a0: 31 0a 09 20 20 20 20 73 65 74 20 72 65 73 75 6c 1.. set resul
74b0: 74 76 61 72 69 61 62 6c 65 0a 09 7d 20 2d 72 65 tvariable..} -re
74c0: 73 75 6c 74 20 7b 66 6f 6f 5f 62 61 72 20 6b 31 sult {foo_bar k1
74d0: 20 70 31 7d 0a 0a 09 74 65 73 74 20 6d 73 67 63 p1}...test msgc
74e0: 61 74 2d 31 34 2e 35 20 7b 64 69 73 61 62 6c 65 at-14.5 {disable
74f0: 20 67 6c 6f 62 61 6c 20 75 6e 6b 6e 6f 77 6e 63 global unknownc
7500: 6d 64 7d 20 2d 73 65 74 75 70 20 7b 0a 09 20 20 md} -setup {..
7510: 20 20 6d 63 66 6f 72 67 65 74 70 61 63 6b 61 67 mcforgetpackag
7520: 65 0a 09 20 20 20 20 6d 63 6c 6f 63 61 6c 65 20 e.. mclocale
7530: 24 6c 6f 63 61 6c 65 0a 09 20 20 20 20 6d 63 6c $locale.. mcl
7540: 6f 63 61 6c 65 20 22 22 0a 09 20 20 20 20 6d 63 ocale "".. mc
7550: 6c 6f 61 64 65 64 6c 6f 63 61 6c 65 73 20 63 6c loadedlocales cl
7560: 65 61 72 0a 09 20 20 20 20 73 65 74 20 72 65 73 ear.. set res
7570: 75 6c 74 76 61 72 69 61 62 6c 65 20 22 22 0a 09 ultvariable ""..
7580: 20 20 20 20 72 65 6e 61 6d 65 20 3a 3a 6d 73 67 rename ::msg
7590: 63 61 74 3a 3a 6d 63 75 6e 6b 6e 6f 77 6e 20 53 cat::mcunknown S
75a0: 61 76 65 64 4d 63 75 6e 6b 6e 6f 77 6e 0a 09 20 avedMcunknown..
75b0: 20 20 20 70 72 6f 63 20 3a 3a 6d 73 67 63 61 74 proc ::msgcat
75c0: 3a 3a 6d 63 75 6e 6b 6e 6f 77 6e 20 7b 64 6f 6d ::mcunknown {dom
75d0: 20 73 7d 20 7b 0a 09 09 72 65 74 75 72 6e 20 75 s} {...return u
75e0: 6e 6b 6e 6f 77 6e 3a 24 64 6f 6d 3a 24 73 0a 09 nknown:$dom:$s..
75f0: 20 20 20 20 7d 0a 09 7d 20 2d 63 6c 65 61 6e 75 }..} -cleanu
7600: 70 20 7b 0a 09 20 20 20 20 6d 63 66 6f 72 67 65 p {.. mcforge
7610: 74 70 61 63 6b 61 67 65 0a 09 20 20 20 20 72 65 tpackage.. re
7620: 6e 61 6d 65 20 3a 3a 6d 73 67 63 61 74 3a 3a 6d name ::msgcat::m
7630: 63 75 6e 6b 6e 6f 77 6e 20 7b 7d 0a 09 20 20 20 cunknown {}..
7640: 20 72 65 6e 61 6d 65 20 53 61 76 65 64 4d 63 75 rename SavedMcu
7650: 6e 6b 6e 6f 77 6e 20 3a 3a 6d 73 67 63 61 74 3a nknown ::msgcat:
7660: 3a 6d 63 75 6e 6b 6e 6f 77 6e 0a 09 7d 20 2d 62 :mcunknown..} -b
7670: 6f 64 79 20 7b 0a 09 20 20 20 20 6d 63 70 61 63 ody {.. mcpac
7680: 6b 61 67 65 63 6f 6e 66 69 67 20 73 65 74 20 75 kageconfig set u
7690: 6e 6b 6e 6f 77 6e 63 6d 64 20 22 22 0a 09 20 20 nknowncmd ""..
76a0: 20 20 6d 63 6c 6f 63 61 6c 65 20 66 6f 6f 5f 62 mclocale foo_b
76b0: 61 72 0a 09 20 20 20 20 6d 63 20 6b 31 25 73 20 ar.. mc k1%s
76c0: 70 31 0a 09 7d 20 2d 72 65 73 75 6c 74 20 7b 6b p1..} -result {k
76d0: 31 70 31 7d 0a 0a 09 74 65 73 74 20 6d 73 67 63 1p1}...test msgc
76e0: 61 74 2d 31 34 2e 36 20 7b 75 6e 6b 6e 6f 77 6e at-14.6 {unknown
76f0: 63 6d 64 20 66 61 69 6c 69 6e 67 7d 20 2d 73 65 cmd failing} -se
7700: 74 75 70 20 7b 0a 09 20 20 20 20 6d 63 66 6f 72 tup {.. mcfor
7710: 67 65 74 70 61 63 6b 61 67 65 0a 09 20 20 20 20 getpackage..
7720: 6d 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 6c 65 mclocale $locale
7730: 0a 09 20 20 20 20 6d 63 6c 6f 63 61 6c 65 20 22 .. mclocale "
7740: 22 0a 09 20 20 20 20 6d 63 6c 6f 61 64 65 64 6c ".. mcloadedl
7750: 6f 63 61 6c 65 73 20 63 6c 65 61 72 0a 09 20 20 ocales clear..
7760: 20 20 73 65 74 20 72 65 73 75 6c 74 76 61 72 69 set resultvari
7770: 61 62 6c 65 20 22 22 0a 09 7d 20 2d 63 6c 65 61 able ""..} -clea
7780: 6e 75 70 20 7b 0a 09 20 20 20 20 6d 63 66 6f 72 nup {.. mcfor
7790: 67 65 74 70 61 63 6b 61 67 65 0a 09 7d 20 2d 62 getpackage..} -b
77a0: 6f 64 79 20 7b 0a 09 20 20 20 20 6d 63 70 61 63 ody {.. mcpac
77b0: 6b 61 67 65 63 6f 6e 66 69 67 20 73 65 74 20 75 kageconfig set u
77c0: 6e 6b 6e 6f 77 6e 63 6d 64 20 5b 6e 61 6d 65 73 nknowncmd [names
77d0: 70 61 63 65 20 63 6f 64 65 20 63 61 6c 6c 62 61 pace code callba
77e0: 63 6b 66 61 69 6c 70 72 6f 63 5d 0a 09 20 20 20 ckfailproc]..
77f0: 20 6d 63 6c 6f 63 61 6c 65 20 66 6f 6f 5f 62 61 mclocale foo_ba
7800: 72 0a 09 20 20 20 20 6d 63 20 6b 31 0a 09 7d 20 r.. mc k1..}
7810: 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 31 5c 0a -returnCodes 1\.
7820: 09 2d 72 65 73 75 6c 74 20 7b 66 61 69 6c 7d 0a .-result {fail}.
7830: 0c 0a 0a 20 20 20 20 23 20 54 65 73 74 73 20 6d ... # Tests m
7840: 73 67 63 61 74 2d 31 35 2e 2a 3a 20 74 63 6c 6f sgcat-15.*: tclo
7850: 6f 20 63 6f 76 65 72 61 67 65 0a 0a 20 20 20 20 o coverage..
7860: 23 20 54 68 65 72 65 20 61 72 65 20 34 20 75 73 # There are 4 us
7870: 65 2d 63 61 73 65 73 2c 20 77 68 65 72 65 20 33 e-cases, where 3
7880: 20 6d 75 73 74 20 62 65 20 74 65 73 74 65 64 20 must be tested
7890: 6e 6f 77 3a 0a 20 20 20 20 23 20 2d 20 6e 61 6d now:. # - nam
78a0: 65 73 70 61 63 65 20 64 65 66 69 6e 65 64 2c 20 espace defined,
78b0: 69 6e 20 63 6c 61 73 73 20 64 65 66 69 6e 69 74 in class definit
78c0: 69 6f 6e 2c 20 63 6c 61 73 73 20 64 65 66 69 6e ion, class defin
78d0: 65 64 20 6f 6f 2c 20 63 6c 61 73 73 6c 65 73 73 ed oo, classless
78e0: 0a 0a 20 20 20 20 74 65 73 74 20 6d 73 67 63 61 .. test msgca
78f0: 74 2d 31 35 2e 31 20 7b 6d 63 20 69 6e 20 63 6c t-15.1 {mc in cl
7900: 61 73 73 20 73 65 74 75 70 7d 20 2d 73 65 74 75 ass setup} -setu
7910: 70 20 7b 0a 09 23 20 66 75 6c 6c 20 6e 61 6d 65 p {..# full name
7920: 73 70 61 63 65 20 69 73 20 3a 3a 6d 73 67 63 61 space is ::msgca
7930: 74 3a 3a 74 65 73 74 3a 62 61 72 0a 09 6e 61 6d t::test:bar..nam
7940: 65 73 70 61 63 65 20 65 76 61 6c 20 62 61 72 20 espace eval bar
7950: 7b 0a 09 20 20 20 20 3a 3a 6d 73 67 63 61 74 3a {.. ::msgcat:
7960: 3a 6d 63 73 65 74 20 66 6f 6f 5f 42 41 52 20 63 :mcset foo_BAR c
7970: 6f 6e 32 20 63 6f 6e 32 62 61 72 0a 09 20 20 20 on2 con2bar..
7980: 20 6f 6f 3a 3a 63 6c 61 73 73 20 63 72 65 61 74 oo::class creat
7990: 65 20 43 6c 61 73 73 43 75 72 0a 09 7d 0a 09 76 e ClassCur..}..v
79a0: 61 72 69 61 62 6c 65 20 6c 6f 63 61 6c 65 20 5b ariable locale [
79b0: 6d 63 6c 6f 63 61 6c 65 5d 0a 09 6d 63 6c 6f 63 mclocale]..mcloc
79c0: 61 6c 65 20 66 6f 6f 5f 42 41 52 0a 20 20 20 20 ale foo_BAR.
79d0: 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 6d 63 } -cleanup {..mc
79e0: 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 6c 65 0a 09 locale $locale..
79f0: 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 62 namespace eval b
7a00: 61 72 20 7b 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 ar {::msgcat::mc
7a10: 66 6f 72 67 65 74 70 61 63 6b 61 67 65 7d 0a 09 forgetpackage}..
7a20: 6e 61 6d 65 73 70 61 63 65 20 64 65 6c 65 74 65 namespace delete
7a30: 20 62 61 72 0a 20 20 20 20 7d 20 2d 62 6f 64 79 bar. } -body
7a40: 20 7b 0a 09 6f 6f 3a 3a 64 65 66 69 6e 65 20 62 {..oo::define b
7a50: 61 72 3a 3a 43 6c 61 73 73 43 75 72 20 6d 73 67 ar::ClassCur msg
7a60: 63 61 74 3a 3a 6d 63 20 63 6f 6e 32 0a 20 20 20 cat::mc con2.
7a70: 20 7d 20 2d 72 65 73 75 6c 74 20 63 6f 6e 32 62 } -result con2b
7a80: 61 72 0a 0a 20 20 20 20 74 65 73 74 20 6d 73 67 ar.. test msg
7a90: 63 61 74 2d 31 35 2e 32 20 7b 6d 63 20 69 6e 20 cat-15.2 {mc in
7aa0: 63 6c 61 73 73 7d 20 2d 73 65 74 75 70 20 7b 0a class} -setup {.
7ab0: 09 23 20 66 75 6c 6c 20 6e 61 6d 65 73 70 61 63 .# full namespac
7ac0: 65 20 69 73 20 3a 3a 6d 73 67 63 61 74 3a 3a 74 e is ::msgcat::t
7ad0: 65 73 74 3a 62 61 72 0a 09 6e 61 6d 65 73 70 61 est:bar..namespa
7ae0: 63 65 20 65 76 61 6c 20 62 61 72 20 7b 0a 09 20 ce eval bar {..
7af0: 20 20 20 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 73 ::msgcat::mcs
7b00: 65 74 20 66 6f 6f 5f 42 41 52 20 63 6f 6e 32 20 et foo_BAR con2
7b10: 63 6f 6e 32 62 61 72 0a 09 20 20 20 20 6f 6f 3a con2bar.. oo:
7b20: 3a 63 6c 61 73 73 20 63 72 65 61 74 65 20 43 6c :class create Cl
7b30: 61 73 73 43 75 72 0a 09 20 20 20 20 6f 6f 3a 3a assCur.. oo::
7b40: 64 65 66 69 6e 65 20 43 6c 61 73 73 43 75 72 20 define ClassCur
7b50: 6d 65 74 68 6f 64 20 6d 65 74 68 6f 64 31 20 7b method method1 {
7b60: 7d 20 7b 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 20 } {::msgcat::mc
7b70: 63 6f 6e 32 7d 0a 09 7d 0a 09 23 20 66 75 6c 6c con2}..}..# full
7b80: 20 6e 61 6d 65 73 70 61 63 65 20 69 73 20 3a 3a namespace is ::
7b90: 6d 73 67 63 61 74 3a 3a 74 65 73 74 3a 62 61 7a msgcat::test:baz
7ba0: 0a 09 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c ..namespace eval
7bb0: 20 62 61 7a 20 7b 0a 09 20 20 20 20 73 65 74 20 baz {.. set
7bc0: 4f 62 6a 43 75 72 20 5b 3a 3a 6d 73 67 63 61 74 ObjCur [::msgcat
7bd0: 3a 3a 74 65 73 74 3a 3a 62 61 72 3a 3a 43 6c 61 ::test::bar::Cla
7be0: 73 73 43 75 72 20 6e 65 77 5d 0a 09 7d 0a 09 76 ssCur new]..}..v
7bf0: 61 72 69 61 62 6c 65 20 6c 6f 63 61 6c 65 20 5b ariable locale [
7c00: 6d 63 6c 6f 63 61 6c 65 5d 0a 09 6d 63 6c 6f 63 mclocale]..mcloc
7c10: 61 6c 65 20 66 6f 6f 5f 42 41 52 0a 20 20 20 20 ale foo_BAR.
7c20: 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 6d 63 } -cleanup {..mc
7c30: 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 6c 65 0a 09 locale $locale..
7c40: 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 62 namespace eval b
7c50: 61 72 20 7b 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 ar {::msgcat::mc
7c60: 66 6f 72 67 65 74 70 61 63 6b 61 67 65 7d 0a 09 forgetpackage}..
7c70: 6e 61 6d 65 73 70 61 63 65 20 64 65 6c 65 74 65 namespace delete
7c80: 20 62 61 72 20 62 61 7a 0a 20 20 20 20 7d 20 2d bar baz. } -
7c90: 62 6f 64 79 20 7b 0a 09 24 62 61 7a 3a 3a 4f 62 body {..$baz::Ob
7ca0: 6a 43 75 72 20 6d 65 74 68 6f 64 31 0a 20 20 20 jCur method1.
7cb0: 20 7d 20 2d 72 65 73 75 6c 74 20 63 6f 6e 32 62 } -result con2b
7cc0: 61 72 0a 0a 20 20 20 20 74 65 73 74 20 6d 73 67 ar.. test msg
7cd0: 63 61 74 2d 31 35 2e 33 20 7b 6d 63 20 69 6e 20 cat-15.3 {mc in
7ce0: 63 6c 61 73 73 6c 65 73 73 20 6f 62 6a 65 63 74 classless object
7cf0: 7d 20 2d 73 65 74 75 70 20 7b 0a 09 23 20 66 75 } -setup {..# fu
7d00: 6c 6c 20 6e 61 6d 65 73 70 61 63 65 20 69 73 20 ll namespace is
7d10: 3a 3a 6d 73 67 63 61 74 3a 3a 74 65 73 74 3a 62 ::msgcat::test:b
7d20: 61 72 0a 09 6e 61 6d 65 73 70 61 63 65 20 65 76 ar..namespace ev
7d30: 61 6c 20 62 61 72 20 7b 0a 09 20 20 20 20 3a 3a al bar {.. ::
7d40: 6d 73 67 63 61 74 3a 3a 6d 63 73 65 74 20 66 6f msgcat::mcset fo
7d50: 6f 5f 42 41 52 20 63 6f 6e 32 20 63 6f 6e 32 62 o_BAR con2 con2b
7d60: 61 72 0a 09 20 20 20 20 6f 6f 3a 3a 6f 62 6a 65 ar.. oo::obje
7d70: 63 74 20 63 72 65 61 74 65 20 4f 62 6a 43 75 72 ct create ObjCur
7d80: 0a 09 20 20 20 20 6f 6f 3a 3a 6f 62 6a 64 65 66 .. oo::objdef
7d90: 69 6e 65 20 4f 62 6a 43 75 72 20 6d 65 74 68 6f ine ObjCur metho
7da0: 64 20 6d 65 74 68 6f 64 31 20 7b 7d 20 7b 3a 3a d method1 {} {::
7db0: 6d 73 67 63 61 74 3a 3a 6d 63 20 63 6f 6e 32 7d msgcat::mc con2}
7dc0: 0a 09 7d 0a 09 76 61 72 69 61 62 6c 65 20 6c 6f ..}..variable lo
7dd0: 63 61 6c 65 20 5b 6d 63 6c 6f 63 61 6c 65 5d 0a cale [mclocale].
7de0: 09 6d 63 6c 6f 63 61 6c 65 20 66 6f 6f 5f 42 41 .mclocale foo_BA
7df0: 52 0a 20 20 20 20 7d 20 2d 63 6c 65 61 6e 75 70 R. } -cleanup
7e00: 20 7b 0a 09 6d 63 6c 6f 63 61 6c 65 20 24 6c 6f {..mclocale $lo
7e10: 63 61 6c 65 0a 09 6e 61 6d 65 73 70 61 63 65 20 cale..namespace
7e20: 65 76 61 6c 20 62 61 72 20 7b 3a 3a 6d 73 67 63 eval bar {::msgc
7e30: 61 74 3a 3a 6d 63 66 6f 72 67 65 74 70 61 63 6b at::mcforgetpack
7e40: 61 67 65 7d 0a 09 6e 61 6d 65 73 70 61 63 65 20 age}..namespace
7e50: 64 65 6c 65 74 65 20 62 61 72 0a 20 20 20 20 7d delete bar. }
7e60: 20 2d 62 6f 64 79 20 7b 0a 09 62 61 72 3a 3a 4f -body {..bar::O
7e70: 62 6a 43 75 72 20 6d 65 74 68 6f 64 31 0a 20 20 bjCur method1.
7e80: 20 20 7d 20 2d 72 65 73 75 6c 74 20 63 6f 6e 32 } -result con2
7e90: 62 61 72 0a 0a 20 20 20 20 74 65 73 74 20 6d 73 bar.. test ms
7ea0: 67 63 61 74 2d 31 35 2e 34 20 7b 6d 63 20 69 6e gcat-15.4 {mc in
7eb0: 20 63 6c 61 73 73 6c 65 73 73 20 6f 62 6a 65 63 classless objec
7ec0: 74 20 77 69 74 68 20 65 78 70 6c 69 63 69 74 65 t with explicite
7ed0: 20 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c 7d namespace eval}
7ee0: 5c 0a 20 20 20 20 2d 73 65 74 75 70 20 7b 0a 09 \. -setup {..
7ef0: 23 20 66 75 6c 6c 20 6e 61 6d 65 73 70 61 63 65 # full namespace
7f00: 20 69 73 20 3a 3a 6d 73 67 63 61 74 3a 3a 74 65 is ::msgcat::te
7f10: 73 74 3a 62 61 72 0a 09 6e 61 6d 65 73 70 61 63 st:bar..namespac
7f20: 65 20 65 76 61 6c 20 62 61 72 20 7b 0a 09 20 20 e eval bar {..
7f30: 20 20 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 73 65 ::msgcat::mcse
7f40: 74 20 66 6f 6f 5f 42 41 52 20 63 6f 6e 32 20 63 t foo_BAR con2 c
7f50: 6f 6e 32 62 61 72 0a 09 20 20 20 20 6f 6f 3a 3a on2bar.. oo::
7f60: 6f 62 6a 65 63 74 20 63 72 65 61 74 65 20 4f 62 object create Ob
7f70: 6a 43 75 72 0a 09 20 20 20 20 6f 6f 3a 3a 6f 62 jCur.. oo::ob
7f80: 6a 64 65 66 69 6e 65 20 4f 62 6a 43 75 72 20 6d jdefine ObjCur m
7f90: 65 74 68 6f 64 20 6d 65 74 68 6f 64 31 20 7b 7d ethod method1 {}
7fa0: 20 7b 0a 09 09 6e 61 6d 65 73 70 61 63 65 20 65 {...namespace e
7fb0: 76 61 6c 20 3a 3a 6d 73 67 63 61 74 3a 3a 74 65 val ::msgcat::te
7fc0: 73 74 3a 3a 62 61 7a 20 7b 0a 09 09 20 20 20 20 st::baz {...
7fd0: 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 20 63 6f 6e ::msgcat::mc con
7fe0: 32 0a 09 09 7d 0a 09 20 20 20 20 7d 0a 09 7d 0a 2...}.. }..}.
7ff0: 09 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 .namespace eval
8000: 62 61 7a 20 7b 0a 09 20 20 20 20 3a 3a 6d 73 67 baz {.. ::msg
8010: 63 61 74 3a 3a 6d 63 73 65 74 20 66 6f 6f 5f 42 cat::mcset foo_B
8020: 41 52 20 63 6f 6e 32 20 63 6f 6e 32 62 61 7a 0a AR con2 con2baz.
8030: 09 7d 0a 09 76 61 72 69 61 62 6c 65 20 6c 6f 63 .}..variable loc
8040: 61 6c 65 20 5b 6d 63 6c 6f 63 61 6c 65 5d 0a 09 ale [mclocale]..
8050: 6d 63 6c 6f 63 61 6c 65 20 66 6f 6f 5f 42 41 52 mclocale foo_BAR
8060: 0a 20 20 20 20 7d 20 2d 63 6c 65 61 6e 75 70 20 . } -cleanup
8070: 7b 0a 09 6d 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 {..mclocale $loc
8080: 61 6c 65 0a 09 6e 61 6d 65 73 70 61 63 65 20 65 ale..namespace e
8090: 76 61 6c 20 62 61 72 20 7b 3a 3a 6d 73 67 63 61 val bar {::msgca
80a0: 74 3a 3a 6d 63 66 6f 72 67 65 74 70 61 63 6b 61 t::mcforgetpacka
80b0: 67 65 7d 0a 09 6e 61 6d 65 73 70 61 63 65 20 65 ge}..namespace e
80c0: 76 61 6c 20 62 61 7a 20 7b 3a 3a 6d 73 67 63 61 val baz {::msgca
80d0: 74 3a 3a 6d 63 66 6f 72 67 65 74 70 61 63 6b 61 t::mcforgetpacka
80e0: 67 65 7d 0a 09 6e 61 6d 65 73 70 61 63 65 20 64 ge}..namespace d
80f0: 65 6c 65 74 65 20 62 61 72 20 62 61 7a 0a 20 20 elete bar baz.
8100: 20 20 7d 20 2d 62 6f 64 79 20 7b 0a 09 62 61 72 } -body {..bar
8110: 3a 3a 4f 62 6a 43 75 72 20 6d 65 74 68 6f 64 31 ::ObjCur method1
8120: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 63 . } -result c
8130: 6f 6e 32 62 61 7a 0a 0a 20 20 20 20 23 20 48 61 on2baz.. # Ha
8140: 4f 20 32 30 32 34 2d 30 37 2d 31 35 20 66 69 78 O 2024-07-15 fix
8150: 20 6d 65 0a 20 20 20 20 23 20 54 69 63 6b 65 74 me. # Ticket
8160: 20 39 31 62 33 61 35 62 62 3a 20 49 20 68 61 76 91b3a5bb: I hav
8170: 65 20 6e 6f 20 69 64 65 61 20 77 68 61 74 20 74 e no idea what t
8180: 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 63 61 73 he following cas
8190: 65 20 73 68 6f 75 6c 64 20 64 6f 2e 0a 20 20 20 e should do..
81a0: 20 23 20 42 75 74 20 63 75 72 72 65 6e 74 6c 79 # But currently
81b0: 2c 20 69 74 20 72 61 69 73 65 73 20 61 6e 20 65 , it raises an e
81c0: 72 72 6f 72 20 61 6e 64 20 74 68 61 74 20 73 68 rror and that sh
81d0: 6f 75 6c 64 20 6e 6f 74 20 68 61 70 70 65 6e 2e ould not happen.
81e0: 0a 20 20 20 20 23 20 54 68 65 20 62 61 63 6b 67 . # The backg
81f0: 72 6f 75 6e 64 20 69 73 20 74 68 65 20 74 6b 6c round is the tkl
8200: 69 62 20 74 6f 6f 6c 74 69 70 20 70 61 63 6b 61 ib tooltip packa
8210: 67 65 2e 0a 20 20 20 20 23 20 54 68 69 73 20 70 ge.. # This p
8220: 61 63 6b 61 67 65 20 63 61 70 74 75 72 65 73 20 ackage captures
8230: 74 68 65 20 63 61 6c 6c 65 72 20 6e 61 6d 65 73 the caller names
8240: 70 61 63 65 20 74 6f 20 6c 61 74 65 72 20 69 6e pace to later in
8250: 76 6f 6b 65 20 6d 73 67 63 61 74 20 77 69 74 68 voke msgcat with
8260: 20 63 75 72 72 65 6e 74 20 64 61 74 61 2e 0a 20 current data..
8270: 20 20 20 23 20 49 66 20 74 68 65 20 63 61 6c 6c # If the call
8280: 65 72 20 6e 61 6d 65 73 70 61 63 65 20 69 73 20 er namespace is
8290: 61 20 6d 65 74 68 6f 64 2c 20 69 74 20 63 75 72 a method, it cur
82a0: 72 65 6e 74 6c 79 20 66 61 69 6c 73 2e 0a 20 20 rently fails..
82b0: 20 20 74 65 73 74 20 6d 73 67 63 61 74 2d 31 35 test msgcat-15
82c0: 2e 35 20 7b 74 69 63 6b 65 74 20 39 31 62 33 61 .5 {ticket 91b3a
82d0: 35 62 62 3a 20 6d 65 74 68 6f 64 20 6e 61 6d 65 5bb: method name
82e0: 73 70 61 63 65 20 72 65 63 6f 72 64 65 64 20 61 space recorded a
82f0: 6e 64 20 65 76 61 6c 75 61 74 65 64 20 67 69 76 nd evaluated giv
8300: 65 73 20 65 72 72 6f 72 7d 5c 0a 20 20 20 20 2d es error}\. -
8310: 73 65 74 75 70 20 7b 0a 09 6f 6f 3a 3a 63 6c 61 setup {..oo::cla
8320: 73 73 20 63 72 65 61 74 65 20 41 70 70 20 7b 7d ss create App {}
8330: 0a 09 6f 6f 3a 3a 64 65 66 69 6e 65 20 41 70 70 ..oo::define App
8340: 20 7b 0a 09 20 20 20 20 63 6f 6e 73 74 72 75 63 {.. construc
8350: 74 6f 72 20 7b 7d 20 7b 20 6d 79 20 61 64 64 5f tor {} { my add_
8360: 6f 6e 65 20 7d 0a 09 20 20 20 20 6d 65 74 68 6f one }.. metho
8370: 64 20 61 64 64 5f 6f 6e 65 20 7b 7d 20 7b 20 72 d add_one {} { r
8380: 65 63 6f 72 64 4d 73 67 63 61 74 20 7d 0a 09 7d ecordMsgcat }..}
8390: 0a 09 70 72 6f 63 20 3a 3a 72 65 63 6f 72 64 4d ..proc ::recordM
83a0: 73 67 63 61 74 20 7b 7d 20 7b 20 73 65 74 20 3a sgcat {} { set :
83b0: 3a 6e 73 63 61 6c 6c 65 72 20 5b 75 70 6c 65 76 :nscaller [uplev
83c0: 65 6c 20 31 20 7b 6e 61 6d 65 73 70 61 63 65 20 el 1 {namespace
83d0: 63 75 72 72 65 6e 74 7d 5d 20 7d 0a 09 73 65 74 current}] }..set
83e0: 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 5b 41 70 application [Ap
83f0: 70 20 6e 65 77 5d 0a 7d 20 2d 63 6c 65 61 6e 75 p new].} -cleanu
8400: 70 20 7b 0a 09 24 61 70 70 6c 69 63 61 74 69 6f p {..$applicatio
8410: 6e 20 64 65 73 74 72 6f 79 0a 09 41 70 70 20 64 n destroy..App d
8420: 65 73 74 72 6f 79 0a 09 75 6e 73 65 74 20 2d 6e estroy..unset -n
8430: 6f 63 6f 6d 70 6c 61 69 6e 20 3a 3a 6e 73 63 61 ocomplain ::nsca
8440: 6c 6c 65 72 0a 09 72 65 6e 61 6d 65 20 3a 3a 72 ller..rename ::r
8450: 65 63 6f 72 64 4d 73 67 63 61 74 20 22 22 0a 20 ecordMsgcat "".
8460: 20 20 20 7d 20 2d 62 6f 64 79 20 7b 0a 09 6e 61 } -body {..na
8470: 6d 65 73 70 61 63 65 20 65 76 61 6c 20 24 3a 3a mespace eval $::
8480: 6e 73 63 61 6c 6c 65 72 20 5b 6c 69 73 74 20 3a nscaller [list :
8490: 3a 6d 73 67 63 61 74 3a 3a 6d 63 20 22 54 65 73 :msgcat::mc "Tes
84a0: 74 22 5d 0a 20 20 20 20 7d 20 2d 72 65 74 75 72 t"]. } -retur
84b0: 6e 43 6f 64 65 73 20 6f 6b 20 2d 72 65 73 75 6c nCodes ok -resul
84c0: 74 20 54 65 73 74 0a 0a 20 20 20 20 23 20 54 65 t Test.. # Te
84d0: 73 74 20 6d 73 67 63 61 74 2d 31 36 2e 2a 3a 20 st msgcat-16.*:
84e0: 63 6f 6d 6d 61 6e 64 20 6d 63 70 61 63 6b 61 67 command mcpackag
84f0: 65 6e 61 6d 65 73 70 61 63 65 67 65 74 0a 0a 20 enamespaceget..
8500: 20 20 20 74 65 73 74 20 6d 73 67 63 61 74 2d 31 test msgcat-1
8510: 36 2e 31 20 7b 6d 63 70 61 63 6b 61 67 65 6e 61 6.1 {mcpackagena
8520: 6d 65 73 70 61 63 65 67 65 74 20 69 6e 20 6e 61 mespaceget in na
8530: 6d 65 73 70 61 63 65 20 70 72 6f 63 65 64 75 72 mespace procedur
8540: 65 7d 20 2d 62 6f 64 79 20 7b 0a 09 6e 61 6d 65 e} -body {..name
8550: 73 70 61 63 65 20 65 76 61 6c 20 62 61 7a 20 7b space eval baz {
8560: 6d 73 67 63 61 74 3a 3a 6d 63 70 61 63 6b 61 67 msgcat::mcpackag
8570: 65 6e 61 6d 65 73 70 61 63 65 67 65 74 7d 0a 20 enamespaceget}.
8580: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 3a 3a 6d } -result ::m
8590: 73 67 63 61 74 3a 3a 74 65 73 74 3a 3a 62 61 7a sgcat::test::baz
85a0: 0a 0a 20 20 20 20 74 65 73 74 20 6d 73 67 63 61 .. test msgca
85b0: 74 2d 31 36 2e 32 20 7b 6d 63 70 61 63 6b 61 67 t-16.2 {mcpackag
85c0: 65 6e 61 6d 65 73 70 61 63 65 67 65 74 20 69 6e enamespaceget in
85d0: 20 63 6c 61 73 73 20 73 65 74 75 70 7d 20 2d 73 class setup} -s
85e0: 65 74 75 70 20 7b 0a 09 6e 61 6d 65 73 70 61 63 etup {..namespac
85f0: 65 20 65 76 61 6c 20 62 61 72 20 7b 0a 09 20 20 e eval bar {..
8600: 20 20 6f 6f 3a 3a 63 6c 61 73 73 20 63 72 65 61 oo::class crea
8610: 74 65 20 43 6c 61 73 73 43 75 72 0a 09 20 20 20 te ClassCur..
8620: 20 6f 6f 3a 3a 64 65 66 69 6e 65 20 43 6c 61 73 oo::define Clas
8630: 73 43 75 72 20 76 61 72 69 61 62 6c 65 20 61 0a sCur variable a.
8640: 09 7d 0a 20 20 20 20 7d 20 2d 63 6c 65 61 6e 75 .}. } -cleanu
8650: 70 20 7b 0a 09 6e 61 6d 65 73 70 61 63 65 20 64 p {..namespace d
8660: 65 6c 65 74 65 20 62 61 72 0a 20 20 20 20 7d 20 elete bar. }
8670: 2d 62 6f 64 79 20 7b 0a 09 6f 6f 3a 3a 64 65 66 -body {..oo::def
8680: 69 6e 65 20 62 61 72 3a 3a 43 6c 61 73 73 43 75 ine bar::ClassCu
8690: 72 20 6d 73 67 63 61 74 3a 3a 6d 63 70 61 63 6b r msgcat::mcpack
86a0: 61 67 65 6e 61 6d 65 73 70 61 63 65 67 65 74 0a agenamespaceget.
86b0: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 3a 3a } -result ::
86c0: 6d 73 67 63 61 74 3a 3a 74 65 73 74 3a 3a 62 61 msgcat::test::ba
86d0: 72 0a 0a 20 20 20 20 74 65 73 74 20 6d 73 67 63 r.. test msgc
86e0: 61 74 2d 31 36 2e 33 20 7b 6d 63 70 61 63 6b 61 at-16.3 {mcpacka
86f0: 67 65 6e 61 6d 65 73 70 61 63 65 67 65 74 20 69 genamespaceget i
8700: 6e 20 63 6c 61 73 73 7d 20 2d 73 65 74 75 70 20 n class} -setup
8710: 7b 0a 09 6e 61 6d 65 73 70 61 63 65 20 65 76 61 {..namespace eva
8720: 6c 20 62 61 72 20 7b 0a 09 20 20 20 20 6f 6f 3a l bar {.. oo:
8730: 3a 63 6c 61 73 73 20 63 72 65 61 74 65 20 43 6c :class create Cl
8740: 61 73 73 43 75 72 0a 09 20 20 20 20 6f 6f 3a 3a assCur.. oo::
8750: 64 65 66 69 6e 65 20 43 6c 61 73 73 43 75 72 20 define ClassCur
8760: 6d 65 74 68 6f 64 20 6d 65 74 68 6f 64 31 20 7b method method1 {
8770: 7d 20 7b 6d 73 67 63 61 74 3a 3a 6d 63 70 61 63 } {msgcat::mcpac
8780: 6b 61 67 65 6e 61 6d 65 73 70 61 63 65 67 65 74 kagenamespaceget
8790: 7d 0a 09 7d 0a 09 6e 61 6d 65 73 70 61 63 65 20 }..}..namespace
87a0: 65 76 61 6c 20 62 61 7a 20 7b 0a 09 20 20 20 20 eval baz {..
87b0: 73 65 74 20 4f 62 6a 43 75 72 20 5b 3a 3a 6d 73 set ObjCur [::ms
87c0: 67 63 61 74 3a 3a 74 65 73 74 3a 3a 62 61 72 3a gcat::test::bar:
87d0: 3a 43 6c 61 73 73 43 75 72 20 6e 65 77 5d 0a 09 :ClassCur new]..
87e0: 7d 0a 20 20 20 20 7d 20 2d 63 6c 65 61 6e 75 70 }. } -cleanup
87f0: 20 7b 0a 09 6e 61 6d 65 73 70 61 63 65 20 64 65 {..namespace de
8800: 6c 65 74 65 20 62 61 72 20 62 61 7a 0a 20 20 20 lete bar baz.
8810: 20 7d 20 2d 62 6f 64 79 20 7b 0a 09 24 62 61 7a } -body {..$baz
8820: 3a 3a 4f 62 6a 43 75 72 20 6d 65 74 68 6f 64 31 ::ObjCur method1
8830: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 3a . } -result :
8840: 3a 6d 73 67 63 61 74 3a 3a 74 65 73 74 3a 3a 62 :msgcat::test::b
8850: 61 72 0a 0a 20 20 20 20 74 65 73 74 20 6d 73 67 ar.. test msg
8860: 63 61 74 2d 31 36 2e 34 20 7b 6d 63 70 61 63 6b cat-16.4 {mcpack
8870: 61 67 65 6e 61 6d 65 73 70 61 63 65 67 65 74 20 agenamespaceget
8880: 69 6e 20 63 6c 61 73 73 6c 65 73 73 20 6f 62 6a in classless obj
8890: 65 63 74 7d 20 2d 73 65 74 75 70 20 7b 0a 09 6e ect} -setup {..n
88a0: 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 62 61 amespace eval ba
88b0: 72 20 7b 0a 09 20 20 20 20 6f 6f 3a 3a 6f 62 6a r {.. oo::obj
88c0: 65 63 74 20 63 72 65 61 74 65 20 4f 62 6a 43 75 ect create ObjCu
88d0: 72 0a 09 20 20 20 20 6f 6f 3a 3a 6f 62 6a 64 65 r.. oo::objde
88e0: 66 69 6e 65 20 4f 62 6a 43 75 72 20 6d 65 74 68 fine ObjCur meth
88f0: 6f 64 20 6d 65 74 68 6f 64 31 20 7b 7d 20 7b 6d od method1 {} {m
8900: 73 67 63 61 74 3a 3a 6d 63 70 61 63 6b 61 67 65 sgcat::mcpackage
8910: 6e 61 6d 65 73 70 61 63 65 67 65 74 7d 0a 09 7d namespaceget}..}
8920: 0a 20 20 20 20 7d 20 2d 63 6c 65 61 6e 75 70 20 . } -cleanup
8930: 7b 0a 09 6e 61 6d 65 73 70 61 63 65 20 64 65 6c {..namespace del
8940: 65 74 65 20 62 61 72 0a 20 20 20 20 7d 20 2d 62 ete bar. } -b
8950: 6f 64 79 20 7b 0a 09 62 61 72 3a 3a 4f 62 6a 43 ody {..bar::ObjC
8960: 75 72 20 6d 65 74 68 6f 64 31 0a 20 20 20 20 7d ur method1. }
8970: 20 2d 72 65 73 75 6c 74 20 3a 3a 6d 73 67 63 61 -result ::msgca
8980: 74 3a 3a 74 65 73 74 3a 3a 62 61 72 0a 0a 20 20 t::test::bar..
8990: 20 20 74 65 73 74 20 6d 73 67 63 61 74 2d 31 36 test msgcat-16
89a0: 2e 35 5c 0a 20 20 20 20 7b 6d 63 70 61 63 6b 61 .5\. {mcpacka
89b0: 67 65 6e 61 6d 65 73 70 61 63 65 67 65 74 20 69 genamespaceget i
89c0: 6e 20 63 6c 61 73 73 6c 65 73 73 20 6f 62 6a 65 n classless obje
89d0: 63 74 20 77 69 74 68 20 65 78 70 6c 69 63 69 74 ct with explicit
89e0: 65 20 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c e namespace eval
89f0: 7d 5c 0a 20 20 20 20 2d 73 65 74 75 70 20 7b 0a }\. -setup {.
8a00: 09 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 .namespace eval
8a10: 62 61 72 20 7b 0a 09 20 20 20 20 6f 6f 3a 3a 6f bar {.. oo::o
8a20: 62 6a 65 63 74 20 63 72 65 61 74 65 20 4f 62 6a bject create Obj
8a30: 43 75 72 0a 09 20 20 20 20 6f 6f 3a 3a 6f 62 6a Cur.. oo::obj
8a40: 64 65 66 69 6e 65 20 4f 62 6a 43 75 72 20 6d 65 define ObjCur me
8a50: 74 68 6f 64 20 6d 65 74 68 6f 64 31 20 7b 7d 20 thod method1 {}
8a60: 7b 0a 09 09 6e 61 6d 65 73 70 61 63 65 20 65 76 {...namespace ev
8a70: 61 6c 20 3a 3a 6d 73 67 63 61 74 3a 3a 74 65 73 al ::msgcat::tes
8a80: 74 3a 3a 62 61 7a 20 7b 0a 09 09 20 20 20 20 6d t::baz {... m
8a90: 73 67 63 61 74 3a 3a 6d 63 70 61 63 6b 61 67 65 sgcat::mcpackage
8aa0: 6e 61 6d 65 73 70 61 63 65 67 65 74 0a 09 09 7d namespaceget...}
8ab0: 0a 09 20 20 20 20 7d 0a 09 7d 0a 20 20 20 20 7d .. }..}. }
8ac0: 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 6e 61 6d -cleanup {..nam
8ad0: 65 73 70 61 63 65 20 64 65 6c 65 74 65 20 62 61 espace delete ba
8ae0: 72 20 62 61 7a 0a 20 20 20 20 7d 20 2d 62 6f 64 r baz. } -bod
8af0: 79 20 7b 0a 09 62 61 72 3a 3a 4f 62 6a 43 75 72 y {..bar::ObjCur
8b00: 20 6d 65 74 68 6f 64 31 0a 20 20 20 20 7d 20 2d method1. } -
8b10: 72 65 73 75 6c 74 20 3a 3a 6d 73 67 63 61 74 3a result ::msgcat:
8b20: 3a 74 65 73 74 3a 3a 62 61 7a 0a 0a 0c 0a 20 20 :test::baz....
8b30: 20 20 23 20 54 65 73 74 20 6d 73 67 63 61 74 2d # Test msgcat-
8b40: 31 37 2e 2a 3a 20 6d 63 6e 20 63 6f 6d 6d 61 6e 17.*: mcn comman
8b50: 64 0a 0a 20 20 20 20 74 65 73 74 20 6d 73 67 63 d.. test msgc
8b60: 61 74 2d 31 37 2e 31 20 7b 6d 63 6e 20 6e 6f 20 at-17.1 {mcn no
8b70: 70 61 72 61 6d 65 74 65 72 73 7d 20 2d 62 6f 64 parameters} -bod
8b80: 79 20 7b 0a 09 6d 63 6e 0a 20 20 20 20 7d 20 2d y {..mcn. } -
8b90: 72 65 74 75 72 6e 43 6f 64 65 73 20 31 5c 0a 20 returnCodes 1\.
8ba0: 20 20 20 2d 72 65 73 75 6c 74 20 7b 77 72 6f 6e -result {wron
8bb0: 67 20 23 20 61 72 67 73 3a 20 73 68 6f 75 6c 64 g # args: should
8bc0: 20 62 65 20 22 6d 63 6e 20 6e 73 20 73 72 63 20 be "mcn ns src
8bd0: 3f 61 72 67 20 2e 2e 2e 3f 22 7d 0a 0a 20 20 20 ?arg ...?"}..
8be0: 20 74 65 73 74 20 6d 73 67 63 61 74 2d 31 37 2e test msgcat-17.
8bf0: 32 20 7b 6d 63 6e 7d 20 2d 73 65 74 75 70 20 7b 2 {mcn} -setup {
8c00: 0a 09 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c ..namespace eval
8c10: 20 62 61 72 20 7b 3a 3a 6d 73 67 63 61 74 3a 3a bar {::msgcat::
8c20: 6d 63 73 65 74 20 66 6f 6f 5f 42 41 52 20 63 6f mcset foo_BAR co
8c30: 6e 31 20 63 6f 6e 31 62 61 72 7d 0a 09 76 61 72 n1 con1bar}..var
8c40: 69 61 62 6c 65 20 6c 6f 63 61 6c 65 20 5b 6d 63 iable locale [mc
8c50: 6c 6f 63 61 6c 65 5d 0a 09 6d 63 6c 6f 63 61 6c locale]..mclocal
8c60: 65 20 66 6f 6f 5f 42 41 52 0a 20 20 20 20 7d 20 e foo_BAR. }
8c70: 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 6d 63 6c 6f -cleanup {..mclo
8c80: 63 61 6c 65 20 24 6c 6f 63 61 6c 65 0a 20 20 20 cale $locale.
8c90: 20 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 6d 73 } -body {..::ms
8ca0: 67 63 61 74 3a 3a 6d 63 6e 20 5b 6e 61 6d 65 73 gcat::mcn [names
8cb0: 70 61 63 65 20 63 75 72 72 65 6e 74 5d 3a 3a 62 pace current]::b
8cc0: 61 72 20 63 6f 6e 31 0a 20 20 20 20 7d 20 2d 72 ar con1. } -r
8cd0: 65 73 75 6c 74 20 63 6f 6e 31 62 61 72 0a 0a 0c esult con1bar...
8ce0: 0a 20 20 20 20 69 6e 74 65 72 70 20 62 67 65 72 . interp bger
8cf0: 72 6f 72 20 7b 7d 20 24 62 67 65 72 72 6f 72 73 ror {} $bgerrors
8d00: 61 76 65 64 0a 0a 20 20 20 20 23 20 54 65 73 74 aved.. # Test
8d10: 73 20 6d 73 67 63 61 74 2d 31 38 2e 2a 3a 20 5b s msgcat-18.*: [
8d20: 6d 63 75 74 69 6c 5d 0a 0a 20 20 20 20 74 65 73 mcutil].. tes
8d30: 74 20 6d 73 67 63 61 74 2d 31 38 2e 31 20 7b 6d t msgcat-18.1 {m
8d40: 63 75 74 69 6c 20 2d 20 6e 6f 20 61 72 67 75 6d cutil - no argum
8d50: 65 6e 74 7d 20 2d 62 6f 64 79 20 7b 0a 09 6d 63 ent} -body {..mc
8d60: 75 74 69 6c 0a 20 20 20 20 7d 20 2d 72 65 74 75 util. } -retu
8d70: 72 6e 43 6f 64 65 73 20 31 5c 0a 20 20 20 20 2d rnCodes 1\. -
8d80: 72 65 73 75 6c 74 20 7b 77 72 6f 6e 67 20 23 20 result {wrong #
8d90: 61 72 67 73 3a 20 73 68 6f 75 6c 64 20 62 65 20 args: should be
8da0: 22 6d 63 75 74 69 6c 20 73 75 62 63 6f 6d 6d 61 "mcutil subcomma
8db0: 6e 64 20 3f 61 72 67 20 2e 2e 2e 3f 22 7d 0a 0a nd ?arg ...?"}..
8dc0: 20 20 20 20 74 65 73 74 20 6d 73 67 63 61 74 2d test msgcat-
8dd0: 31 38 2e 32 20 7b 6d 63 75 74 69 6c 20 2d 20 77 18.2 {mcutil - w
8de0: 72 6f 6e 67 20 61 72 67 75 6d 65 6e 74 7d 20 2d rong argument} -
8df0: 62 6f 64 79 20 7b 0a 09 6d 63 75 74 69 6c 20 6a body {..mcutil j
8e00: 75 6e 6b 0a 20 20 20 20 7d 20 2d 72 65 74 75 72 unk. } -retur
8e10: 6e 43 6f 64 65 73 20 31 5c 0a 20 20 20 20 2d 72 nCodes 1\. -r
8e20: 65 73 75 6c 74 20 7b 75 6e 6b 6e 6f 77 6e 20 73 esult {unknown s
8e30: 75 62 63 6f 6d 6d 61 6e 64 20 22 6a 75 6e 6b 22 ubcommand "junk"
8e40: 3a 20 6d 75 73 74 20 62 65 20 67 65 74 70 72 65 : must be getpre
8e50: 66 65 72 65 6e 63 65 73 2c 20 6f 72 20 67 65 74 ferences, or get
8e60: 73 79 73 74 65 6d 6c 6f 63 61 6c 65 7d 0a 0a 20 systemlocale}..
8e70: 20 20 20 74 65 73 74 20 6d 73 67 63 61 74 2d 31 test msgcat-1
8e80: 38 2e 33 20 7b 6d 63 75 74 69 6c 20 2d 20 70 61 8.3 {mcutil - pa
8e90: 72 74 69 61 6c 20 61 72 67 75 6d 65 6e 74 7d 20 rtial argument}
8ea0: 2d 62 6f 64 79 20 7b 0a 09 6d 63 75 74 69 6c 20 -body {..mcutil
8eb0: 67 65 74 73 79 73 74 65 6d 0a 20 20 20 20 7d 20 getsystem. }
8ec0: 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 31 5c 0a -returnCodes 1\.
8ed0: 20 20 20 20 2d 72 65 73 75 6c 74 20 7b 75 6e 6b -result {unk
8ee0: 6e 6f 77 6e 20 73 75 62 63 6f 6d 6d 61 6e 64 20 nown subcommand
8ef0: 22 67 65 74 73 79 73 74 65 6d 22 3a 20 6d 75 73 "getsystem": mus
8f00: 74 20 62 65 20 67 65 74 70 72 65 66 65 72 65 6e t be getpreferen
8f10: 63 65 73 2c 20 6f 72 20 67 65 74 73 79 73 74 65 ces, or getsyste
8f20: 6d 6c 6f 63 61 6c 65 7d 0a 0a 20 20 20 20 74 65 mlocale}.. te
8f30: 73 74 20 6d 73 67 63 61 74 2d 31 38 2e 34 20 7b st msgcat-18.4 {
8f40: 6d 63 75 74 69 6c 20 67 65 74 70 72 65 66 65 72 mcutil getprefer
8f50: 65 6e 63 65 73 20 2d 20 6e 6f 20 61 72 67 75 6d ences - no argum
8f60: 65 6e 74 7d 20 2d 62 6f 64 79 20 7b 0a 09 6d 63 ent} -body {..mc
8f70: 75 74 69 6c 20 67 65 74 70 72 65 66 65 72 65 6e util getpreferen
8f80: 63 65 73 0a 20 20 20 20 7d 20 2d 72 65 74 75 72 ces. } -retur
8f90: 6e 43 6f 64 65 73 20 31 5c 0a 20 20 20 20 2d 72 nCodes 1\. -r
8fa0: 65 73 75 6c 74 20 7b 77 72 6f 6e 67 20 23 20 61 esult {wrong # a
8fb0: 72 67 73 3a 20 73 68 6f 75 6c 64 20 62 65 20 22 rgs: should be "
8fc0: 6d 63 75 74 69 6c 20 67 65 74 70 72 65 66 65 72 mcutil getprefer
8fd0: 65 6e 63 65 73 20 6c 6f 63 61 6c 65 22 7d 0a 0a ences locale"}..
8fe0: 20 20 20 20 74 65 73 74 20 6d 73 67 63 61 74 2d test msgcat-
8ff0: 31 38 2e 35 20 7b 6d 63 75 74 69 6c 20 67 65 74 18.5 {mcutil get
9000: 70 72 65 66 65 72 65 6e 63 65 73 20 2d 20 44 45 preferences - DE
9010: 5f 64 65 7d 20 2d 62 6f 64 79 20 7b 0a 09 6d 63 _de} -body {..mc
9020: 75 74 69 6c 20 67 65 74 70 72 65 66 65 72 65 6e util getpreferen
9030: 63 65 73 20 44 45 5f 64 65 0a 20 20 20 20 7d 20 ces DE_de. }
9040: 2d 72 65 73 75 6c 74 20 7b 64 65 5f 64 65 20 64 -result {de_de d
9050: 65 20 7b 7d 7d 0a 0a 20 20 20 20 74 65 73 74 20 e {}}.. test
9060: 6d 73 67 63 61 74 2d 31 38 2e 36 20 7b 6d 63 75 msgcat-18.6 {mcu
9070: 74 69 6c 20 67 65 74 73 79 73 74 65 6d 6c 6f 63 til getsystemloc
9080: 61 6c 65 20 2d 20 77 72 6f 6e 67 20 61 72 67 75 ale - wrong argu
9090: 6d 65 6e 74 7d 20 2d 62 6f 64 79 20 7b 0a 09 6d ment} -body {..m
90a0: 63 75 74 69 6c 20 67 65 74 73 79 73 74 65 6d 6c cutil getsysteml
90b0: 6f 63 61 6c 65 20 44 45 5f 64 65 0a 20 20 20 20 ocale DE_de.
90c0: 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 31 } -returnCodes 1
90d0: 5c 0a 20 20 20 20 2d 72 65 73 75 6c 74 20 7b 77 \. -result {w
90e0: 72 6f 6e 67 20 23 20 61 72 67 73 3a 20 73 68 6f rong # args: sho
90f0: 75 6c 64 20 62 65 20 22 6d 63 75 74 69 6c 20 67 uld be "mcutil g
9100: 65 74 73 79 73 74 65 6d 6c 6f 63 61 6c 65 22 7d etsystemlocale"}
9110: 0a 0a 20 20 20 20 23 20 54 68 65 20 72 65 73 75 .. # The resu
9120: 6c 74 20 69 73 20 73 79 73 74 65 6d 20 64 65 70 lt is system dep
9130: 65 6e 64 65 6e 74 0a 20 20 20 20 23 20 53 6f 20 endent. # So
9140: 6a 75 73 74 20 74 65 73 74 20 69 66 20 69 74 20 just test if it
9150: 72 75 6e 73 0a 20 20 20 20 23 20 54 68 65 20 65 runs. # The e
9160: 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 nvironment varia
9170: 62 6c 65 20 76 65 72 73 69 6f 6e 20 77 61 73 20 ble version was
9180: 74 65 73 74 20 77 69 74 68 20 74 65 73 74 20 30 test with test 0
9190: 2e 78 0a 20 20 20 20 74 65 73 74 20 6d 73 67 63 .x. test msgc
91a0: 61 74 2d 31 38 2e 37 20 7b 6d 63 75 74 69 6c 20 at-18.7 {mcutil
91b0: 67 65 74 73 79 73 74 65 6d 6c 6f 63 61 6c 65 7d getsystemlocale}
91c0: 20 2d 62 6f 64 79 20 7b 0a 09 6d 63 75 74 69 6c -body {..mcutil
91d0: 20 67 65 74 73 79 73 74 65 6d 6c 6f 63 61 6c 65 getsystemlocale
91e0: 0a 09 73 65 74 20 6f 6b 20 6f 6b 0a 20 20 20 20 ..set ok ok.
91f0: 7d 20 2d 72 65 73 75 6c 74 20 7b 6f 6b 7d 0a 0a } -result {ok}..
9200: 0a 20 20 20 20 63 6c 65 61 6e 75 70 54 65 73 74 . cleanupTest
9210: 73 0a 7d 0a 6e 61 6d 65 73 70 61 63 65 20 64 65 s.}.namespace de
9220: 6c 65 74 65 20 3a 3a 6d 73 67 63 61 74 3a 3a 74 lete ::msgcat::t
9230: 65 73 74 0a 72 65 74 75 72 6e 0a 0a 23 20 4c 6f est.return..# Lo
9240: 63 61 6c 20 56 61 72 69 61 62 6c 65 73 3a 0a 23 cal Variables:.#
9250: 20 6d 6f 64 65 3a 20 74 63 6c 0a 23 20 45 6e 64 mode: tcl.# End
9260: 3a 0a :.