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 28 63 29 20 31 39 39 38 pyright (c) 1998
00d0: 20 4d 61 72 6b 20 48 61 72 72 69 73 6f 6e 2e 0a Mark Harrison..
00e0: 23 20 43 6f 70 79 72 69 67 68 74 20 28 63 29 20 # Copyright (c)
00f0: 31 39 39 38 2d 31 39 39 39 20 62 79 20 53 63 72 1998-1999 by Scr
0100: 69 70 74 69 63 73 20 43 6f 72 70 6f 72 61 74 69 iptics Corporati
0110: 6f 6e 2e 0a 23 20 43 6f 6e 74 72 69 62 75 74 69 on..# Contributi
0120: 6f 6e 73 20 66 72 6f 6d 20 44 6f 6e 20 50 6f 72 ons from Don Por
0130: 74 65 72 2c 20 4e 49 53 54 2c 20 32 30 30 32 2e ter, NIST, 2002.
0140: 20 20 28 6e 6f 74 20 73 75 62 6a 65 63 74 20 74 (not subject t
0150: 6f 20 55 53 20 63 6f 70 79 72 69 67 68 74 29 0a o US copyright).
0160: 23 0a 23 20 53 65 65 20 74 68 65 20 66 69 6c 65 #.# See the file
0170: 20 22 6c 69 63 65 6e 73 65 2e 74 65 72 6d 73 22 "license.terms"
0180: 20 66 6f 72 20 69 6e 66 6f 72 6d 61 74 69 6f 6e for information
0190: 20 6f 6e 20 75 73 61 67 65 20 61 6e 64 20 72 65 on usage and re
01a0: 64 69 73 74 72 69 62 75 74 69 6f 6e 0a 23 20 6f distribution.# o
01b0: 66 20 74 68 69 73 20 66 69 6c 65 2c 20 61 6e 64 f this file, and
01c0: 20 66 6f 72 20 61 20 44 49 53 43 4c 41 49 4d 45 for a DISCLAIME
01d0: 52 20 4f 46 20 41 4c 4c 20 57 41 52 52 41 4e 54 R OF ALL WARRANT
01e0: 49 45 53 2e 0a 23 0a 23 20 4e 6f 74 65 20 74 68 IES..#.# Note th
01f0: 61 74 20 61 66 74 65 72 20 72 75 6e 6e 69 6e 67 at after running
0200: 20 74 68 65 73 65 20 74 65 73 74 73 2c 20 65 6e these tests, en
0210: 74 72 69 65 73 20 77 69 6c 6c 20 62 65 20 6c 65 tries will be le
0220: 66 74 20 62 65 68 69 6e 64 20 69 6e 20 74 68 65 ft behind in the
0230: 0a 23 20 6d 65 73 73 61 67 65 20 63 61 74 61 6c .# message catal
0240: 6f 67 73 20 66 6f 72 20 6c 6f 63 61 6c 65 73 20 ogs for locales
0250: 66 6f 6f 2c 20 66 6f 6f 5f 42 41 52 2c 20 61 6e foo, foo_BAR, an
0260: 64 20 66 6f 6f 5f 42 41 52 5f 62 61 7a 2e 0a 0a d foo_BAR_baz...
0270: 70 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 package require
0280: 54 63 6c 20 38 2e 35 2d 0a 69 66 20 7b 5b 63 61 Tcl 8.5-.if {[ca
0290: 74 63 68 20 7b 70 61 63 6b 61 67 65 20 72 65 71 tch {package req
02a0: 75 69 72 65 20 74 63 6c 74 65 73 74 20 32 7d 5d uire tcltest 2}]
02b0: 7d 20 7b 0a 20 20 20 20 70 75 74 73 20 73 74 64 } {. puts std
02c0: 65 72 72 20 22 53 6b 69 70 70 69 6e 67 20 74 65 err "Skipping te
02d0: 73 74 73 20 69 6e 20 5b 69 6e 66 6f 20 73 63 72 sts in [info scr
02e0: 69 70 74 5d 2e 20 20 74 63 6c 74 65 73 74 20 32 ipt]. tcltest 2
02f0: 20 72 65 71 75 69 72 65 64 2e 22 0a 20 20 20 20 required.".
0300: 72 65 74 75 72 6e 0a 7d 0a 69 66 20 7b 5b 63 61 return.}.if {[ca
0310: 74 63 68 20 7b 70 61 63 6b 61 67 65 20 72 65 71 tch {package req
0320: 75 69 72 65 20 6d 73 67 63 61 74 20 31 2e 36 7d uire msgcat 1.6}
0330: 5d 7d 20 7b 0a 20 20 20 20 70 75 74 73 20 73 74 ]} {. puts st
0340: 64 65 72 72 20 22 53 6b 69 70 70 69 6e 67 20 74 derr "Skipping t
0350: 65 73 74 73 20 69 6e 20 5b 69 6e 66 6f 20 73 63 ests in [info sc
0360: 72 69 70 74 5d 2e 20 20 4e 6f 20 6d 73 67 63 61 ript]. No msgca
0370: 74 20 31 2e 36 20 66 6f 75 6e 64 20 74 6f 20 74 t 1.6 found to t
0380: 65 73 74 2e 22 0a 20 20 20 20 72 65 74 75 72 6e est.". return
0390: 0a 7d 0a 0a 6e 61 6d 65 73 70 61 63 65 20 65 76 .}..namespace ev
03a0: 61 6c 20 3a 3a 6d 73 67 63 61 74 3a 3a 74 65 73 al ::msgcat::tes
03b0: 74 20 7b 0a 20 20 20 20 6e 61 6d 65 73 70 61 63 t {. namespac
03c0: 65 20 69 6d 70 6f 72 74 20 3a 3a 6d 73 67 63 61 e import ::msgca
03d0: 74 3a 3a 2a 0a 20 20 20 20 6e 61 6d 65 73 70 61 t::*. namespa
03e0: 63 65 20 69 6d 70 6f 72 74 20 3a 3a 74 63 6c 74 ce import ::tclt
03f0: 65 73 74 3a 3a 74 65 73 74 0a 20 20 20 20 6e 61 est::test. na
0400: 6d 65 73 70 61 63 65 20 69 6d 70 6f 72 74 20 3a mespace import :
0410: 3a 74 63 6c 74 65 73 74 3a 3a 63 6c 65 61 6e 75 :tcltest::cleanu
0420: 70 54 65 73 74 73 0a 20 20 20 20 6e 61 6d 65 73 pTests. names
0430: 70 61 63 65 20 69 6d 70 6f 72 74 20 3a 3a 74 63 pace import ::tc
0440: 6c 74 65 73 74 3a 3a 74 65 6d 70 6f 72 61 72 79 ltest::temporary
0450: 44 69 72 65 63 74 6f 72 79 0a 20 20 20 20 6e 61 Directory. na
0460: 6d 65 73 70 61 63 65 20 69 6d 70 6f 72 74 20 3a mespace import :
0470: 3a 74 63 6c 74 65 73 74 3a 3a 6d 61 6b 65 2a 0a :tcltest::make*.
0480: 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20 69 6d namespace im
0490: 70 6f 72 74 20 3a 3a 74 63 6c 74 65 73 74 3a 3a port ::tcltest::
04a0: 72 65 6d 6f 76 65 2a 0a 0a 20 20 20 20 23 20 54 remove*.. # T
04b0: 65 73 74 73 20 6d 73 67 63 61 74 2d 30 2e 2a 3a ests msgcat-0.*:
04c0: 20 6c 6f 63 61 6c 65 20 69 6e 69 74 69 61 6c 69 locale initiali
04d0: 7a 61 74 69 6f 6e 0a 0a 20 20 20 20 23 20 43 61 zation.. # Ca
04e0: 6c 63 75 6c 61 74 65 20 73 65 74 20 6f 66 20 61 lculate set of a
04f0: 6c 6c 20 70 65 72 6d 75 74 61 74 69 6f 6e 73 20 ll permutations
0500: 6f 66 20 61 20 6c 69 73 74 0a 20 20 20 20 23 20 of a list. #
0510: 50 6f 77 65 72 53 65 74 20 7b 31 20 32 20 33 7d PowerSet {1 2 3}
0520: 20 2d 3e 20 7b 31 20 32 20 33 7d 20 7b 32 20 33 -> {1 2 3} {2 3
0530: 7d 20 7b 31 20 33 7d 20 33 20 7b 31 20 32 7d 20 } {1 3} 3 {1 2}
0540: 32 20 31 20 7b 7d 0a 20 20 20 20 70 72 6f 63 20 2 1 {}. proc
0550: 50 6f 77 65 72 53 65 74 20 7b 6c 7d 20 7b 0a 09 PowerSet {l} {..
0560: 69 66 20 7b 5b 6c 6c 65 6e 67 74 68 20 24 6c 5d if {[llength $l]
0570: 20 3d 3d 20 30 7d 20 7b 72 65 74 75 72 6e 20 5b == 0} {return [
0580: 6c 69 73 74 20 5b 6c 69 73 74 5d 5d 7d 0a 09 73 list [list]]}..s
0590: 65 74 20 65 6c 65 6d 65 6e 74 20 5b 6c 69 6e 64 et element [lind
05a0: 65 78 20 24 6c 20 30 5d 0a 09 73 65 74 20 72 65 ex $l 0]..set re
05b0: 73 74 20 5b 6c 72 61 6e 67 65 20 24 6c 20 31 20 st [lrange $l 1
05c0: 65 6e 64 5d 0a 09 73 65 74 20 72 65 73 75 6c 74 end]..set result
05d0: 20 5b 6c 69 73 74 5d 0a 09 66 6f 72 65 61 63 68 [list]..foreach
05e0: 20 78 20 5b 50 6f 77 65 72 53 65 74 20 24 72 65 x [PowerSet $re
05f0: 73 74 5d 20 7b 0a 09 20 20 20 20 6c 61 70 70 65 st] {.. lappe
0600: 6e 64 20 72 65 73 75 6c 74 20 5b 6c 69 6e 73 65 nd result [linse
0610: 72 74 20 24 78 20 30 20 24 65 6c 65 6d 65 6e 74 rt $x 0 $element
0620: 5d 0a 09 20 20 20 20 6c 61 70 70 65 6e 64 20 72 ].. lappend r
0630: 65 73 75 6c 74 20 24 78 0a 09 7d 0a 09 72 65 74 esult $x..}..ret
0640: 75 72 6e 20 24 72 65 73 75 6c 74 0a 20 20 20 20 urn $result.
0650: 7d 0a 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 }.. variable
0660: 65 6e 76 56 61 72 73 20 7b 4c 43 5f 41 4c 4c 20 envVars {LC_ALL
0670: 4c 43 5f 4d 45 53 53 41 47 45 53 20 4c 41 4e 47 LC_MESSAGES LANG
0680: 7d 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 63 }. variable c
0690: 6f 75 6e 74 20 30 0a 20 20 20 20 76 61 72 69 61 ount 0. varia
06a0: 62 6c 65 20 62 6f 64 79 0a 20 20 20 20 76 61 72 ble body. var
06b0: 69 61 62 6c 65 20 72 65 73 75 6c 74 0a 20 20 20 iable result.
06c0: 20 76 61 72 69 61 62 6c 65 20 73 65 74 56 61 72 variable setVar
06d0: 73 0a 20 20 20 20 66 6f 72 65 61 63 68 20 73 65 s. foreach se
06e0: 74 56 61 72 73 20 5b 50 6f 77 65 72 53 65 74 20 tVars [PowerSet
06f0: 24 65 6e 76 56 61 72 73 5d 20 7b 0a 09 73 65 74 $envVars] {..set
0700: 20 72 65 73 75 6c 74 20 5b 73 74 72 69 6e 67 20 result [string
0710: 74 6f 6c 6f 77 65 72 20 5b 6c 69 6e 64 65 78 20 tolower [lindex
0720: 24 73 65 74 56 61 72 73 20 30 5d 5d 0a 09 69 66 $setVars 0]]..if
0730: 20 7b 5b 73 74 72 69 6e 67 20 6c 65 6e 67 74 68 {[string length
0740: 20 24 72 65 73 75 6c 74 5d 20 3d 3d 20 30 7d 20 $result] == 0}
0750: 7b 0a 09 20 20 20 20 69 66 20 7b 5b 69 6e 66 6f {.. if {[info
0760: 20 65 78 69 73 74 73 20 3a 3a 74 63 6c 3a 3a 6d exists ::tcl::m
0770: 61 63 3a 3a 6c 6f 63 61 6c 65 5d 7d 20 7b 0a 69 ac::locale]} {.i
0780: 66 20 7b 5b 70 61 63 6b 61 67 65 20 76 73 61 74 f {[package vsat
0790: 69 73 66 69 65 73 20 5b 70 61 63 6b 61 67 65 20 isfies [package
07a0: 70 72 6f 76 69 64 65 20 6d 73 67 63 61 74 5d 20 provide msgcat]
07b0: 31 2e 37 5d 7d 20 7b 0a 09 09 73 65 74 20 72 65 1.7]} {...set re
07c0: 73 75 6c 74 20 5b 73 74 72 69 6e 67 20 74 6f 6c sult [string tol
07d0: 6f 77 65 72 20 5c 0a 09 09 09 5b 6d 73 67 63 61 ower \....[msgca
07e0: 74 3a 3a 6d 63 75 74 69 6c 3a 3a 43 6f 6e 76 65 t::mcutil::Conve
07f0: 72 74 4c 6f 63 61 6c 65 20 24 3a 3a 74 63 6c 3a rtLocale $::tcl:
0800: 3a 6d 61 63 3a 3a 6c 6f 63 61 6c 65 5d 5d 0a 7d :mac::locale]].}
0810: 20 65 6c 73 65 20 7b 0a 09 09 73 65 74 20 72 65 else {...set re
0820: 73 75 6c 74 20 5b 73 74 72 69 6e 67 20 74 6f 6c sult [string tol
0830: 6f 77 65 72 20 5c 0a 09 09 09 5b 6d 73 67 63 61 ower \....[msgca
0840: 74 3a 3a 43 6f 6e 76 65 72 74 4c 6f 63 61 6c 65 t::ConvertLocale
0850: 20 24 3a 3a 74 63 6c 3a 3a 6d 61 63 3a 3a 6c 6f $::tcl::mac::lo
0860: 63 61 6c 65 5d 5d 0a 7d 0a 09 20 20 20 20 7d 20 cale]].}.. }
0870: 65 6c 73 65 20 7b 0a 09 09 69 66 20 7b 28 5b 69 else {...if {([i
0880: 6e 66 6f 20 73 68 61 72 65 64 6c 69 62 65 78 74 nfo sharedlibext
0890: 65 6e 73 69 6f 6e 5d 20 65 71 20 22 2e 64 6c 6c ension] eq ".dll
08a0: 22 29 0a 09 09 09 26 26 20 21 5b 63 61 74 63 68 ")....&& ![catch
08b0: 20 7b 70 61 63 6b 61 67 65 20 72 65 71 75 69 72 {package requir
08c0: 65 20 72 65 67 69 73 74 72 79 7d 5d 7d 20 7b 0a e registry}]} {.
08d0: 09 09 20 20 20 20 23 20 57 69 6e 64 6f 77 73 20 .. # Windows
08e0: 61 6e 64 20 43 79 67 77 69 6e 20 68 61 76 65 20 and Cygwin have
08f0: 6f 74 68 65 72 20 77 61 79 73 20 74 6f 20 64 65 other ways to de
0900: 74 65 72 6d 69 6e 65 20 74 68 65 0a 09 09 20 20 termine the...
0910: 20 20 23 20 6c 6f 63 61 6c 65 20 77 68 65 6e 20 # locale when
0920: 74 68 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 the environment
0930: 76 61 72 69 61 62 6c 65 73 20 61 72 65 20 6d 69 variables are mi
0940: 73 73 69 6e 67 0a 09 09 20 20 20 20 23 20 61 6e ssing... # an
0950: 64 20 74 68 65 20 72 65 67 69 73 74 72 79 20 70 d the registry p
0960: 61 63 6b 61 67 65 20 69 73 20 70 72 65 73 65 6e ackage is presen
0970: 74 0a 09 09 20 20 20 20 63 6f 6e 74 69 6e 75 65 t... continue
0980: 0a 09 09 7d 0a 09 09 73 65 74 20 72 65 73 75 6c ...}...set resul
0990: 74 20 63 0a 09 20 20 20 20 7d 0a 09 7d 0a 0c 0a t c.. }..}...
09a0: 09 74 65 73 74 20 6d 73 67 63 61 74 2d 30 2e 24 .test msgcat-0.$
09b0: 63 6f 75 6e 74 20 5b 6c 69 73 74 20 5c 0a 09 20 count [list \..
09c0: 20 20 20 6c 6f 63 61 6c 65 20 69 6e 69 74 69 61 locale initia
09d0: 6c 69 7a 61 74 69 6f 6e 20 66 72 6f 6d 20 65 6e lization from en
09e0: 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 vironment variab
09f0: 6c 65 73 20 24 73 65 74 56 61 72 73 20 5c 0a 09 les $setVars \..
0a00: 5d 20 2d 73 65 74 75 70 20 7b 0a 09 20 20 20 20 ] -setup {..
0a10: 76 61 72 69 61 62 6c 65 20 76 61 72 0a 09 20 20 variable var..
0a20: 20 20 66 6f 72 65 61 63 68 20 76 61 72 20 24 65 foreach var $e
0a30: 6e 76 56 61 72 73 20 7b 0a 09 09 63 61 74 63 68 nvVars {...catch
0a40: 20 7b 76 61 72 69 61 62 6c 65 20 24 76 61 72 20 {variable $var
0a50: 24 3a 3a 65 6e 76 28 24 76 61 72 29 7d 0a 09 09 $::env($var)}...
0a60: 75 6e 73 65 74 20 2d 6e 6f 63 6f 6d 70 6c 61 69 unset -nocomplai
0a70: 6e 20 3a 3a 65 6e 76 28 24 76 61 72 29 0a 09 20 n ::env($var)..
0a80: 20 20 20 7d 0a 09 20 20 20 20 66 6f 72 65 61 63 }.. foreac
0a90: 68 20 76 61 72 20 24 73 65 74 56 61 72 73 20 7b h var $setVars {
0aa0: 0a 09 09 73 65 74 20 3a 3a 65 6e 76 28 24 76 61 ...set ::env($va
0ab0: 72 29 20 24 76 61 72 0a 09 20 20 20 20 7d 0a 09 r) $var.. }..
0ac0: 20 20 20 20 69 6e 74 65 72 70 20 63 72 65 61 74 interp creat
0ad0: 65 20 5b 6e 61 6d 65 73 70 61 63 65 20 63 75 72 e [namespace cur
0ae0: 72 65 6e 74 5d 3a 3a 69 0a 09 20 20 20 20 69 20 rent]::i.. i
0af0: 65 76 61 6c 20 5b 6c 69 73 74 20 70 61 63 6b 61 eval [list packa
0b00: 67 65 20 69 66 6e 65 65 64 65 64 20 6d 73 67 63 ge ifneeded msgc
0b10: 61 74 20 5b 70 61 63 6b 61 67 65 20 70 72 6f 76 at [package prov
0b20: 69 64 65 20 6d 73 67 63 61 74 5d 20 5c 0a 09 09 ide msgcat] \...
0b30: 20 20 20 20 5b 70 61 63 6b 61 67 65 20 69 66 6e [package ifn
0b40: 65 65 64 65 64 20 6d 73 67 63 61 74 20 5b 70 61 eeded msgcat [pa
0b50: 63 6b 61 67 65 20 70 72 6f 76 69 64 65 20 6d 73 ckage provide ms
0b60: 67 63 61 74 5d 5d 5d 0a 09 20 20 20 20 69 20 65 gcat]]].. i e
0b70: 76 61 6c 20 70 61 63 6b 61 67 65 20 72 65 71 75 val package requ
0b80: 69 72 65 20 6d 73 67 63 61 74 0a 09 7d 20 2d 63 ire msgcat..} -c
0b90: 6c 65 61 6e 75 70 20 7b 0a 09 20 20 20 20 69 6e leanup {.. in
0ba0: 74 65 72 70 20 64 65 6c 65 74 65 20 5b 6e 61 6d terp delete [nam
0bb0: 65 73 70 61 63 65 20 63 75 72 72 65 6e 74 5d 3a espace current]:
0bc0: 3a 69 0a 09 20 20 20 20 66 6f 72 65 61 63 68 20 :i.. foreach
0bd0: 76 61 72 20 24 65 6e 76 56 61 72 73 20 7b 0a 09 var $envVars {..
0be0: 09 75 6e 73 65 74 20 2d 6e 6f 63 6f 6d 70 6c 61 .unset -nocompla
0bf0: 69 6e 20 3a 3a 65 6e 76 28 24 76 61 72 29 0a 09 in ::env($var)..
0c00: 09 63 61 74 63 68 20 7b 73 65 74 20 3a 3a 65 6e .catch {set ::en
0c10: 76 28 24 76 61 72 29 20 5b 73 65 74 20 5b 6e 61 v($var) [set [na
0c20: 6d 65 73 70 61 63 65 20 63 75 72 72 65 6e 74 5d mespace current]
0c30: 3a 3a 24 76 61 72 5d 7d 0a 09 20 20 20 20 7d 0a ::$var]}.. }.
0c40: 09 7d 20 2d 62 6f 64 79 20 7b 69 20 65 76 61 6c .} -body {i eval
0c50: 20 6d 73 67 63 61 74 3a 3a 6d 63 6c 6f 63 61 6c msgcat::mclocal
0c60: 65 7d 20 2d 72 65 73 75 6c 74 20 24 72 65 73 75 e} -result $resu
0c70: 6c 74 0a 09 69 6e 63 72 20 63 6f 75 6e 74 0a 20 lt..incr count.
0c80: 20 20 20 7d 0a 20 20 20 20 75 6e 73 65 74 20 2d }. unset -
0c90: 6e 6f 63 6f 6d 70 6c 61 69 6e 20 72 65 73 75 6c nocomplain resul
0ca0: 74 0a 0a 20 20 20 20 23 20 43 6f 75 6c 64 20 61 t.. # Could a
0cb0: 64 64 20 74 65 73 74 73 20 6f 66 20 69 6e 69 74 dd tests of init
0cc0: 69 61 6c 69 7a 61 74 69 6f 6e 20 66 72 6f 6d 20 ialization from
0cd0: 57 69 6e 64 6f 77 73 20 72 65 67 69 73 74 72 79 Windows registry
0ce0: 20 68 65 72 65 2e 0a 20 20 20 20 23 20 55 73 65 here.. # Use
0cf0: 20 61 20 66 61 6b 65 20 72 65 67 69 73 74 72 79 a fake registry
0d00: 20 70 61 63 6b 61 67 65 2e 0a 0a 20 20 20 20 23 package... #
0d10: 20 54 65 73 74 73 20 6d 73 67 63 61 74 2d 31 2e Tests msgcat-1.
0d20: 2a 3a 20 5b 6d 63 6c 6f 63 61 6c 65 5d 2c 20 5b *: [mclocale], [
0d30: 6d 63 70 72 65 66 65 72 65 6e 63 65 73 5d 0a 0a mcpreferences]..
0d40: 20 20 20 20 74 65 73 74 20 6d 73 67 63 61 74 2d test msgcat-
0d50: 31 2e 33 20 7b 6d 63 6c 6f 63 61 6c 65 20 73 65 1.3 {mclocale se
0d60: 74 2c 20 73 69 6e 67 6c 65 20 65 6c 65 6d 65 6e t, single elemen
0d70: 74 7d 20 2d 73 65 74 75 70 20 7b 0a 09 76 61 72 t} -setup {..var
0d80: 69 61 62 6c 65 20 6c 6f 63 61 6c 65 20 5b 6d 63 iable locale [mc
0d90: 6c 6f 63 61 6c 65 5d 0a 20 20 20 20 7d 20 2d 63 locale]. } -c
0da0: 6c 65 61 6e 75 70 20 7b 0a 09 6d 63 6c 6f 63 61 leanup {..mcloca
0db0: 6c 65 20 24 6c 6f 63 61 6c 65 0a 20 20 20 20 7d le $locale. }
0dc0: 20 2d 62 6f 64 79 20 7b 0a 09 6d 63 6c 6f 63 61 -body {..mcloca
0dd0: 6c 65 20 65 6e 0a 20 20 20 20 7d 20 2d 72 65 73 le en. } -res
0de0: 75 6c 74 20 65 6e 0a 0a 20 20 20 20 74 65 73 74 ult en.. test
0df0: 20 6d 73 67 63 61 74 2d 31 2e 34 20 7b 6d 63 6c msgcat-1.4 {mcl
0e00: 6f 63 61 6c 65 20 67 65 74 2c 20 73 69 6e 67 6c ocale get, singl
0e10: 65 20 65 6c 65 6d 65 6e 74 7d 20 2d 73 65 74 75 e element} -setu
0e20: 70 20 7b 0a 09 76 61 72 69 61 62 6c 65 20 6c 6f p {..variable lo
0e30: 63 61 6c 65 20 5b 6d 63 6c 6f 63 61 6c 65 5d 0a cale [mclocale].
0e40: 09 6d 63 6c 6f 63 61 6c 65 20 65 6e 0a 20 20 20 .mclocale en.
0e50: 20 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 6d } -cleanup {..m
0e60: 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 6c 65 0a clocale $locale.
0e70: 20 20 20 20 7d 20 2d 62 6f 64 79 20 7b 0a 09 6d } -body {..m
0e80: 63 6c 6f 63 61 6c 65 0a 20 20 20 20 7d 20 2d 72 clocale. } -r
0e90: 65 73 75 6c 74 20 65 6e 0a 0a 20 20 20 20 74 65 esult en.. te
0ea0: 73 74 20 6d 73 67 63 61 74 2d 31 2e 35 20 7b 6d st msgcat-1.5 {m
0eb0: 63 70 72 65 66 65 72 65 6e 63 65 73 2c 20 73 69 cpreferences, si
0ec0: 6e 67 6c 65 20 65 6c 65 6d 65 6e 74 7d 20 2d 73 ngle element} -s
0ed0: 65 74 75 70 20 7b 0a 09 76 61 72 69 61 62 6c 65 etup {..variable
0ee0: 20 6c 6f 63 61 6c 65 20 5b 6d 63 6c 6f 63 61 6c locale [mclocal
0ef0: 65 5d 0a 09 6d 63 6c 6f 63 61 6c 65 20 65 6e 0a e]..mclocale en.
0f00: 20 20 20 20 7d 20 2d 63 6c 65 61 6e 75 70 20 7b } -cleanup {
0f10: 0a 09 6d 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 ..mclocale $loca
0f20: 6c 65 0a 20 20 20 20 7d 20 2d 62 6f 64 79 20 7b le. } -body {
0f30: 0a 09 6d 63 70 72 65 66 65 72 65 6e 63 65 73 0a ..mcpreferences.
0f40: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 65 } -result {e
0f50: 6e 20 7b 7d 7d 0a 0a 20 20 20 20 74 65 73 74 20 n {}}.. test
0f60: 6d 73 67 63 61 74 2d 31 2e 36 20 7b 6d 63 6c 6f msgcat-1.6 {mclo
0f70: 63 61 6c 65 20 73 65 74 2c 20 74 77 6f 20 65 6c cale set, two el
0f80: 65 6d 65 6e 74 73 7d 20 2d 73 65 74 75 70 20 7b ements} -setup {
0f90: 0a 09 76 61 72 69 61 62 6c 65 20 6c 6f 63 61 6c ..variable local
0fa0: 65 20 5b 6d 63 6c 6f 63 61 6c 65 5d 0a 20 20 20 e [mclocale].
0fb0: 20 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 6d } -cleanup {..m
0fc0: 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 6c 65 0a clocale $locale.
0fd0: 20 20 20 20 7d 20 2d 62 6f 64 79 20 7b 0a 09 6d } -body {..m
0fe0: 63 6c 6f 63 61 6c 65 20 65 6e 5f 55 53 0a 20 20 clocale en_US.
0ff0: 20 20 7d 20 2d 72 65 73 75 6c 74 20 65 6e 5f 75 } -result en_u
1000: 73 0a 0a 20 20 20 20 74 65 73 74 20 6d 73 67 63 s.. test msgc
1010: 61 74 2d 31 2e 37 20 7b 6d 63 6c 6f 63 61 6c 65 at-1.7 {mclocale
1020: 20 67 65 74 2c 20 74 77 6f 20 65 6c 65 6d 65 6e get, two elemen
1030: 74 73 7d 20 2d 73 65 74 75 70 20 7b 0a 09 76 61 ts} -setup {..va
1040: 72 69 61 62 6c 65 20 6c 6f 63 61 6c 65 20 5b 6d riable locale [m
1050: 63 6c 6f 63 61 6c 65 5d 0a 09 6d 63 6c 6f 63 61 clocale]..mcloca
1060: 6c 65 20 65 6e 5f 55 53 0a 20 20 20 20 7d 20 2d le en_US. } -
1070: 63 6c 65 61 6e 75 70 20 7b 0a 09 6d 63 6c 6f 63 cleanup {..mcloc
1080: 61 6c 65 20 24 6c 6f 63 61 6c 65 0a 20 20 20 20 ale $locale.
1090: 7d 20 2d 62 6f 64 79 20 7b 0a 09 6d 63 6c 6f 63 } -body {..mcloc
10a0: 61 6c 65 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c ale. } -resul
10b0: 74 20 65 6e 5f 75 73 0a 0a 20 20 20 20 74 65 73 t en_us.. tes
10c0: 74 20 6d 73 67 63 61 74 2d 31 2e 38 20 7b 6d 63 t msgcat-1.8 {mc
10d0: 70 72 65 66 65 72 65 6e 63 65 73 2c 20 74 77 6f preferences, two
10e0: 20 65 6c 65 6d 65 6e 74 73 7d 20 2d 73 65 74 75 elements} -setu
10f0: 70 20 7b 0a 09 76 61 72 69 61 62 6c 65 20 6c 6f p {..variable lo
1100: 63 61 6c 65 20 5b 6d 63 6c 6f 63 61 6c 65 5d 0a cale [mclocale].
1110: 09 6d 63 6c 6f 63 61 6c 65 20 65 6e 5f 55 53 0a .mclocale en_US.
1120: 20 20 20 20 7d 20 2d 63 6c 65 61 6e 75 70 20 7b } -cleanup {
1130: 0a 09 6d 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 ..mclocale $loca
1140: 6c 65 0a 20 20 20 20 7d 20 2d 62 6f 64 79 20 7b le. } -body {
1150: 0a 09 6d 63 70 72 65 66 65 72 65 6e 63 65 73 0a ..mcpreferences.
1160: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 65 } -result {e
1170: 6e 5f 75 73 20 65 6e 20 7b 7d 7d 0a 0a 20 20 20 n_us en {}}..
1180: 20 74 65 73 74 20 6d 73 67 63 61 74 2d 31 2e 39 test msgcat-1.9
1190: 20 7b 6d 63 6c 6f 63 61 6c 65 20 73 65 74 2c 20 {mclocale set,
11a0: 74 68 72 65 65 20 65 6c 65 6d 65 6e 74 73 7d 20 three elements}
11b0: 2d 73 65 74 75 70 20 7b 0a 09 76 61 72 69 61 62 -setup {..variab
11c0: 6c 65 20 6c 6f 63 61 6c 65 20 5b 6d 63 6c 6f 63 le locale [mcloc
11d0: 61 6c 65 5d 0a 20 20 20 20 7d 20 2d 63 6c 65 61 ale]. } -clea
11e0: 6e 75 70 20 7b 0a 09 6d 63 6c 6f 63 61 6c 65 20 nup {..mclocale
11f0: 24 6c 6f 63 61 6c 65 0a 20 20 20 20 7d 20 2d 62 $locale. } -b
1200: 6f 64 79 20 7b 0a 09 6d 63 6c 6f 63 61 6c 65 20 ody {..mclocale
1210: 65 6e 5f 55 53 5f 66 75 6e 6b 79 0a 20 20 20 20 en_US_funky.
1220: 7d 20 2d 72 65 73 75 6c 74 20 65 6e 5f 75 73 5f } -result en_us_
1230: 66 75 6e 6b 79 0a 0a 20 20 20 20 74 65 73 74 20 funky.. test
1240: 6d 73 67 63 61 74 2d 31 2e 31 30 20 7b 6d 63 6c msgcat-1.10 {mcl
1250: 6f 63 61 6c 65 20 67 65 74 2c 20 74 68 72 65 65 ocale get, three
1260: 20 65 6c 65 6d 65 6e 74 73 7d 20 2d 73 65 74 75 elements} -setu
1270: 70 20 7b 0a 09 76 61 72 69 61 62 6c 65 20 6c 6f p {..variable lo
1280: 63 61 6c 65 20 5b 6d 63 6c 6f 63 61 6c 65 5d 0a cale [mclocale].
1290: 09 6d 63 6c 6f 63 61 6c 65 20 65 6e 5f 55 53 5f .mclocale en_US_
12a0: 66 75 6e 6b 79 0a 20 20 20 20 7d 20 2d 63 6c 65 funky. } -cle
12b0: 61 6e 75 70 20 7b 0a 09 6d 63 6c 6f 63 61 6c 65 anup {..mclocale
12c0: 20 24 6c 6f 63 61 6c 65 0a 20 20 20 20 7d 20 2d $locale. } -
12d0: 62 6f 64 79 20 7b 0a 09 6d 63 6c 6f 63 61 6c 65 body {..mclocale
12e0: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 65 . } -result e
12f0: 6e 5f 75 73 5f 66 75 6e 6b 79 0a 0a 20 20 20 20 n_us_funky..
1300: 74 65 73 74 20 6d 73 67 63 61 74 2d 31 2e 31 31 test msgcat-1.11
1310: 20 7b 6d 63 70 72 65 66 65 72 65 6e 63 65 73 2c {mcpreferences,
1320: 20 74 68 72 65 65 20 65 6c 65 6d 65 6e 74 73 7d three elements}
1330: 20 2d 73 65 74 75 70 20 7b 0a 09 76 61 72 69 61 -setup {..varia
1340: 62 6c 65 20 6c 6f 63 61 6c 65 20 5b 6d 63 6c 6f ble locale [mclo
1350: 63 61 6c 65 5d 0a 09 6d 63 6c 6f 63 61 6c 65 20 cale]..mclocale
1360: 65 6e 5f 55 53 5f 66 75 6e 6b 79 0a 20 20 20 20 en_US_funky.
1370: 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 6d 63 } -cleanup {..mc
1380: 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 6c 65 0a 20 locale $locale.
1390: 20 20 20 7d 20 2d 62 6f 64 79 20 7b 0a 09 6d 63 } -body {..mc
13a0: 70 72 65 66 65 72 65 6e 63 65 73 0a 20 20 20 20 preferences.
13b0: 7d 20 2d 72 65 73 75 6c 74 20 7b 65 6e 5f 75 73 } -result {en_us
13c0: 5f 66 75 6e 6b 79 20 65 6e 5f 75 73 20 65 6e 20 _funky en_us en
13d0: 7b 7d 7d 0a 0a 20 20 20 20 74 65 73 74 20 6d 73 {}}.. test ms
13e0: 67 63 61 74 2d 31 2e 31 32 20 7b 6d 63 6c 6f 63 gcat-1.12 {mcloc
13f0: 61 6c 65 20 73 65 74 2c 20 72 65 6a 65 63 74 20 ale set, reject
1400: 65 76 69 6c 20 69 6e 70 75 74 7d 20 2d 73 65 74 evil input} -set
1410: 75 70 20 7b 0a 09 76 61 72 69 61 62 6c 65 20 6c up {..variable l
1420: 6f 63 61 6c 65 20 5b 6d 63 6c 6f 63 61 6c 65 5d ocale [mclocale]
1430: 0a 20 20 20 20 7d 20 2d 63 6c 65 61 6e 75 70 20 . } -cleanup
1440: 7b 0a 09 6d 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 {..mclocale $loc
1450: 61 6c 65 0a 20 20 20 20 7d 20 2d 62 6f 64 79 20 ale. } -body
1460: 7b 0a 09 6d 63 6c 6f 63 61 6c 65 20 2f 70 61 74 {..mclocale /pat
1470: 68 2f 74 6f 2f 65 76 69 6c 2f 63 6f 64 65 0a 20 h/to/evil/code.
1480: 20 20 20 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 } -returnCode
1490: 73 20 65 72 72 6f 72 20 2d 6d 61 74 63 68 20 67 s error -match g
14a0: 6c 6f 62 20 2d 72 65 73 75 6c 74 20 7b 69 6e 76 lob -result {inv
14b0: 61 6c 69 64 20 6e 65 77 4c 6f 63 61 6c 65 20 76 alid newLocale v
14c0: 61 6c 75 65 20 2a 7d 0a 0a 20 20 20 20 74 65 73 alue *}.. tes
14d0: 74 20 6d 73 67 63 61 74 2d 31 2e 31 33 20 7b 6d t msgcat-1.13 {m
14e0: 63 6c 6f 63 61 6c 65 20 73 65 74 2c 20 72 65 6a clocale set, rej
14f0: 65 63 74 20 65 76 69 6c 20 69 6e 70 75 74 7d 20 ect evil input}
1500: 2d 73 65 74 75 70 20 7b 0a 09 76 61 72 69 61 62 -setup {..variab
1510: 6c 65 20 6c 6f 63 61 6c 65 20 5b 6d 63 6c 6f 63 le locale [mcloc
1520: 61 6c 65 5d 0a 20 20 20 20 7d 20 2d 63 6c 65 61 ale]. } -clea
1530: 6e 75 70 20 7b 0a 09 6d 63 6c 6f 63 61 6c 65 20 nup {..mclocale
1540: 24 6c 6f 63 61 6c 65 0a 20 20 20 20 7d 20 2d 62 $locale. } -b
1550: 6f 64 79 20 7b 0a 09 6d 63 6c 6f 63 61 6c 65 20 ody {..mclocale
1560: 6c 6f 6f 6b 73 2f 6f 6b 2f 2e 2e 2f 2e 2e 2f 2e looks/ok/../../.
1570: 2e 2f 2e 2e 2f 62 75 74 2f 69 73 2f 70 61 74 68 ./../but/is/path
1580: 2f 74 6f 2f 65 76 69 6c 2f 63 6f 64 65 0a 20 20 /to/evil/code.
1590: 20 20 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 } -returnCodes
15a0: 20 65 72 72 6f 72 20 2d 6d 61 74 63 68 20 67 6c error -match gl
15b0: 6f 62 20 2d 72 65 73 75 6c 74 20 7b 69 6e 76 61 ob -result {inva
15c0: 6c 69 64 20 6e 65 77 4c 6f 63 61 6c 65 20 76 61 lid newLocale va
15d0: 6c 75 65 20 2a 7d 0a 0a 20 20 20 20 74 65 73 74 lue *}.. test
15e0: 20 6d 73 67 63 61 74 2d 31 2e 31 34 20 7b 6d 63 msgcat-1.14 {mc
15f0: 70 72 65 66 65 72 65 6e 63 65 73 2c 20 63 75 73 preferences, cus
1600: 74 6f 6d 20 6c 6f 63 61 6c 65 20 70 72 65 66 65 tom locale prefe
1610: 72 65 6e 63 65 73 7d 20 2d 73 65 74 75 70 20 7b rences} -setup {
1620: 0a 09 76 61 72 69 61 62 6c 65 20 6c 6f 63 61 6c ..variable local
1630: 65 20 5b 6d 63 6c 6f 63 61 6c 65 5d 0a 09 6d 63 e [mclocale]..mc
1640: 6c 6f 63 61 6c 65 20 65 6e 0a 09 6d 63 70 72 65 locale en..mcpre
1650: 66 65 72 65 6e 63 65 73 20 66 72 20 65 6e 20 7b ferences fr en {
1660: 7d 0a 20 20 20 20 7d 20 2d 63 6c 65 61 6e 75 70 }. } -cleanup
1670: 20 7b 0a 09 6d 63 6c 6f 63 61 6c 65 20 24 6c 6f {..mclocale $lo
1680: 63 61 6c 65 0a 20 20 20 20 7d 20 2d 62 6f 64 79 cale. } -body
1690: 20 7b 0a 09 6d 63 70 72 65 66 65 72 65 6e 63 65 {..mcpreference
16a0: 73 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 s. } -result
16b0: 7b 66 72 20 65 6e 20 7b 7d 7d 0a 0a 20 20 20 20 {fr en {}}..
16c0: 74 65 73 74 20 6d 73 67 63 61 74 2d 31 2e 31 35 test msgcat-1.15
16d0: 20 7b 6d 63 70 72 65 66 65 72 65 6e 63 65 73 2c {mcpreferences,
16e0: 20 6f 76 65 72 77 72 69 74 65 20 63 75 73 74 6f overwrite custo
16f0: 6d 20 6c 6f 63 61 6c 65 20 70 72 65 66 65 72 65 m locale prefere
1700: 6e 63 65 73 7d 5c 0a 20 20 20 20 2d 73 65 74 75 nces}\. -setu
1710: 70 20 7b 0a 09 76 61 72 69 61 62 6c 65 20 6c 6f p {..variable lo
1720: 63 61 6c 65 20 5b 6d 63 6c 6f 63 61 6c 65 5d 0a cale [mclocale].
1730: 09 6d 63 70 72 65 66 65 72 65 6e 63 65 73 20 66 .mcpreferences f
1740: 72 20 65 6e 20 7b 7d 0a 09 6d 63 6c 6f 63 61 6c r en {}..mclocal
1750: 65 20 65 6e 0a 20 20 20 20 7d 20 2d 63 6c 65 61 e en. } -clea
1760: 6e 75 70 20 7b 0a 09 6d 63 6c 6f 63 61 6c 65 20 nup {..mclocale
1770: 24 6c 6f 63 61 6c 65 0a 20 20 20 20 7d 20 2d 62 $locale. } -b
1780: 6f 64 79 20 7b 0a 09 6d 63 70 72 65 66 65 72 65 ody {..mcprefere
1790: 6e 63 65 73 0a 20 20 20 20 7d 20 2d 72 65 73 75 nces. } -resu
17a0: 6c 74 20 7b 65 6e 20 7b 7d 7d 0a 0a 0a 20 20 20 lt {en {}}...
17b0: 20 23 20 54 65 73 74 73 20 6d 73 67 63 61 74 2d # Tests msgcat-
17c0: 32 2e 2a 3a 20 5b 6d 63 73 65 74 5d 2c 20 5b 6d 2.*: [mcset], [m
17d0: 63 6d 73 65 74 5d 2c 20 6e 61 6d 65 73 70 61 63 cmset], namespac
17e0: 65 20 70 61 72 74 69 74 69 6f 6e 69 6e 67 0a 0a e partitioning..
17f0: 20 20 20 20 74 65 73 74 20 6d 73 67 63 61 74 2d test msgcat-
1800: 32 2e 31 20 7b 6d 63 73 65 74 2c 20 67 6c 6f 62 2.1 {mcset, glob
1810: 61 6c 20 73 63 6f 70 65 7d 20 7b 0a 09 6e 61 6d al scope} {..nam
1820: 65 73 70 61 63 65 20 65 76 61 6c 20 3a 3a 20 3a espace eval :: :
1830: 3a 6d 73 67 63 61 74 3a 3a 6d 63 73 65 74 20 20 :msgcat::mcset
1840: 66 6f 6f 5f 42 41 52 20 74 65 78 74 31 20 74 65 foo_BAR text1 te
1850: 78 74 32 0a 20 20 20 20 7d 20 7b 74 65 78 74 32 xt2. } {text2
1860: 7d 0a 0a 20 20 20 20 74 65 73 74 20 6d 73 67 63 }.. test msgc
1870: 61 74 2d 32 2e 32 20 7b 6d 63 73 65 74 2c 20 67 at-2.2 {mcset, g
1880: 6c 6f 62 61 6c 20 73 63 6f 70 65 2c 20 64 65 66 lobal scope, def
1890: 61 75 6c 74 7d 20 7b 0a 09 6e 61 6d 65 73 70 61 ault} {..namespa
18a0: 63 65 20 65 76 61 6c 20 3a 3a 20 3a 3a 6d 73 67 ce eval :: ::msg
18b0: 63 61 74 3a 3a 6d 63 73 65 74 20 66 6f 6f 5f 42 cat::mcset foo_B
18c0: 41 52 20 74 65 78 74 33 0a 20 20 20 20 7d 20 7b AR text3. } {
18d0: 74 65 78 74 33 7d 0a 0a 20 20 20 20 74 65 73 74 text3}.. test
18e0: 20 6d 73 67 63 61 74 2d 32 2e 32 2e 31 20 7b 6d msgcat-2.2.1 {m
18f0: 63 73 65 74 2c 20 6e 61 6d 65 73 70 61 63 65 20 cset, namespace
1900: 6f 76 65 72 6c 61 70 7d 20 7b 0a 09 6e 61 6d 65 overlap} {..name
1910: 73 70 61 63 65 20 65 76 61 6c 20 62 61 7a 20 7b space eval baz {
1920: 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 73 65 74 20 ::msgcat::mcset
1930: 20 66 6f 6f 5f 42 41 52 20 63 6f 6e 31 20 63 6f foo_BAR con1 co
1940: 6e 31 62 61 7a 7d 0a 20 20 20 20 7d 20 7b 63 6f n1baz}. } {co
1950: 6e 31 62 61 7a 7d 0a 0a 20 20 20 20 74 65 73 74 n1baz}.. test
1960: 20 6d 73 67 63 61 74 2d 32 2e 33 20 7b 6d 63 73 msgcat-2.3 {mcs
1970: 65 74 2c 20 6e 61 6d 65 73 70 61 63 65 20 6f 76 et, namespace ov
1980: 65 72 6c 61 70 7d 20 2d 73 65 74 75 70 20 7b 0a erlap} -setup {.
1990: 09 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 .namespace eval
19a0: 62 61 72 20 7b 3a 3a 6d 73 67 63 61 74 3a 3a 6d bar {::msgcat::m
19b0: 63 73 65 74 20 20 66 6f 6f 5f 42 41 52 20 63 6f cset foo_BAR co
19c0: 6e 31 20 63 6f 6e 31 62 61 72 7d 0a 09 6e 61 6d n1 con1bar}..nam
19d0: 65 73 70 61 63 65 20 65 76 61 6c 20 62 61 7a 20 espace eval baz
19e0: 7b 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 73 65 74 {::msgcat::mcset
19f0: 20 20 66 6f 6f 5f 42 41 52 20 63 6f 6e 31 20 63 foo_BAR con1 c
1a00: 6f 6e 31 62 61 7a 7d 0a 09 76 61 72 69 61 62 6c on1baz}..variabl
1a10: 65 20 6c 6f 63 61 6c 65 20 5b 6d 63 6c 6f 63 61 e locale [mcloca
1a20: 6c 65 5d 0a 09 6d 63 6c 6f 63 61 6c 65 20 66 6f le]..mclocale fo
1a30: 6f 5f 42 41 52 0a 20 20 20 20 7d 20 2d 63 6c 65 o_BAR. } -cle
1a40: 61 6e 75 70 20 7b 0a 09 6d 63 6c 6f 63 61 6c 65 anup {..mclocale
1a50: 20 24 6c 6f 63 61 6c 65 0a 20 20 20 20 7d 20 2d $locale. } -
1a60: 62 6f 64 79 20 7b 0a 09 6e 61 6d 65 73 70 61 63 body {..namespac
1a70: 65 20 65 76 61 6c 20 62 61 72 20 7b 3a 3a 6d 73 e eval bar {::ms
1a80: 67 63 61 74 3a 3a 6d 63 20 63 6f 6e 31 7d 0a 20 gcat::mc con1}.
1a90: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 63 6f 6e } -result con
1aa0: 31 62 61 72 0a 0a 20 20 20 20 74 65 73 74 20 6d 1bar.. test m
1ab0: 73 67 63 61 74 2d 32 2e 34 20 7b 6d 63 73 65 74 sgcat-2.4 {mcset
1ac0: 2c 20 6e 61 6d 65 73 70 61 63 65 20 6f 76 65 72 , namespace over
1ad0: 6c 61 70 7d 20 2d 73 65 74 75 70 20 7b 0a 09 6e lap} -setup {..n
1ae0: 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 62 61 amespace eval ba
1af0: 72 20 7b 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 73 r {::msgcat::mcs
1b00: 65 74 20 20 66 6f 6f 5f 42 41 52 20 63 6f 6e 31 et foo_BAR con1
1b10: 20 63 6f 6e 31 62 61 72 7d 0a 09 6e 61 6d 65 73 con1bar}..names
1b20: 70 61 63 65 20 65 76 61 6c 20 62 61 7a 20 7b 3a pace eval baz {:
1b30: 3a 6d 73 67 63 61 74 3a 3a 6d 63 73 65 74 20 20 :msgcat::mcset
1b40: 66 6f 6f 5f 42 41 52 20 63 6f 6e 31 20 63 6f 6e foo_BAR con1 con
1b50: 31 62 61 7a 7d 0a 09 76 61 72 69 61 62 6c 65 20 1baz}..variable
1b60: 6c 6f 63 61 6c 65 20 5b 6d 63 6c 6f 63 61 6c 65 locale [mclocale
1b70: 5d 0a 09 6d 63 6c 6f 63 61 6c 65 20 66 6f 6f 5f ]..mclocale foo_
1b80: 42 41 52 0a 20 20 20 20 7d 20 2d 63 6c 65 61 6e BAR. } -clean
1b90: 75 70 20 7b 0a 09 6d 63 6c 6f 63 61 6c 65 20 24 up {..mclocale $
1ba0: 6c 6f 63 61 6c 65 0a 20 20 20 20 7d 20 2d 62 6f locale. } -bo
1bb0: 64 79 20 7b 0a 09 6e 61 6d 65 73 70 61 63 65 20 dy {..namespace
1bc0: 65 76 61 6c 20 62 61 7a 20 7b 3a 3a 6d 73 67 63 eval baz {::msgc
1bd0: 61 74 3a 3a 6d 63 20 63 6f 6e 31 7d 0a 20 20 20 at::mc con1}.
1be0: 20 7d 20 2d 72 65 73 75 6c 74 20 63 6f 6e 31 62 } -result con1b
1bf0: 61 7a 0a 0a 20 20 20 20 74 65 73 74 20 6d 73 67 az.. test msg
1c00: 63 61 74 2d 32 2e 35 20 7b 6d 63 6d 73 65 74 2c cat-2.5 {mcmset,
1c10: 20 67 6c 6f 62 61 6c 20 73 63 6f 70 65 7d 20 2d global scope} -
1c20: 73 65 74 75 70 20 7b 0a 09 6e 61 6d 65 73 70 61 setup {..namespa
1c30: 63 65 20 65 76 61 6c 20 3a 3a 20 7b 0a 09 20 20 ce eval :: {..
1c40: 20 20 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 6d 73 ::msgcat::mcms
1c50: 65 74 20 20 66 6f 6f 5f 42 41 52 20 7b 0a 09 20 et foo_BAR {..
1c60: 20 20 20 20 20 20 20 73 72 63 31 20 74 72 61 6e src1 tran
1c70: 73 31 0a 09 20 20 20 20 20 20 20 20 73 72 63 32 s1.. src2
1c80: 20 74 72 61 6e 73 32 0a 09 20 20 20 20 7d 0a 09 trans2.. }..
1c90: 7d 0a 09 76 61 72 69 61 62 6c 65 20 6c 6f 63 61 }..variable loca
1ca0: 6c 65 20 5b 6d 63 6c 6f 63 61 6c 65 5d 0a 09 6d le [mclocale]..m
1cb0: 63 6c 6f 63 61 6c 65 20 66 6f 6f 5f 42 41 52 0a clocale foo_BAR.
1cc0: 20 20 20 20 7d 20 2d 63 6c 65 61 6e 75 70 20 7b } -cleanup {
1cd0: 0a 09 6d 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 ..mclocale $loca
1ce0: 6c 65 0a 20 20 20 20 7d 20 2d 62 6f 64 79 20 7b le. } -body {
1cf0: 0a 09 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c ..namespace eval
1d00: 20 3a 3a 20 7b 0a 09 20 20 20 20 3a 3a 6d 73 67 :: {.. ::msg
1d10: 63 61 74 3a 3a 6d 63 20 73 72 63 31 0a 09 7d 0a cat::mc src1..}.
1d20: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 74 72 } -result tr
1d30: 61 6e 73 31 0a 0a 20 20 20 20 74 65 73 74 20 6d ans1.. test m
1d40: 73 67 63 61 74 2d 32 2e 36 20 7b 6d 63 6d 73 65 sgcat-2.6 {mcmse
1d50: 74 2c 20 6e 61 6d 65 73 70 61 63 65 20 6f 76 65 t, namespace ove
1d60: 72 6c 61 70 7d 20 2d 73 65 74 75 70 20 7b 0a 09 rlap} -setup {..
1d70: 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 62 namespace eval b
1d80: 61 72 20 7b 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 ar {::msgcat::mc
1d90: 6d 73 65 74 20 20 66 6f 6f 5f 42 41 52 20 7b 63 mset foo_BAR {c
1da0: 6f 6e 32 20 63 6f 6e 32 62 61 72 7d 7d 0a 09 6e on2 con2bar}}..n
1db0: 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 62 61 amespace eval ba
1dc0: 7a 20 7b 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 6d z {::msgcat::mcm
1dd0: 73 65 74 20 20 66 6f 6f 5f 42 41 52 20 7b 63 6f set foo_BAR {co
1de0: 6e 32 20 63 6f 6e 32 62 61 7a 7d 7d 0a 09 76 61 n2 con2baz}}..va
1df0: 72 69 61 62 6c 65 20 6c 6f 63 61 6c 65 20 5b 6d riable locale [m
1e00: 63 6c 6f 63 61 6c 65 5d 0a 09 6d 63 6c 6f 63 61 clocale]..mcloca
1e10: 6c 65 20 66 6f 6f 5f 42 41 52 0a 20 20 20 20 7d le foo_BAR. }
1e20: 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 6d 63 6c -cleanup {..mcl
1e30: 6f 63 61 6c 65 20 24 6c 6f 63 61 6c 65 0a 20 20 ocale $locale.
1e40: 20 20 7d 20 2d 62 6f 64 79 20 7b 0a 09 6e 61 6d } -body {..nam
1e50: 65 73 70 61 63 65 20 65 76 61 6c 20 62 61 72 20 espace eval bar
1e60: 7b 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 20 63 6f {::msgcat::mc co
1e70: 6e 32 7d 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c n2}. } -resul
1e80: 74 20 63 6f 6e 32 62 61 72 0a 0a 20 20 20 20 74 t con2bar.. t
1e90: 65 73 74 20 6d 73 67 63 61 74 2d 32 2e 37 20 7b est msgcat-2.7 {
1ea0: 6d 63 6d 73 65 74 2c 20 6e 61 6d 65 73 70 61 63 mcmset, namespac
1eb0: 65 20 6f 76 65 72 6c 61 70 7d 20 2d 73 65 74 75 e overlap} -setu
1ec0: 70 20 7b 0a 09 6e 61 6d 65 73 70 61 63 65 20 65 p {..namespace e
1ed0: 76 61 6c 20 62 61 72 20 7b 3a 3a 6d 73 67 63 61 val bar {::msgca
1ee0: 74 3a 3a 6d 63 6d 73 65 74 20 20 66 6f 6f 5f 42 t::mcmset foo_B
1ef0: 41 52 20 7b 63 6f 6e 32 20 63 6f 6e 32 62 61 72 AR {con2 con2bar
1f00: 7d 7d 0a 09 6e 61 6d 65 73 70 61 63 65 20 65 76 }}..namespace ev
1f10: 61 6c 20 62 61 7a 20 7b 3a 3a 6d 73 67 63 61 74 al baz {::msgcat
1f20: 3a 3a 6d 63 6d 73 65 74 20 20 66 6f 6f 5f 42 41 ::mcmset foo_BA
1f30: 52 20 7b 63 6f 6e 32 20 63 6f 6e 32 62 61 7a 7d R {con2 con2baz}
1f40: 7d 0a 09 76 61 72 69 61 62 6c 65 20 6c 6f 63 61 }..variable loca
1f50: 6c 65 20 5b 6d 63 6c 6f 63 61 6c 65 5d 0a 09 6d le [mclocale]..m
1f60: 63 6c 6f 63 61 6c 65 20 66 6f 6f 5f 42 41 52 0a clocale foo_BAR.
1f70: 20 20 20 20 7d 20 2d 63 6c 65 61 6e 75 70 20 7b } -cleanup {
1f80: 0a 09 6d 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 ..mclocale $loca
1f90: 6c 65 0a 20 20 20 20 7d 20 2d 62 6f 64 79 20 7b le. } -body {
1fa0: 0a 09 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c ..namespace eval
1fb0: 20 62 61 7a 20 7b 3a 3a 6d 73 67 63 61 74 3a 3a baz {::msgcat::
1fc0: 6d 63 20 63 6f 6e 32 7d 0a 20 20 20 20 7d 20 2d mc con2}. } -
1fd0: 72 65 73 75 6c 74 20 63 6f 6e 32 62 61 7a 0a 0a result con2baz..
1fe0: 20 20 20 20 23 20 54 65 73 74 73 20 6d 73 67 63 # Tests msgc
1ff0: 61 74 2d 33 2e 2a 3a 20 5b 6d 63 73 65 74 5d 2c at-3.*: [mcset],
2000: 20 5b 6d 63 5d 2c 20 63 61 74 61 6c 6f 67 20 22 [mc], catalog "
2010: 69 6e 68 65 72 69 74 61 6e 63 65 22 0a 20 20 20 inheritance".
2020: 20 23 0a 20 20 20 20 23 20 54 65 73 74 20 6d 63 #. # Test mc
2030: 73 65 74 20 61 6e 64 20 6d 63 2c 20 65 6e 73 75 set and mc, ensu
2040: 72 69 6e 67 20 74 68 61 74 20 6d 6f 72 65 20 73 ring that more s
2050: 70 65 63 69 66 69 63 20 6c 6f 63 61 6c 65 73 0a pecific locales.
2060: 20 20 20 20 23 20 28 65 2e 67 2e 20 65 6e 5f 55 # (e.g. en_U
2070: 4b 29 20 77 69 6c 6c 20 73 65 61 72 63 68 20 6c K) will search l
2080: 65 73 73 20 73 70 65 63 69 66 69 63 20 6c 6f 63 ess specific loc
2090: 61 6c 65 73 0a 20 20 20 20 23 20 28 65 2e 67 2e ales. # (e.g.
20a0: 20 65 6e 29 20 66 6f 72 20 74 72 61 6e 73 6c 61 en) for transla
20b0: 74 69 6f 6e 20 73 74 72 69 6e 67 73 2e 0a 20 20 tion strings..
20c0: 20 20 23 0a 20 20 20 20 23 20 44 6f 20 74 68 69 #. # Do thi
20d0: 73 20 66 6f 72 20 74 68 65 20 31 35 20 70 65 72 s for the 15 per
20e0: 6d 75 74 61 74 69 6f 6e 73 20 6f 66 0a 20 20 20 mutations of.
20f0: 20 23 20 20 20 20 20 6c 6f 63 61 6c 65 73 3a 20 # locales:
2100: 7b 66 6f 6f 20 66 6f 6f 5f 42 41 52 20 66 6f 6f {foo foo_BAR foo
2110: 5f 42 41 52 5f 62 61 7a 7d 0a 20 20 20 20 23 20 _BAR_baz}. #
2120: 20 20 20 20 73 74 72 69 6e 67 73 3a 20 7b 6f 76 strings: {ov
2130: 30 20 6f 76 31 20 6f 76 32 20 6f 76 33 20 6f 76 0 ov1 ov2 ov3 ov
2140: 34 7d 0a 20 20 20 20 23 09 20 20 6c 6f 63 61 6c 4}. #. local
2150: 65 20 52 4f 4f 54 20 20 20 20 20 20 20 20 64 65 e ROOT de
2160: 66 69 6e 65 73 20 6f 76 30 2c 20 6f 76 31 2c 20 fines ov0, ov1,
2170: 6f 76 32 2c 20 6f 76 33 0a 20 20 20 20 23 20 20 ov2, ov3. #
2180: 20 20 20 6c 6f 63 61 6c 65 20 66 6f 6f 20 20 20 locale foo
2190: 20 20 20 20 20 20 64 65 66 69 6e 65 73 20 20 20 defines
21a0: 20 20 20 6f 76 31 2c 20 6f 76 32 2c 20 6f 76 33 ov1, ov2, ov3
21b0: 0a 20 20 20 20 23 20 20 20 20 20 6c 6f 63 61 6c . # local
21c0: 65 20 66 6f 6f 5f 42 41 52 20 20 20 20 20 64 65 e foo_BAR de
21d0: 66 69 6e 65 73 20 20 20 20 20 20 20 20 20 20 20 fines
21e0: 6f 76 32 2c 20 6f 76 33 0a 20 20 20 20 23 20 20 ov2, ov3. #
21f0: 20 20 20 6c 6f 63 61 6c 65 20 66 6f 6f 5f 42 41 locale foo_BA
2200: 52 5f 42 41 5a 20 64 65 66 69 6e 65 73 20 20 20 R_BAZ defines
2210: 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 76 33 ov3
2220: 0a 20 20 20 20 23 20 20 20 20 20 28 6f 76 34 20 . # (ov4
2230: 69 73 20 64 65 66 69 6e 65 64 20 69 6e 20 6e 6f is defined in no
2240: 6e 65 29 0a 20 20 20 20 23 20 53 6f 2c 0a 20 20 ne). # So,.
2250: 20 20 23 20 20 20 20 20 6f 76 33 20 73 68 6f 75 # ov3 shou
2260: 6c 64 20 62 65 20 72 65 73 6f 6c 76 65 64 20 69 ld be resolved i
2270: 6e 20 66 6f 6f 2c 20 66 6f 6f 5f 42 41 52 2c 20 n foo, foo_BAR,
2280: 66 6f 6f 5f 42 41 52 5f 62 61 7a 0a 20 20 20 20 foo_BAR_baz.
2290: 23 20 20 20 20 20 6f 76 32 20 73 68 6f 75 6c 64 # ov2 should
22a0: 20 62 65 20 72 65 73 6f 6c 76 65 64 20 69 6e 20 be resolved in
22b0: 66 6f 6f 2c 20 66 6f 6f 5f 42 41 52 0a 20 20 20 foo, foo_BAR.
22c0: 20 23 20 20 20 20 20 6f 76 32 20 73 68 6f 75 6c # ov2 shoul
22d0: 64 20 72 65 73 6f 6c 76 65 20 74 6f 20 66 6f 6f d resolve to foo
22e0: 5f 42 41 52 20 69 6e 20 66 6f 6f 5f 42 41 52 5f _BAR in foo_BAR_
22f0: 62 61 7a 0a 20 20 20 20 23 20 20 20 20 20 6f 76 baz. # ov
2300: 31 20 73 68 6f 75 6c 64 20 62 65 20 72 65 73 6f 1 should be reso
2310: 6c 76 65 64 20 69 6e 20 66 6f 6f 0a 20 20 20 20 lved in foo.
2320: 23 20 20 20 20 20 6f 76 31 20 73 68 6f 75 6c 64 # ov1 should
2330: 20 72 65 73 6f 6c 76 65 20 74 6f 20 66 6f 6f 20 resolve to foo
2340: 69 6e 20 66 6f 6f 5f 42 41 52 2c 20 66 6f 6f 5f in foo_BAR, foo_
2350: 42 41 52 5f 62 61 7a 0a 20 20 20 20 23 20 20 20 BAR_baz. #
2360: 20 20 6f 76 34 20 73 68 6f 75 6c 64 20 62 65 20 ov4 should be
2370: 72 65 73 6f 6c 76 65 64 20 69 6e 20 6e 6f 6e 65 resolved in none
2380: 2c 20 61 6e 64 20 63 61 6c 6c 20 6d 63 75 6e 6b , and call mcunk
2390: 6e 6f 77 6e 0a 20 20 20 20 23 0a 20 20 20 20 76 nown. #. v
23a0: 61 72 69 61 62 6c 65 20 63 6f 75 6e 74 20 32 0a ariable count 2.
23b0: 20 20 20 20 76 61 72 69 61 62 6c 65 20 72 65 73 variable res
23c0: 75 6c 74 0a 20 20 20 20 61 72 72 61 79 20 73 65 ult. array se
23d0: 74 20 72 65 73 75 6c 74 20 7b 0a 09 66 6f 6f 2c t result {..foo,
23e0: 6f 76 30 20 6f 76 30 5f 52 4f 4f 54 20 66 6f 6f ov0 ov0_ROOT foo
23f0: 2c 6f 76 31 20 6f 76 31 5f 66 6f 6f 20 66 6f 6f ,ov1 ov1_foo foo
2400: 2c 6f 76 32 20 6f 76 32 5f 66 6f 6f 0a 20 20 20 ,ov2 ov2_foo.
2410: 20 20 20 20 20 66 6f 6f 2c 6f 76 33 20 6f 76 33 foo,ov3 ov3
2420: 5f 66 6f 6f 20 66 6f 6f 2c 6f 76 34 20 6f 76 34 _foo foo,ov4 ov4
2430: 0a 09 66 6f 6f 5f 42 41 52 2c 6f 76 30 20 6f 76 ..foo_BAR,ov0 ov
2440: 30 5f 52 4f 4f 54 20 66 6f 6f 5f 42 41 52 2c 6f 0_ROOT foo_BAR,o
2450: 76 31 20 6f 76 31 5f 66 6f 6f 20 66 6f 6f 5f 42 v1 ov1_foo foo_B
2460: 41 52 2c 6f 76 32 20 6f 76 32 5f 66 6f 6f 5f 42 AR,ov2 ov2_foo_B
2470: 41 52 0a 20 20 20 20 20 20 20 20 66 6f 6f 5f 42 AR. foo_B
2480: 41 52 2c 6f 76 33 20 6f 76 33 5f 66 6f 6f 5f 42 AR,ov3 ov3_foo_B
2490: 41 52 09 66 6f 6f 5f 42 41 52 2c 6f 76 34 20 6f AR.foo_BAR,ov4 o
24a0: 76 34 0a 20 20 20 20 20 20 20 20 66 6f 6f 5f 42 v4. foo_B
24b0: 41 52 5f 62 61 7a 2c 6f 76 30 20 6f 76 30 5f 52 AR_baz,ov0 ov0_R
24c0: 4f 4f 54 20 66 6f 6f 5f 42 41 52 5f 62 61 7a 2c OOT foo_BAR_baz,
24d0: 6f 76 31 20 6f 76 31 5f 66 6f 6f 0a 20 20 20 20 ov1 ov1_foo.
24e0: 20 20 20 20 66 6f 6f 5f 42 41 52 5f 62 61 7a 2c foo_BAR_baz,
24f0: 6f 76 32 20 6f 76 32 5f 66 6f 6f 5f 42 41 52 0a ov2 ov2_foo_BAR.
2500: 09 66 6f 6f 5f 42 41 52 5f 62 61 7a 2c 6f 76 33 .foo_BAR_baz,ov3
2510: 20 6f 76 33 5f 66 6f 6f 5f 42 41 52 5f 62 61 7a ov3_foo_BAR_baz
2520: 20 66 6f 6f 5f 42 41 52 5f 62 61 7a 2c 6f 76 34 foo_BAR_baz,ov4
2530: 20 6f 76 34 0a 20 20 20 20 7d 0a 20 20 20 20 76 ov4. }. v
2540: 61 72 69 61 62 6c 65 20 6c 6f 63 0a 20 20 20 20 ariable loc.
2550: 76 61 72 69 61 62 6c 65 20 73 74 72 69 6e 67 0a variable string.
2560: 20 20 20 20 66 6f 72 65 61 63 68 20 6c 6f 63 20 foreach loc
2570: 7b 66 6f 6f 20 66 6f 6f 5f 42 41 52 20 66 6f 6f {foo foo_BAR foo
2580: 5f 42 41 52 5f 62 61 7a 7d 20 7b 0a 09 66 6f 72 _BAR_baz} {..for
2590: 65 61 63 68 20 73 74 72 69 6e 67 20 7b 6f 76 30 each string {ov0
25a0: 20 6f 76 31 20 6f 76 32 20 6f 76 33 20 6f 76 34 ov1 ov2 ov3 ov4
25b0: 7d 20 7b 0a 09 20 20 20 20 74 65 73 74 20 6d 73 } {.. test ms
25c0: 67 63 61 74 2d 33 2e 24 63 6f 75 6e 74 20 7b 6d gcat-3.$count {m
25d0: 63 73 65 74 2c 20 6f 76 65 72 6c 61 70 7d 20 2d cset, overlap} -
25e0: 73 65 74 75 70 20 7b 0a 09 09 6d 63 73 65 74 20 setup {...mcset
25f0: 7b 7d 20 6f 76 30 20 6f 76 30 5f 52 4f 4f 54 0a {} ov0 ov0_ROOT.
2600: 09 09 6d 63 73 65 74 20 7b 7d 20 6f 76 31 20 6f ..mcset {} ov1 o
2610: 76 31 5f 52 4f 4f 54 0a 09 09 6d 63 73 65 74 20 v1_ROOT...mcset
2620: 7b 7d 20 6f 76 32 20 6f 76 32 5f 52 4f 4f 54 0a {} ov2 ov2_ROOT.
2630: 09 09 6d 63 73 65 74 20 7b 7d 20 6f 76 33 20 6f ..mcset {} ov3 o
2640: 76 33 5f 52 4f 4f 54 0a 09 09 6d 63 73 65 74 20 v3_ROOT...mcset
2650: 66 6f 6f 20 6f 76 31 20 6f 76 31 5f 66 6f 6f 0a foo ov1 ov1_foo.
2660: 09 09 6d 63 73 65 74 20 66 6f 6f 20 6f 76 32 20 ..mcset foo ov2
2670: 6f 76 32 5f 66 6f 6f 0a 09 09 6d 63 73 65 74 20 ov2_foo...mcset
2680: 66 6f 6f 20 6f 76 33 20 6f 76 33 5f 66 6f 6f 0a foo ov3 ov3_foo.
2690: 09 09 6d 63 73 65 74 20 66 6f 6f 5f 42 41 52 20 ..mcset foo_BAR
26a0: 6f 76 32 20 6f 76 32 5f 66 6f 6f 5f 42 41 52 0a ov2 ov2_foo_BAR.
26b0: 09 09 6d 63 73 65 74 20 66 6f 6f 5f 42 41 52 20 ..mcset foo_BAR
26c0: 6f 76 33 20 6f 76 33 5f 66 6f 6f 5f 42 41 52 0a ov3 ov3_foo_BAR.
26d0: 09 09 6d 63 73 65 74 20 66 6f 6f 5f 42 41 52 5f ..mcset foo_BAR_
26e0: 62 61 7a 20 6f 76 33 20 6f 76 33 5f 66 6f 6f 5f baz ov3 ov3_foo_
26f0: 42 41 52 5f 62 61 7a 0a 09 09 76 61 72 69 61 62 BAR_baz...variab
2700: 6c 65 20 6c 6f 63 61 6c 65 20 5b 6d 63 6c 6f 63 le locale [mcloc
2710: 61 6c 65 5d 0a 09 09 6d 63 6c 6f 63 61 6c 65 20 ale]...mclocale
2720: 24 6c 6f 63 0a 09 20 20 20 20 7d 20 2d 63 6c 65 $loc.. } -cle
2730: 61 6e 75 70 20 7b 0a 09 09 6d 63 6c 6f 63 61 6c anup {...mclocal
2740: 65 20 24 6c 6f 63 61 6c 65 0a 09 20 20 20 20 7d e $locale.. }
2750: 20 2d 62 6f 64 79 20 7b 0a 09 09 6d 63 20 24 73 -body {...mc $s
2760: 74 72 69 6e 67 0a 09 20 20 20 20 7d 20 2d 72 65 tring.. } -re
2770: 73 75 6c 74 20 24 72 65 73 75 6c 74 28 24 6c 6f sult $result($lo
2780: 63 2c 24 73 74 72 69 6e 67 29 0a 09 20 20 20 20 c,$string)..
2790: 69 6e 63 72 20 63 6f 75 6e 74 0a 09 7d 0a 20 20 incr count..}.
27a0: 20 20 7d 0a 20 20 20 20 75 6e 73 65 74 20 2d 6e }. unset -n
27b0: 6f 63 6f 6d 70 6c 61 69 6e 20 72 65 73 75 6c 74 ocomplain result
27c0: 0a 0a 20 20 20 20 23 20 54 65 73 74 73 20 6d 73 .. # Tests ms
27d0: 67 63 61 74 2d 34 2e 2a 3a 20 5b 6d 63 75 6e 6b gcat-4.*: [mcunk
27e0: 6e 6f 77 6e 5d 0a 0a 20 20 20 20 74 65 73 74 20 nown].. test
27f0: 6d 73 67 63 61 74 2d 34 2e 32 20 7b 6d 63 75 6e msgcat-4.2 {mcun
2800: 6b 6e 6f 77 6e 2c 20 64 65 66 61 75 6c 74 7d 20 known, default}
2810: 2d 73 65 74 75 70 20 7b 0a 09 6d 63 73 65 74 20 -setup {..mcset
2820: 66 6f 6f 20 75 6e 6b 31 20 22 75 6e 6b 6e 6f 77 foo unk1 "unknow
2830: 6e 20 31 22 0a 09 76 61 72 69 61 62 6c 65 20 6c n 1"..variable l
2840: 6f 63 61 6c 65 20 5b 6d 63 6c 6f 63 61 6c 65 5d ocale [mclocale]
2850: 0a 09 6d 63 6c 6f 63 61 6c 65 20 66 6f 6f 0a 20 ..mclocale foo.
2860: 20 20 20 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a } -cleanup {.
2870: 09 6d 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 6c .mclocale $local
2880: 65 0a 20 20 20 20 7d 20 2d 62 6f 64 79 20 7b 0a e. } -body {.
2890: 09 6d 63 20 75 6e 6b 31 0a 20 20 20 20 7d 20 2d .mc unk1. } -
28a0: 72 65 73 75 6c 74 20 7b 75 6e 6b 6e 6f 77 6e 20 result {unknown
28b0: 31 7d 0a 0a 20 20 20 20 74 65 73 74 20 6d 73 67 1}.. test msg
28c0: 63 61 74 2d 34 2e 33 20 7b 6d 63 75 6e 6b 6e 6f cat-4.3 {mcunkno
28d0: 77 6e 2c 20 64 65 66 61 75 6c 74 7d 20 2d 73 65 wn, default} -se
28e0: 74 75 70 20 7b 0a 09 6d 63 73 65 74 20 66 6f 6f tup {..mcset foo
28f0: 20 75 6e 6b 31 20 22 75 6e 6b 6e 6f 77 6e 20 31 unk1 "unknown 1
2900: 22 0a 09 76 61 72 69 61 62 6c 65 20 6c 6f 63 61 "..variable loca
2910: 6c 65 20 5b 6d 63 6c 6f 63 61 6c 65 5d 0a 09 6d le [mclocale]..m
2920: 63 6c 6f 63 61 6c 65 20 66 6f 6f 0a 20 20 20 20 clocale foo.
2930: 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 6d 63 } -cleanup {..mc
2940: 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 6c 65 0a 20 locale $locale.
2950: 20 20 20 7d 20 2d 62 6f 64 79 20 7b 0a 09 6d 63 } -body {..mc
2960: 20 75 6e 6b 32 0a 20 20 20 20 7d 20 2d 72 65 73 unk2. } -res
2970: 75 6c 74 20 75 6e 6b 32 0a 0a 20 20 20 20 74 65 ult unk2.. te
2980: 73 74 20 6d 73 67 63 61 74 2d 34 2e 34 20 7b 6d st msgcat-4.4 {m
2990: 63 75 6e 6b 6e 6f 77 6e 2c 20 6f 76 65 72 72 69 cunknown, overri
29a0: 64 64 65 6e 7d 20 2d 73 65 74 75 70 20 7b 0a 09 dden} -setup {..
29b0: 72 65 6e 61 6d 65 20 3a 3a 6d 73 67 63 61 74 3a rename ::msgcat:
29c0: 3a 6d 63 75 6e 6b 6e 6f 77 6e 20 53 61 76 65 64 :mcunknown Saved
29d0: 4d 63 75 6e 6b 6e 6f 77 6e 0a 09 70 72 6f 63 20 Mcunknown..proc
29e0: 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 75 6e 6b 6e ::msgcat::mcunkn
29f0: 6f 77 6e 20 7b 64 6f 6d 20 73 7d 20 7b 0a 20 20 own {dom s} {.
2a00: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return
2a10: 20 75 6e 6b 6e 6f 77 6e 3a 24 64 6f 6d 3a 24 73 unknown:$dom:$s
2a20: 0a 09 7d 0a 09 6d 63 73 65 74 20 66 6f 6f 20 75 ..}..mcset foo u
2a30: 6e 6b 31 20 22 75 6e 6b 6e 6f 77 6e 20 31 22 0a nk1 "unknown 1".
2a40: 09 76 61 72 69 61 62 6c 65 20 6c 6f 63 61 6c 65 .variable locale
2a50: 20 5b 6d 63 6c 6f 63 61 6c 65 5d 0a 09 6d 63 6c [mclocale]..mcl
2a60: 6f 63 61 6c 65 20 66 6f 6f 0a 20 20 20 20 7d 20 ocale foo. }
2a70: 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 6d 63 6c 6f -cleanup {..mclo
2a80: 63 61 6c 65 20 24 6c 6f 63 61 6c 65 0a 09 72 65 cale $locale..re
2a90: 6e 61 6d 65 20 3a 3a 6d 73 67 63 61 74 3a 3a 6d name ::msgcat::m
2aa0: 63 75 6e 6b 6e 6f 77 6e 20 7b 7d 0a 09 72 65 6e cunknown {}..ren
2ab0: 61 6d 65 20 53 61 76 65 64 4d 63 75 6e 6b 6e 6f ame SavedMcunkno
2ac0: 77 6e 20 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 75 wn ::msgcat::mcu
2ad0: 6e 6b 6e 6f 77 6e 0a 20 20 20 20 7d 20 2d 62 6f nknown. } -bo
2ae0: 64 79 20 7b 0a 09 6d 63 20 75 6e 6b 31 0a 20 20 dy {..mc unk1.
2af0: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 75 6e 6b } -result {unk
2b00: 6e 6f 77 6e 20 31 7d 0a 0a 20 20 20 20 74 65 73 nown 1}.. tes
2b10: 74 20 6d 73 67 63 61 74 2d 34 2e 35 20 7b 6d 63 t msgcat-4.5 {mc
2b20: 75 6e 6b 6e 6f 77 6e 2c 20 6f 76 65 72 72 69 64 unknown, overrid
2b30: 64 65 6e 7d 20 2d 73 65 74 75 70 20 7b 0a 09 72 den} -setup {..r
2b40: 65 6e 61 6d 65 20 3a 3a 6d 73 67 63 61 74 3a 3a ename ::msgcat::
2b50: 6d 63 75 6e 6b 6e 6f 77 6e 20 53 61 76 65 64 4d mcunknown SavedM
2b60: 63 75 6e 6b 6e 6f 77 6e 0a 09 70 72 6f 63 20 3a cunknown..proc :
2b70: 3a 6d 73 67 63 61 74 3a 3a 6d 63 75 6e 6b 6e 6f :msgcat::mcunkno
2b80: 77 6e 20 7b 64 6f 6d 20 73 7d 20 7b 0a 20 20 20 wn {dom s} {.
2b90: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return
2ba0: 75 6e 6b 6e 6f 77 6e 3a 24 64 6f 6d 3a 24 73 0a unknown:$dom:$s.
2bb0: 09 7d 0a 09 6d 63 73 65 74 20 66 6f 6f 20 75 6e .}..mcset foo un
2bc0: 6b 31 20 22 75 6e 6b 6e 6f 77 6e 20 31 22 0a 09 k1 "unknown 1"..
2bd0: 76 61 72 69 61 62 6c 65 20 6c 6f 63 61 6c 65 20 variable locale
2be0: 5b 6d 63 6c 6f 63 61 6c 65 5d 0a 09 6d 63 6c 6f [mclocale]..mclo
2bf0: 63 61 6c 65 20 66 6f 6f 0a 20 20 20 20 7d 20 2d cale foo. } -
2c00: 63 6c 65 61 6e 75 70 20 7b 0a 09 6d 63 6c 6f 63 cleanup {..mcloc
2c10: 61 6c 65 20 24 6c 6f 63 61 6c 65 0a 09 72 65 6e ale $locale..ren
2c20: 61 6d 65 20 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 ame ::msgcat::mc
2c30: 75 6e 6b 6e 6f 77 6e 20 7b 7d 0a 09 72 65 6e 61 unknown {}..rena
2c40: 6d 65 20 53 61 76 65 64 4d 63 75 6e 6b 6e 6f 77 me SavedMcunknow
2c50: 6e 20 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 75 6e n ::msgcat::mcun
2c60: 6b 6e 6f 77 6e 0a 20 20 20 20 7d 20 2d 62 6f 64 known. } -bod
2c70: 79 20 7b 0a 09 6d 63 20 75 6e 6b 32 0a 20 20 20 y {..mc unk2.
2c80: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 75 6e 6b 6e } -result {unkn
2c90: 6f 77 6e 3a 66 6f 6f 3a 75 6e 6b 32 7d 0a 0a 20 own:foo:unk2}..
2ca0: 20 20 20 74 65 73 74 20 6d 73 67 63 61 74 2d 34 test msgcat-4
2cb0: 2e 36 20 7b 6d 63 75 6e 6b 6e 6f 77 6e 2c 20 75 .6 {mcunknown, u
2cc0: 70 6c 65 76 65 6c 20 63 6f 6e 74 65 78 74 7d 20 plevel context}
2cd0: 2d 73 65 74 75 70 20 7b 0a 09 72 65 6e 61 6d 65 -setup {..rename
2ce0: 20 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 75 6e 6b ::msgcat::mcunk
2cf0: 6e 6f 77 6e 20 53 61 76 65 64 4d 63 75 6e 6b 6e nown SavedMcunkn
2d00: 6f 77 6e 0a 09 70 72 6f 63 20 3a 3a 6d 73 67 63 own..proc ::msgc
2d10: 61 74 3a 3a 6d 63 75 6e 6b 6e 6f 77 6e 20 7b 64 at::mcunknown {d
2d20: 6f 6d 20 73 7d 20 7b 0a 20 20 20 20 20 20 20 20 om s} {.
2d30: 20 20 20 20 72 65 74 75 72 6e 20 22 75 6e 6b 6e return "unkn
2d40: 6f 77 6e 3a 24 64 6f 6d 3a 24 73 3a 5b 65 78 70 own:$dom:$s:[exp
2d50: 72 20 7b 5b 69 6e 66 6f 20 6c 65 76 65 6c 5d 20 r {[info level]
2d60: 2d 20 31 7d 5d 22 0a 09 7d 0a 09 6d 63 73 65 74 - 1}]"..}..mcset
2d70: 20 66 6f 6f 20 75 6e 6b 31 20 22 75 6e 6b 6e 6f foo unk1 "unkno
2d80: 77 6e 20 31 22 0a 09 76 61 72 69 61 62 6c 65 20 wn 1"..variable
2d90: 6c 6f 63 61 6c 65 20 5b 6d 63 6c 6f 63 61 6c 65 locale [mclocale
2da0: 5d 0a 09 6d 63 6c 6f 63 61 6c 65 20 66 6f 6f 0a ]..mclocale foo.
2db0: 20 20 20 20 7d 20 2d 63 6c 65 61 6e 75 70 20 7b } -cleanup {
2dc0: 0a 09 6d 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 ..mclocale $loca
2dd0: 6c 65 0a 09 72 65 6e 61 6d 65 20 3a 3a 6d 73 67 le..rename ::msg
2de0: 63 61 74 3a 3a 6d 63 75 6e 6b 6e 6f 77 6e 20 7b cat::mcunknown {
2df0: 7d 0a 09 72 65 6e 61 6d 65 20 53 61 76 65 64 4d }..rename SavedM
2e00: 63 75 6e 6b 6e 6f 77 6e 20 3a 3a 6d 73 67 63 61 cunknown ::msgca
2e10: 74 3a 3a 6d 63 75 6e 6b 6e 6f 77 6e 0a 20 20 20 t::mcunknown.
2e20: 20 7d 20 2d 62 6f 64 79 20 7b 0a 09 6d 63 20 75 } -body {..mc u
2e30: 6e 6b 32 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c nk2. } -resul
2e40: 74 20 75 6e 6b 6e 6f 77 6e 3a 66 6f 6f 3a 75 6e t unknown:foo:un
2e50: 6b 32 3a 5b 69 6e 66 6f 20 6c 65 76 65 6c 5d 0a k2:[info level].
2e60: 0a 20 20 20 20 23 20 54 65 73 74 73 20 6d 73 67 . # Tests msg
2e70: 63 61 74 2d 35 2e 2a 3a 20 5b 6d 63 6c 6f 61 64 cat-5.*: [mcload
2e80: 5d 0a 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 ].. variable
2e90: 6c 6f 63 61 6c 65 73 20 7b 7b 7d 20 66 6f 6f 20 locales {{} foo
2ea0: 66 6f 6f 5f 42 41 52 20 66 6f 6f 5f 42 41 52 5f foo_BAR foo_BAR_
2eb0: 62 61 7a 7d 0a 20 20 20 20 73 65 74 20 6d 73 67 baz}. set msg
2ec0: 64 69 72 20 5b 6d 61 6b 65 44 69 72 65 63 74 6f dir [makeDirecto
2ed0: 72 79 20 6d 73 67 64 69 72 5d 0a 20 20 20 20 66 ry msgdir]. f
2ee0: 6f 72 65 61 63 68 20 6c 6f 63 20 24 6c 6f 63 61 oreach loc $loca
2ef0: 6c 65 73 20 7b 0a 09 69 66 20 7b 20 24 6c 6f 63 les {..if { $loc
2f00: 20 65 71 20 7b 7d 20 7d 20 7b 0a 09 20 20 20 20 eq {} } {..
2f10: 73 65 74 20 6d 73 67 20 52 4f 4f 54 0a 20 20 20 set msg ROOT.
2f20: 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 20 } else {..
2f30: 20 20 20 73 65 74 20 6d 73 67 20 5b 73 74 72 69 set msg [stri
2f40: 6e 67 20 74 6f 6c 6f 77 65 72 20 24 6c 6f 63 5d ng tolower $loc]
2f50: 0a 09 7d 0a 09 6d 61 6b 65 46 69 6c 65 20 5b 6c ..}..makeFile [l
2f60: 69 73 74 20 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 ist ::msgcat::mc
2f70: 73 65 74 20 24 6c 6f 63 20 61 62 63 20 61 62 63 set $loc abc abc
2f80: 2d 24 6c 6f 63 5d 20 24 6d 73 67 2e 6d 73 67 20 -$loc] $msg.msg
2f90: 24 6d 73 67 64 69 72 0a 20 20 20 20 7d 0a 20 20 $msgdir. }.
2fa0: 20 20 76 61 72 69 61 62 6c 65 20 63 6f 75 6e 74 variable count
2fb0: 20 31 0a 20 20 20 20 66 6f 72 65 61 63 68 20 6c 1. foreach l
2fc0: 6f 63 20 7b 66 6f 6f 20 66 6f 6f 5f 42 41 52 20 oc {foo foo_BAR
2fd0: 66 6f 6f 5f 42 41 52 5f 62 61 7a 7d 20 7b 0a 09 foo_BAR_baz} {..
2fe0: 74 65 73 74 20 6d 73 67 63 61 74 2d 35 2e 24 63 test msgcat-5.$c
2ff0: 6f 75 6e 74 20 7b 6d 63 6c 6f 61 64 7d 20 2d 73 ount {mcload} -s
3000: 65 74 75 70 20 7b 0a 09 20 20 20 20 76 61 72 69 etup {.. vari
3010: 61 62 6c 65 20 6c 6f 63 61 6c 65 20 5b 6d 63 6c able locale [mcl
3020: 6f 63 61 6c 65 5d 0a 09 20 20 20 20 3a 3a 6d 73 ocale].. ::ms
3030: 67 63 61 74 3a 3a 6d 63 6c 6f 63 61 6c 65 20 22 gcat::mclocale "
3040: 22 0a 09 20 20 20 20 3a 3a 6d 73 67 63 61 74 3a ".. ::msgcat:
3050: 3a 6d 63 6c 6f 61 64 65 64 6c 6f 63 61 6c 65 73 :mcloadedlocales
3060: 20 63 6c 65 61 72 0a 09 20 20 20 20 3a 3a 6d 73 clear.. ::ms
3070: 67 63 61 74 3a 3a 6d 63 70 61 63 6b 61 67 65 63 gcat::mcpackagec
3080: 6f 6e 66 69 67 20 75 6e 73 65 74 20 6d 63 66 6f onfig unset mcfo
3090: 6c 64 65 72 0a 09 20 20 20 20 6d 63 6c 6f 63 61 lder.. mcloca
30a0: 6c 65 20 24 6c 6f 63 0a 09 7d 20 2d 63 6c 65 61 le $loc..} -clea
30b0: 6e 75 70 20 7b 0a 09 20 20 20 20 6d 63 6c 6f 63 nup {.. mcloc
30c0: 61 6c 65 20 24 6c 6f 63 61 6c 65 0a 09 20 20 20 ale $locale..
30d0: 20 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 6c 6f 61 ::msgcat::mcloa
30e0: 64 65 64 6c 6f 63 61 6c 65 73 20 63 6c 65 61 72 dedlocales clear
30f0: 0a 09 20 20 20 20 3a 3a 6d 73 67 63 61 74 3a 3a .. ::msgcat::
3100: 6d 63 70 61 63 6b 61 67 65 63 6f 6e 66 69 67 20 mcpackageconfig
3110: 75 6e 73 65 74 20 6d 63 66 6f 6c 64 65 72 0a 09 unset mcfolder..
3120: 7d 20 2d 62 6f 64 79 20 7b 0a 09 20 20 20 20 6d } -body {.. m
3130: 63 6c 6f 61 64 20 24 6d 73 67 64 69 72 0a 09 7d cload $msgdir..}
3140: 20 2d 72 65 73 75 6c 74 20 5b 65 78 70 72 20 7b -result [expr {
3150: 20 24 63 6f 75 6e 74 2b 31 20 7d 5d 0a 09 69 6e $count+1 }]..in
3160: 63 72 20 63 6f 75 6e 74 0a 20 20 20 20 7d 0a 0a cr count. }..
3170: 20 20 20 20 23 20 45 76 65 6e 20 74 68 6f 75 67 # Even thoug
3180: 68 20 66 6f 6f 5f 42 41 52 5f 6e 6f 74 65 78 69 h foo_BAR_notexi
3190: 73 74 20 64 6f 65 73 20 6e 6f 74 20 65 78 69 73 st does not exis
31a0: 74 2c 0a 20 20 20 20 23 20 66 6f 6f 5f 42 41 52 t,. # foo_BAR
31b0: 2c 20 66 6f 6f 20 61 6e 64 20 74 68 65 20 72 6f , foo and the ro
31c0: 6f 74 20 73 68 6f 75 6c 64 20 62 65 20 6c 6f 61 ot should be loa
31d0: 64 65 64 2e 0a 09 74 65 73 74 20 6d 73 67 63 61 ded...test msgca
31e0: 74 2d 35 2e 34 20 7b 6d 63 6c 6f 61 64 7d 20 2d t-5.4 {mcload} -
31f0: 73 65 74 75 70 20 7b 0a 09 20 20 20 20 76 61 72 setup {.. var
3200: 69 61 62 6c 65 20 6c 6f 63 61 6c 65 20 5b 6d 63 iable locale [mc
3210: 6c 6f 63 61 6c 65 5d 0a 09 20 20 20 20 6d 63 6c locale].. mcl
3220: 6f 63 61 6c 65 20 66 6f 6f 5f 42 41 52 5f 6e 6f ocale foo_BAR_no
3230: 74 65 78 69 73 74 0a 09 7d 20 2d 63 6c 65 61 6e texist..} -clean
3240: 75 70 20 7b 0a 09 20 20 20 20 6d 63 6c 6f 63 61 up {.. mcloca
3250: 6c 65 20 24 6c 6f 63 61 6c 65 0a 09 20 20 20 20 le $locale..
3260: 6d 63 6c 6f 61 64 65 64 6c 6f 63 61 6c 65 73 20 mcloadedlocales
3270: 63 6c 65 61 72 0a 09 20 20 20 20 6d 63 70 61 63 clear.. mcpac
3280: 6b 61 67 65 63 6f 6e 66 69 67 20 75 6e 73 65 74 kageconfig unset
3290: 20 6d 63 66 6f 6c 64 65 72 0a 09 7d 20 2d 62 6f mcfolder..} -bo
32a0: 64 79 20 7b 0a 09 20 20 20 20 6d 63 6c 6f 61 64 dy {.. mcload
32b0: 20 24 6d 73 67 64 69 72 0a 09 7d 20 2d 72 65 73 $msgdir..} -res
32c0: 75 6c 74 20 33 0a 0a 09 74 65 73 74 20 6d 73 67 ult 3...test msg
32d0: 63 61 74 2d 35 2e 35 20 7b 6d 63 6c 6f 61 64 7d cat-5.5 {mcload}
32e0: 20 2d 73 65 74 75 70 20 7b 0a 09 20 20 20 20 76 -setup {.. v
32f0: 61 72 69 61 62 6c 65 20 6c 6f 63 61 6c 65 20 5b ariable locale [
3300: 6d 63 6c 6f 63 61 6c 65 5d 0a 09 20 20 20 20 6d mclocale].. m
3310: 63 6c 6f 63 61 6c 65 20 6e 6f 5f 46 49 5f 6e 6f clocale no_FI_no
3320: 74 65 78 69 73 74 0a 09 7d 20 2d 63 6c 65 61 6e texist..} -clean
3330: 75 70 20 7b 0a 09 20 20 20 20 6d 63 6c 6f 63 61 up {.. mcloca
3340: 6c 65 20 24 6c 6f 63 61 6c 65 0a 09 20 20 20 20 le $locale..
3350: 6d 63 6c 6f 61 64 65 64 6c 6f 63 61 6c 65 73 20 mcloadedlocales
3360: 63 6c 65 61 72 0a 09 20 20 20 20 6d 63 70 61 63 clear.. mcpac
3370: 6b 61 67 65 63 6f 6e 66 69 67 20 75 6e 73 65 74 kageconfig unset
3380: 20 6d 63 66 6f 6c 64 65 72 0a 09 7d 20 2d 62 6f mcfolder..} -bo
3390: 64 79 20 7b 0a 09 20 20 20 20 6d 63 6c 6f 61 64 dy {.. mcload
33a0: 20 24 6d 73 67 64 69 72 0a 09 7d 20 2d 72 65 73 $msgdir..} -res
33b0: 75 6c 74 20 31 0a 0a 09 74 65 73 74 20 6d 73 67 ult 1...test msg
33c0: 63 61 74 2d 35 2e 36 20 7b 6d 63 6c 6f 61 64 7d cat-5.6 {mcload}
33d0: 20 2d 73 65 74 75 70 20 7b 0a 09 20 20 20 20 76 -setup {.. v
33e0: 61 72 69 61 62 6c 65 20 6c 6f 63 61 6c 65 20 5b ariable locale [
33f0: 6d 63 6c 6f 63 61 6c 65 5d 0a 09 20 20 20 20 6d mclocale].. m
3400: 63 6c 6f 63 61 6c 65 20 66 6f 6f 0a 09 20 20 20 clocale foo..
3410: 20 6d 63 6c 6f 61 64 20 24 6d 73 67 64 69 72 0a mcload $msgdir.
3420: 09 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 20 .} -cleanup {..
3430: 20 20 20 6d 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 mclocale $loc
3440: 61 6c 65 0a 09 7d 20 2d 62 6f 64 79 20 7b 0a 09 ale..} -body {..
3450: 20 20 20 20 6d 63 20 61 62 63 0a 09 7d 20 2d 72 mc abc..} -r
3460: 65 73 75 6c 74 20 61 62 63 2d 66 6f 6f 0a 0a 09 esult abc-foo...
3470: 74 65 73 74 20 6d 73 67 63 61 74 2d 35 2e 37 20 test msgcat-5.7
3480: 7b 6d 63 6c 6f 61 64 7d 20 2d 73 65 74 75 70 20 {mcload} -setup
3490: 7b 0a 09 20 20 20 20 76 61 72 69 61 62 6c 65 20 {.. variable
34a0: 6c 6f 63 61 6c 65 20 5b 6d 63 6c 6f 63 61 6c 65 locale [mclocale
34b0: 5d 0a 09 20 20 20 20 6d 63 6c 6f 63 61 6c 65 20 ].. mclocale
34c0: 66 6f 6f 5f 42 41 52 0a 09 20 20 20 20 6d 63 6c foo_BAR.. mcl
34d0: 6f 61 64 20 24 6d 73 67 64 69 72 0a 09 7d 20 2d oad $msgdir..} -
34e0: 63 6c 65 61 6e 75 70 20 7b 0a 09 20 20 20 20 6d cleanup {.. m
34f0: 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 6c 65 0a clocale $locale.
3500: 09 7d 20 2d 62 6f 64 79 20 7b 0a 09 20 20 20 20 .} -body {..
3510: 6d 63 20 61 62 63 0a 09 7d 20 2d 72 65 73 75 6c mc abc..} -resul
3520: 74 20 61 62 63 2d 66 6f 6f 5f 42 41 52 0a 0a 09 t abc-foo_BAR...
3530: 74 65 73 74 20 6d 73 67 63 61 74 2d 35 2e 38 20 test msgcat-5.8
3540: 7b 6d 63 6c 6f 61 64 7d 20 2d 73 65 74 75 70 20 {mcload} -setup
3550: 7b 0a 09 20 20 20 20 76 61 72 69 61 62 6c 65 20 {.. variable
3560: 6c 6f 63 61 6c 65 20 5b 6d 63 6c 6f 63 61 6c 65 locale [mclocale
3570: 5d 0a 09 20 20 20 20 6d 63 6c 6f 63 61 6c 65 20 ].. mclocale
3580: 66 6f 6f 5f 42 41 52 5f 62 61 7a 0a 09 20 20 20 foo_BAR_baz..
3590: 20 6d 63 6c 6f 61 64 20 24 6d 73 67 64 69 72 0a mcload $msgdir.
35a0: 09 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 20 .} -cleanup {..
35b0: 20 20 20 6d 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 mclocale $loc
35c0: 61 6c 65 0a 09 7d 20 2d 62 6f 64 79 20 7b 0a 09 ale..} -body {..
35d0: 20 20 20 20 6d 63 20 61 62 63 0a 09 7d 20 2d 72 mc abc..} -r
35e0: 65 73 75 6c 74 20 61 62 63 2d 66 6f 6f 5f 42 41 esult abc-foo_BA
35f0: 52 5f 62 61 7a 0a 0a 09 74 65 73 74 20 6d 73 67 R_baz...test msg
3600: 63 61 74 2d 35 2e 39 20 7b 6d 63 6c 6f 61 64 7d cat-5.9 {mcload}
3610: 20 2d 73 65 74 75 70 20 7b 0a 09 20 20 20 20 76 -setup {.. v
3620: 61 72 69 61 62 6c 65 20 6c 6f 63 61 6c 65 20 5b ariable locale [
3630: 6d 63 6c 6f 63 61 6c 65 5d 0a 09 20 20 20 20 6d mclocale].. m
3640: 63 6c 6f 63 61 6c 65 20 6e 6f 5f 46 49 5f 6e 6f clocale no_FI_no
3650: 74 65 78 69 73 74 0a 09 20 20 20 20 6d 63 6c 6f texist.. mclo
3660: 61 64 20 24 6d 73 67 64 69 72 0a 09 7d 20 2d 63 ad $msgdir..} -c
3670: 6c 65 61 6e 75 70 20 7b 0a 09 20 20 20 20 6d 63 leanup {.. mc
3680: 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 6c 65 0a 09 locale $locale..
3690: 7d 20 2d 62 6f 64 79 20 7b 0a 09 20 20 20 20 6d } -body {.. m
36a0: 63 20 61 62 63 0a 09 7d 20 2d 72 65 73 75 6c 74 c abc..} -result
36b0: 20 61 62 63 2d 0a 0a 09 74 65 73 74 20 6d 73 67 abc-...test msg
36c0: 63 61 74 2d 35 2e 31 30 20 7b 6d 63 6c 6f 61 64 cat-5.10 {mcload
36d0: 7d 20 2d 73 65 74 75 70 20 7b 0a 09 20 20 20 20 } -setup {..
36e0: 72 65 6e 61 6d 65 20 3a 3a 6d 73 67 63 61 74 3a rename ::msgcat:
36f0: 3a 6d 63 75 6e 6b 6e 6f 77 6e 20 53 61 76 65 64 :mcunknown Saved
3700: 4d 63 75 6e 6b 6e 6f 77 6e 0a 09 20 20 20 20 70 Mcunknown.. p
3710: 72 6f 63 20 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 roc ::msgcat::mc
3720: 75 6e 6b 6e 6f 77 6e 20 7b 64 6f 6d 20 73 7d 20 unknown {dom s}
3730: 7b 0a 09 09 72 65 74 75 72 6e 20 75 6e 6b 6e 6f {...return unkno
3740: 77 6e 3a 24 64 6f 6d 3a 24 73 0a 09 20 20 20 20 wn:$dom:$s..
3750: 7d 0a 09 20 20 20 20 76 61 72 69 61 62 6c 65 20 }.. variable
3760: 6c 6f 63 61 6c 65 20 5b 6d 63 6c 6f 63 61 6c 65 locale [mclocale
3770: 5d 0a 09 20 20 20 20 6d 63 6c 6f 63 61 6c 65 20 ].. mclocale
3780: 6e 6f 5f 46 49 5f 6e 6f 74 65 78 69 73 74 0a 09 no_FI_notexist..
3790: 20 20 20 20 6d 63 6c 6f 61 64 20 24 6d 73 67 64 mcload $msgd
37a0: 69 72 0a 09 7d 20 2d 63 6c 65 61 6e 75 70 20 7b ir..} -cleanup {
37b0: 0a 09 20 20 20 20 6d 63 6c 6f 63 61 6c 65 20 24 .. mclocale $
37c0: 6c 6f 63 61 6c 65 0a 09 20 20 20 20 72 65 6e 61 locale.. rena
37d0: 6d 65 20 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 75 me ::msgcat::mcu
37e0: 6e 6b 6e 6f 77 6e 20 7b 7d 0a 09 20 20 20 20 72 nknown {}.. r
37f0: 65 6e 61 6d 65 20 53 61 76 65 64 4d 63 75 6e 6b ename SavedMcunk
3800: 6e 6f 77 6e 20 3a 3a 6d 73 67 63 61 74 3a 3a 6d nown ::msgcat::m
3810: 63 75 6e 6b 6e 6f 77 6e 0a 09 7d 20 2d 62 6f 64 cunknown..} -bod
3820: 79 20 7b 0a 09 20 20 20 20 6d 63 20 64 65 66 0a y {.. mc def.
3830: 09 7d 20 2d 72 65 73 75 6c 74 20 75 6e 6b 6e 6f .} -result unkno
3840: 77 6e 3a 6e 6f 5f 66 69 5f 6e 6f 74 65 78 69 73 wn:no_fi_notexis
3850: 74 3a 64 65 66 0a 0a 09 74 65 73 74 20 6d 73 67 t:def...test msg
3860: 63 61 74 2d 35 2e 31 31 20 7b 6d 63 70 61 63 6b cat-5.11 {mcpack
3870: 61 67 65 63 6f 6e 66 69 67 20 6d 63 66 6f 6c 64 ageconfig mcfold
3880: 65 72 7d 20 2d 73 65 74 75 70 20 7b 0a 09 20 20 er} -setup {..
3890: 20 20 76 61 72 69 61 62 6c 65 20 6c 6f 63 61 6c variable local
38a0: 65 20 5b 6d 63 6c 6f 63 61 6c 65 5d 0a 09 20 20 e [mclocale]..
38b0: 20 20 6d 63 6c 6f 63 61 6c 65 20 22 22 0a 09 20 mclocale ""..
38c0: 20 20 20 6d 63 6c 6f 61 64 65 64 6c 6f 63 61 6c mcloadedlocal
38d0: 65 73 20 63 6c 65 61 72 0a 09 20 20 20 20 6d 63 es clear.. mc
38e0: 70 61 63 6b 61 67 65 63 6f 6e 66 69 67 20 75 6e packageconfig un
38f0: 73 65 74 20 6d 63 66 6f 6c 64 65 72 0a 09 7d 20 set mcfolder..}
3900: 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 20 20 20 20 -cleanup {..
3910: 6d 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 6c 65 mclocale $locale
3920: 0a 09 20 20 20 20 6d 63 6c 6f 61 64 65 64 6c 6f .. mcloadedlo
3930: 63 61 6c 65 73 20 63 6c 65 61 72 0a 09 20 20 20 cales clear..
3940: 20 6d 63 70 61 63 6b 61 67 65 63 6f 6e 66 69 67 mcpackageconfig
3950: 20 75 6e 73 65 74 20 6d 63 66 6f 6c 64 65 72 0a unset mcfolder.
3960: 09 7d 20 2d 62 6f 64 79 20 7b 0a 09 20 20 20 20 .} -body {..
3970: 6d 63 6c 6f 63 61 6c 65 20 66 6f 6f 0a 09 20 20 mclocale foo..
3980: 20 20 6d 63 70 61 63 6b 61 67 65 63 6f 6e 66 69 mcpackageconfi
3990: 67 20 73 65 74 20 6d 63 66 6f 6c 64 65 72 20 24 g set mcfolder $
39a0: 6d 73 67 64 69 72 0a 09 7d 20 2d 72 65 73 75 6c msgdir..} -resul
39b0: 74 20 32 0a 0a 20 20 20 20 66 6f 72 65 61 63 68 t 2.. foreach
39c0: 20 6c 6f 63 20 24 6c 6f 63 61 6c 65 73 20 7b 0a loc $locales {.
39d0: 09 69 66 20 7b 20 24 6c 6f 63 20 65 71 20 7b 7d .if { $loc eq {}
39e0: 20 7d 20 7b 0a 09 20 20 20 20 73 65 74 20 6d 73 } {.. set ms
39f0: 67 20 52 4f 4f 54 0a 20 20 20 20 20 20 20 20 7d g ROOT. }
3a00: 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 73 65 74 else {.. set
3a10: 20 6d 73 67 20 5b 73 74 72 69 6e 67 20 74 6f 6c msg [string tol
3a20: 6f 77 65 72 20 24 6c 6f 63 5d 0a 09 7d 0a 09 72 ower $loc]..}..r
3a30: 65 6d 6f 76 65 46 69 6c 65 20 24 6d 73 67 2e 6d emoveFile $msg.m
3a40: 73 67 20 24 6d 73 67 64 69 72 0a 20 20 20 20 7d sg $msgdir. }
3a50: 0a 20 20 20 20 72 65 6d 6f 76 65 44 69 72 65 63 . removeDirec
3a60: 74 6f 72 79 20 6d 73 67 64 69 72 0a 0a 20 20 20 tory msgdir..
3a70: 20 23 20 54 65 73 74 73 20 6d 73 67 63 61 74 2d # Tests msgcat-
3a80: 36 2e 2a 3a 20 5b 6d 63 73 65 74 5d 2c 20 5b 6d 6.*: [mcset], [m
3a90: 63 5d 20 6e 61 6d 65 73 70 61 63 65 20 69 6e 68 c] namespace inh
3aa0: 65 72 69 74 61 6e 63 65 0a 23 0a 23 20 54 65 73 eritance.#.# Tes
3ab0: 74 20 6d 63 73 65 74 20 61 6e 64 20 6d 63 2c 20 t mcset and mc,
3ac0: 65 6e 73 75 72 69 6e 67 20 74 68 61 74 20 72 65 ensuring that re
3ad0: 73 6f 6c 75 74 69 6f 6e 20 66 6f 72 20 6d 65 73 solution for mes
3ae0: 73 61 67 65 73 0a 23 20 70 72 6f 63 65 65 64 73 sages.# proceeds
3af0: 20 66 72 6f 6d 20 74 68 65 20 63 75 72 72 65 6e from the curren
3b00: 74 20 6e 73 20 74 6f 20 69 74 73 20 70 61 72 65 t ns to its pare
3b10: 6e 74 20 61 6e 64 20 73 6f 20 6f 6e 20 74 6f 20 nt and so on to
3b20: 74 68 65 0a 23 20 67 6c 6f 62 61 6c 20 6e 73 2e the.# global ns.
3b30: 0a 23 0a 23 20 44 6f 20 74 68 69 73 20 66 6f 72 .#.# Do this for
3b40: 20 74 68 65 20 31 32 20 70 65 72 6d 75 74 61 74 the 12 permutat
3b50: 69 6f 6e 73 20 6f 66 0a 23 20 20 20 20 20 6c 6f ions of.# lo
3b60: 63 61 6c 65 73 3a 20 66 6f 6f 0a 23 20 20 20 20 cales: foo.#
3b70: 20 6e 61 6d 65 73 70 61 63 65 73 3a 20 66 6f 6f namespaces: foo
3b80: 20 66 6f 6f 3a 3a 62 61 72 20 66 6f 6f 3a 3a 62 foo::bar foo::b
3b90: 61 72 3a 3a 62 61 7a 0a 23 20 20 20 20 20 73 74 ar::baz.# st
3ba0: 72 69 6e 67 73 3a 20 7b 6f 76 31 20 6f 76 32 20 rings: {ov1 ov2
3bb0: 6f 76 33 20 6f 76 34 7d 0a 23 20 20 20 20 20 6e ov3 ov4}.# n
3bc0: 61 6d 65 73 70 61 63 65 20 3a 3a 66 6f 6f 20 20 amespace ::foo
3bd0: 20 20 20 20 20 20 20 20 20 20 64 65 66 69 6e 65 define
3be0: 73 20 6f 76 31 2c 20 6f 76 32 2c 20 6f 76 33 0a s ov1, ov2, ov3.
3bf0: 23 20 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20 # namespace
3c00: 3a 3a 66 6f 6f 3a 3a 62 61 72 20 20 20 20 20 20 ::foo::bar
3c10: 20 64 65 66 69 6e 65 73 20 20 20 20 20 20 6f 76 defines ov
3c20: 32 2c 20 6f 76 33 0a 23 20 20 20 20 20 6e 61 6d 2, ov3.# nam
3c30: 65 73 70 61 63 65 20 3a 3a 66 6f 6f 3a 3a 62 61 espace ::foo::ba
3c40: 72 3a 3a 62 61 7a 20 20 64 65 66 69 6e 65 73 20 r::baz defines
3c50: 20 20 20 20 20 20 20 20 20 20 6f 76 33 0a 23 0a ov3.#.
3c60: 23 20 20 20 20 20 6f 76 34 20 69 73 20 6e 6f 74 # ov4 is not
3c70: 20 64 65 66 69 6e 65 64 20 69 6e 20 61 6e 79 20 defined in any
3c80: 6e 61 6d 65 73 70 61 63 65 2e 0a 23 0a 23 20 53 namespace..#.# S
3c90: 6f 2c 0a 23 20 20 20 20 20 6f 76 33 20 73 68 6f o,.# ov3 sho
3ca0: 75 6c 64 20 62 65 20 72 65 73 6f 6c 76 65 64 20 uld be resolved
3cb0: 69 6e 20 3a 3a 66 6f 6f 3a 3a 62 61 72 3a 3a 62 in ::foo::bar::b
3cc0: 61 7a 2c 20 3a 3a 66 6f 6f 3a 3a 62 61 72 2c 20 az, ::foo::bar,
3cd0: 3a 3a 66 6f 6f 3b 0a 23 20 20 20 20 20 6f 76 32 ::foo;.# ov2
3ce0: 20 73 68 6f 75 6c 64 20 62 65 20 72 65 73 6f 6c should be resol
3cf0: 76 65 64 20 69 6e 20 3a 3a 66 6f 6f 2c 20 3a 3a ved in ::foo, ::
3d00: 66 6f 6f 3a 3a 62 61 72 0a 23 20 20 20 20 20 6f foo::bar.# o
3d10: 76 31 20 73 68 6f 75 6c 64 20 62 65 20 72 65 73 v1 should be res
3d20: 6f 6c 76 65 64 20 69 6e 20 3a 3a 66 6f 6f 0a 23 olved in ::foo.#
3d30: 20 20 20 20 20 6f 76 34 20 73 68 6f 75 6c 64 20 ov4 should
3d40: 62 65 20 72 65 73 6f 6c 76 65 64 20 69 6e 20 6e be resolved in n
3d50: 6f 6e 65 2c 20 61 6e 64 20 63 61 6c 6c 20 6d 63 one, and call mc
3d60: 75 6e 6b 6e 6f 77 6e 0a 23 0a 0a 20 20 20 20 76 unknown.#.. v
3d70: 61 72 69 61 62 6c 65 20 72 65 73 75 6c 74 0a 20 ariable result.
3d80: 20 20 20 61 72 72 61 79 20 73 65 74 20 72 65 73 array set res
3d90: 75 6c 74 20 7b 0a 09 66 6f 6f 2c 6f 76 31 20 6f ult {..foo,ov1 o
3da0: 76 31 5f 66 6f 6f 20 66 6f 6f 2c 6f 76 32 20 6f v1_foo foo,ov2 o
3db0: 76 32 5f 66 6f 6f 20 66 6f 6f 2c 6f 76 33 20 6f v2_foo foo,ov3 o
3dc0: 76 33 5f 66 6f 6f 20 66 6f 6f 2c 6f 76 34 20 6f v3_foo foo,ov4 o
3dd0: 76 34 0a 09 66 6f 6f 3a 3a 62 61 72 2c 6f 76 31 v4..foo::bar,ov1
3de0: 20 6f 76 31 5f 66 6f 6f 20 66 6f 6f 3a 3a 62 61 ov1_foo foo::ba
3df0: 72 2c 6f 76 32 20 6f 76 32 5f 66 6f 6f 5f 62 61 r,ov2 ov2_foo_ba
3e00: 72 0a 09 66 6f 6f 3a 3a 62 61 72 2c 6f 76 33 20 r..foo::bar,ov3
3e10: 6f 76 33 5f 66 6f 6f 5f 62 61 72 20 66 6f 6f 3a ov3_foo_bar foo:
3e20: 3a 62 61 72 2c 6f 76 34 20 6f 76 34 20 66 6f 6f :bar,ov4 ov4 foo
3e30: 3a 3a 62 61 72 3a 3a 62 61 7a 2c 6f 76 31 20 6f ::bar::baz,ov1 o
3e40: 76 31 5f 66 6f 6f 0a 09 66 6f 6f 3a 3a 62 61 72 v1_foo..foo::bar
3e50: 3a 3a 62 61 7a 2c 6f 76 32 20 6f 76 32 5f 66 6f ::baz,ov2 ov2_fo
3e60: 6f 5f 62 61 72 20 66 6f 6f 3a 3a 62 61 72 3a 3a o_bar foo::bar::
3e70: 62 61 7a 2c 6f 76 33 20 6f 76 33 5f 66 6f 6f 5f baz,ov3 ov3_foo_
3e80: 62 61 72 5f 62 61 7a 0a 09 66 6f 6f 3a 3a 62 61 bar_baz..foo::ba
3e90: 72 3a 3a 62 61 7a 2c 6f 76 34 20 6f 76 34 0a 20 r::baz,ov4 ov4.
3ea0: 20 20 20 7d 0a 20 20 20 20 76 61 72 69 61 62 6c }. variabl
3eb0: 65 20 63 6f 75 6e 74 20 31 0a 20 20 20 20 76 61 e count 1. va
3ec0: 72 69 61 62 6c 65 20 6e 73 0a 20 20 20 20 66 6f riable ns. fo
3ed0: 72 65 61 63 68 20 6e 73 20 7b 66 6f 6f 20 66 6f reach ns {foo fo
3ee0: 6f 3a 3a 62 61 72 20 66 6f 6f 3a 3a 62 61 72 3a o::bar foo::bar:
3ef0: 3a 62 61 7a 7d 20 7b 0a 09 66 6f 72 65 61 63 68 :baz} {..foreach
3f00: 20 73 74 72 69 6e 67 20 7b 6f 76 31 20 6f 76 32 string {ov1 ov2
3f10: 20 6f 76 33 20 6f 76 34 7d 20 7b 0a 09 20 20 20 ov3 ov4} {..
3f20: 20 74 65 73 74 20 6d 73 67 63 61 74 2d 36 2e 24 test msgcat-6.$
3f30: 63 6f 75 6e 74 20 7b 6d 63 73 65 74 2c 20 6f 76 count {mcset, ov
3f40: 65 72 6c 61 70 7d 20 2d 73 65 74 75 70 20 7b 0a erlap} -setup {.
3f50: 09 09 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c ..namespace eval
3f60: 20 66 6f 6f 20 7b 0a 09 09 20 20 20 20 3a 3a 6d foo {... ::m
3f70: 73 67 63 61 74 3a 3a 6d 63 73 65 74 20 66 6f 6f sgcat::mcset foo
3f80: 20 6f 76 31 20 6f 76 31 5f 66 6f 6f 0a 09 09 20 ov1 ov1_foo...
3f90: 20 20 20 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 73 ::msgcat::mcs
3fa0: 65 74 20 66 6f 6f 20 6f 76 32 20 6f 76 32 5f 66 et foo ov2 ov2_f
3fb0: 6f 6f 0a 09 09 20 20 20 20 3a 3a 6d 73 67 63 61 oo... ::msgca
3fc0: 74 3a 3a 6d 63 73 65 74 20 66 6f 6f 20 6f 76 33 t::mcset foo ov3
3fd0: 20 6f 76 33 5f 66 6f 6f 0a 09 09 20 20 20 20 6e ov3_foo... n
3fe0: 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 62 61 amespace eval ba
3ff0: 72 20 7b 0a 09 09 09 3a 3a 6d 73 67 63 61 74 3a r {....::msgcat:
4000: 3a 6d 63 73 65 74 20 66 6f 6f 20 6f 76 32 20 6f :mcset foo ov2 o
4010: 76 32 5f 66 6f 6f 5f 62 61 72 0a 09 09 09 3a 3a v2_foo_bar....::
4020: 6d 73 67 63 61 74 3a 3a 6d 63 73 65 74 20 66 6f msgcat::mcset fo
4030: 6f 20 6f 76 33 20 6f 76 33 5f 66 6f 6f 5f 62 61 o ov3 ov3_foo_ba
4040: 72 0a 09 09 09 6e 61 6d 65 73 70 61 63 65 20 65 r....namespace e
4050: 76 61 6c 20 62 61 7a 20 7b 0a 09 09 09 20 20 20 val baz {....
4060: 20 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 73 65 74 ::msgcat::mcset
4070: 20 66 6f 6f 20 6f 76 33 20 22 6f 76 33 5f 66 6f foo ov3 "ov3_fo
4080: 6f 5f 62 61 72 5f 62 61 7a 22 0a 09 09 09 7d 0a o_bar_baz"....}.
4090: 09 09 20 20 20 20 7d 0a 0a 09 09 7d 0a 09 09 76 .. }....}...v
40a0: 61 72 69 61 62 6c 65 20 6c 6f 63 61 6c 65 20 5b ariable locale [
40b0: 6d 63 6c 6f 63 61 6c 65 5d 0a 09 09 6d 63 6c 6f mclocale]...mclo
40c0: 63 61 6c 65 20 66 6f 6f 0a 09 20 20 20 20 7d 20 cale foo.. }
40d0: 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 09 6d 63 6c -cleanup {...mcl
40e0: 6f 63 61 6c 65 20 24 6c 6f 63 61 6c 65 0a 09 09 ocale $locale...
40f0: 6e 61 6d 65 73 70 61 63 65 20 64 65 6c 65 74 65 namespace delete
4100: 20 66 6f 6f 0a 09 20 20 20 20 7d 20 2d 62 6f 64 foo.. } -bod
4110: 79 20 7b 0a 09 09 6e 61 6d 65 73 70 61 63 65 20 y {...namespace
4120: 65 76 61 6c 20 24 6e 73 20 5b 6c 69 73 74 20 3a eval $ns [list :
4130: 3a 6d 73 67 63 61 74 3a 3a 6d 63 20 24 73 74 72 :msgcat::mc $str
4140: 69 6e 67 5d 0a 09 20 20 20 20 7d 20 2d 72 65 73 ing].. } -res
4150: 75 6c 74 20 24 72 65 73 75 6c 74 28 24 6e 73 2c ult $result($ns,
4160: 24 73 74 72 69 6e 67 29 0a 09 20 20 20 20 69 6e $string).. in
4170: 63 72 20 63 6f 75 6e 74 0a 09 7d 0a 20 20 20 20 cr count..}.
4180: 7d 0a 0a 20 20 20 20 23 20 54 65 73 74 73 20 6d }.. # Tests m
4190: 73 67 63 61 74 2d 37 2e 2a 3a 20 5b 6d 63 5d 20 sgcat-7.*: [mc]
41a0: 65 78 74 72 61 20 61 72 67 73 20 70 72 6f 63 65 extra args proce
41b0: 73 73 65 64 20 62 79 20 5b 66 6f 72 6d 61 74 5d ssed by [format]
41c0: 0a 0a 20 20 20 20 74 65 73 74 20 6d 73 67 63 61 .. test msgca
41d0: 74 2d 37 2e 31 20 7b 6d 63 20 65 78 74 72 61 20 t-7.1 {mc extra
41e0: 61 72 67 73 20 67 6f 20 74 68 72 6f 75 67 68 20 args go through
41f0: 74 6f 20 66 6f 72 6d 61 74 7d 20 2d 73 65 74 75 to format} -setu
4200: 70 20 7b 0a 09 6d 63 73 65 74 20 66 6f 6f 20 66 p {..mcset foo f
4210: 6f 72 6d 61 74 31 20 22 74 68 69 73 20 69 73 20 ormat1 "this is
4220: 61 20 74 65 73 74 22 0a 09 6d 63 73 65 74 20 66 a test"..mcset f
4230: 6f 6f 20 66 6f 72 6d 61 74 32 20 22 74 68 69 73 oo format2 "this
4240: 20 69 73 20 61 20 25 73 22 0a 09 6d 63 73 65 74 is a %s"..mcset
4250: 20 66 6f 6f 20 66 6f 72 6d 61 74 33 20 22 74 68 foo format3 "th
4260: 69 73 20 69 73 20 61 20 25 73 20 25 73 22 0a 09 is is a %s %s"..
4270: 76 61 72 69 61 62 6c 65 20 6c 6f 63 61 6c 65 20 variable locale
4280: 5b 6d 63 6c 6f 63 61 6c 65 5d 0a 09 6d 63 6c 6f [mclocale]..mclo
4290: 63 61 6c 65 20 66 6f 6f 0a 20 20 20 20 7d 20 2d cale foo. } -
42a0: 63 6c 65 61 6e 75 70 20 7b 0a 09 6d 63 6c 6f 63 cleanup {..mcloc
42b0: 61 6c 65 20 24 6c 6f 63 61 6c 65 0a 20 20 20 20 ale $locale.
42c0: 7d 20 2d 62 6f 64 79 20 7b 0a 09 6d 63 20 66 6f } -body {..mc fo
42d0: 72 6d 61 74 31 20 22 67 6f 6f 64 20 74 65 73 74 rmat1 "good test
42e0: 22 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 ". } -result
42f0: 22 74 68 69 73 20 69 73 20 61 20 74 65 73 74 22 "this is a test"
4300: 0a 0a 20 20 20 20 74 65 73 74 20 6d 73 67 63 61 .. test msgca
4310: 74 2d 37 2e 32 20 7b 6d 63 20 65 78 74 72 61 20 t-7.2 {mc extra
4320: 61 72 67 73 20 67 6f 20 74 68 72 6f 75 67 68 20 args go through
4330: 74 6f 20 66 6f 72 6d 61 74 7d 20 2d 73 65 74 75 to format} -setu
4340: 70 20 7b 0a 09 6d 63 73 65 74 20 66 6f 6f 20 66 p {..mcset foo f
4350: 6f 72 6d 61 74 31 20 22 74 68 69 73 20 69 73 20 ormat1 "this is
4360: 61 20 74 65 73 74 22 0a 09 6d 63 73 65 74 20 66 a test"..mcset f
4370: 6f 6f 20 66 6f 72 6d 61 74 32 20 22 74 68 69 73 oo format2 "this
4380: 20 69 73 20 61 20 25 73 22 0a 09 6d 63 73 65 74 is a %s"..mcset
4390: 20 66 6f 6f 20 66 6f 72 6d 61 74 33 20 22 74 68 foo format3 "th
43a0: 69 73 20 69 73 20 61 20 25 73 20 25 73 22 0a 09 is is a %s %s"..
43b0: 76 61 72 69 61 62 6c 65 20 6c 6f 63 61 6c 65 20 variable locale
43c0: 5b 6d 63 6c 6f 63 61 6c 65 5d 0a 09 6d 63 6c 6f [mclocale]..mclo
43d0: 63 61 6c 65 20 66 6f 6f 0a 20 20 20 20 7d 20 2d cale foo. } -
43e0: 63 6c 65 61 6e 75 70 20 7b 0a 09 6d 63 6c 6f 63 cleanup {..mcloc
43f0: 61 6c 65 20 24 6c 6f 63 61 6c 65 0a 20 20 20 20 ale $locale.
4400: 7d 20 2d 62 6f 64 79 20 7b 0a 09 6d 63 20 66 6f } -body {..mc fo
4410: 72 6d 61 74 32 20 22 67 6f 6f 64 20 74 65 73 74 rmat2 "good test
4420: 22 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 ". } -result
4430: 22 74 68 69 73 20 69 73 20 61 20 67 6f 6f 64 20 "this is a good
4440: 74 65 73 74 22 0a 0a 20 20 20 20 74 65 73 74 20 test".. test
4450: 6d 73 67 63 61 74 2d 37 2e 33 20 7b 6d 63 20 65 msgcat-7.3 {mc e
4460: 72 72 6f 72 73 20 66 72 6f 6d 20 66 6f 72 6d 61 rrors from forma
4470: 74 20 61 72 65 20 70 72 6f 70 61 67 61 74 65 64 t are propagated
4480: 7d 20 2d 73 65 74 75 70 20 7b 0a 09 6d 63 73 65 } -setup {..mcse
4490: 74 20 66 6f 6f 20 66 6f 72 6d 61 74 31 20 22 74 t foo format1 "t
44a0: 68 69 73 20 69 73 20 61 20 74 65 73 74 22 0a 09 his is a test"..
44b0: 6d 63 73 65 74 20 66 6f 6f 20 66 6f 72 6d 61 74 mcset foo format
44c0: 32 20 22 74 68 69 73 20 69 73 20 61 20 25 73 22 2 "this is a %s"
44d0: 0a 09 6d 63 73 65 74 20 66 6f 6f 20 66 6f 72 6d ..mcset foo form
44e0: 61 74 33 20 22 74 68 69 73 20 69 73 20 61 20 25 at3 "this is a %
44f0: 73 20 25 73 22 0a 09 76 61 72 69 61 62 6c 65 20 s %s"..variable
4500: 6c 6f 63 61 6c 65 20 5b 6d 63 6c 6f 63 61 6c 65 locale [mclocale
4510: 5d 0a 09 6d 63 6c 6f 63 61 6c 65 20 66 6f 6f 0a ]..mclocale foo.
4520: 20 20 20 20 7d 20 2d 63 6c 65 61 6e 75 70 20 7b } -cleanup {
4530: 0a 09 6d 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 ..mclocale $loca
4540: 6c 65 0a 20 20 20 20 7d 20 2d 62 6f 64 79 20 7b le. } -body {
4550: 0a 09 63 61 74 63 68 20 7b 6d 63 20 66 6f 72 6d ..catch {mc form
4560: 61 74 33 20 22 67 6f 6f 64 20 74 65 73 74 22 7d at3 "good test"}
4570: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 31 . } -result 1
4580: 0a 0a 20 20 20 20 74 65 73 74 20 6d 73 67 63 61 .. test msgca
4590: 74 2d 37 2e 34 20 7b 6d 63 2c 20 65 78 74 72 61 t-7.4 {mc, extra
45a0: 20 61 72 67 73 20 61 72 65 20 67 69 76 65 6e 20 args are given
45b0: 74 6f 20 75 6e 6b 6e 6f 77 6e 7d 20 2d 73 65 74 to unknown} -set
45c0: 75 70 20 7b 0a 09 6d 63 73 65 74 20 66 6f 6f 20 up {..mcset foo
45d0: 66 6f 72 6d 61 74 31 20 22 74 68 69 73 20 69 73 format1 "this is
45e0: 20 61 20 74 65 73 74 22 0a 09 6d 63 73 65 74 20 a test"..mcset
45f0: 66 6f 6f 20 66 6f 72 6d 61 74 32 20 22 74 68 69 foo format2 "thi
4600: 73 20 69 73 20 61 20 25 73 22 0a 09 6d 63 73 65 s is a %s"..mcse
4610: 74 20 66 6f 6f 20 66 6f 72 6d 61 74 33 20 22 74 t foo format3 "t
4620: 68 69 73 20 69 73 20 61 20 25 73 20 25 73 22 0a his is a %s %s".
4630: 09 76 61 72 69 61 62 6c 65 20 6c 6f 63 61 6c 65 .variable locale
4640: 20 5b 6d 63 6c 6f 63 61 6c 65 5d 0a 09 6d 63 6c [mclocale]..mcl
4650: 6f 63 61 6c 65 20 66 6f 6f 0a 20 20 20 20 7d 20 ocale foo. }
4660: 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 6d 63 6c 6f -cleanup {..mclo
4670: 63 61 6c 65 20 24 6c 6f 63 61 6c 65 0a 20 20 20 cale $locale.
4680: 20 7d 20 2d 62 6f 64 79 20 7b 0a 09 6d 63 20 22 } -body {..mc "
4690: 74 68 69 73 20 69 73 20 61 20 25 73 22 20 22 67 this is a %s" "g
46a0: 6f 6f 64 20 74 65 73 74 22 0a 20 20 20 20 7d 20 ood test". }
46b0: 2d 72 65 73 75 6c 74 20 22 74 68 69 73 20 69 73 -result "this is
46c0: 20 61 20 67 6f 6f 64 20 74 65 73 74 22 0a 0a 20 a good test"..
46d0: 20 20 20 23 20 54 65 73 74 73 20 6d 73 67 63 61 # Tests msgca
46e0: 74 2d 38 2e 2a 3a 20 5b 6d 63 66 6c 73 65 74 5d t-8.*: [mcflset]
46f0: 0a 0a 20 20 20 20 73 65 74 20 6d 73 67 64 69 72 .. set msgdir
4700: 31 20 5b 6d 61 6b 65 44 69 72 65 63 74 6f 72 79 1 [makeDirectory
4710: 20 6d 73 67 64 69 72 31 5d 0a 20 20 20 20 6d 61 msgdir1]. ma
4720: 6b 65 46 69 6c 65 20 7b 3a 3a 6d 73 67 63 61 74 keFile {::msgcat
4730: 3a 3a 6d 63 66 6c 73 65 74 20 6b 31 20 76 31 7d ::mcflset k1 v1}
4740: 20 6c 31 2e 6d 73 67 20 24 6d 73 67 64 69 72 31 l1.msg $msgdir1
4750: 0a 0a 09 74 65 73 74 20 6d 73 67 63 61 74 2d 38 ...test msgcat-8
4760: 2e 31 20 7b 6d 63 66 6c 73 65 74 7d 20 2d 73 65 .1 {mcflset} -se
4770: 74 75 70 20 7b 0a 09 20 20 20 20 76 61 72 69 61 tup {.. varia
4780: 62 6c 65 20 6c 6f 63 61 6c 65 20 5b 6d 63 6c 6f ble locale [mclo
4790: 63 61 6c 65 5d 0a 09 20 20 20 20 6d 63 6c 6f 63 cale].. mcloc
47a0: 61 6c 65 20 6c 31 0a 09 20 20 20 20 6d 63 6c 6f ale l1.. mclo
47b0: 61 64 20 24 6d 73 67 64 69 72 31 0a 09 7d 20 2d ad $msgdir1..} -
47c0: 63 6c 65 61 6e 75 70 20 7b 0a 09 20 20 20 20 6d cleanup {.. m
47d0: 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 6c 65 0a clocale $locale.
47e0: 09 7d 20 2d 62 6f 64 79 20 7b 0a 09 20 20 20 20 .} -body {..
47f0: 6d 63 20 6b 31 0a 09 7d 20 2d 72 65 73 75 6c 74 mc k1..} -result
4800: 20 76 31 0a 0a 20 20 20 20 72 65 6d 6f 76 65 46 v1.. removeF
4810: 69 6c 65 20 6c 31 2e 6d 73 67 20 24 6d 73 67 64 ile l1.msg $msgd
4820: 69 72 31 0a 20 20 20 20 72 65 6d 6f 76 65 44 69 ir1. removeDi
4830: 72 65 63 74 6f 72 79 20 6d 73 67 64 69 72 31 0a rectory msgdir1.
4840: 0a 20 20 20 20 73 65 74 20 6d 73 67 64 69 72 32 . set msgdir2
4850: 20 5b 6d 61 6b 65 44 69 72 65 63 74 6f 72 79 20 [makeDirectory
4860: 6d 73 67 64 69 72 32 5d 0a 20 20 20 20 73 65 74 msgdir2]. set
4870: 20 6d 73 67 64 69 72 33 20 5b 6d 61 6b 65 44 69 msgdir3 [makeDi
4880: 72 65 63 74 6f 72 79 20 6d 73 67 64 69 72 33 5d rectory msgdir3]
4890: 0a 20 20 20 20 6d 61 6b 65 46 69 6c 65 20 22 3a . makeFile ":
48a0: 3a 6d 73 67 63 61 74 3a 3a 6d 63 66 6c 73 65 74 :msgcat::mcflset
48b0: 20 6b 32 20 76 32 20 3b 20 3a 3a 6d 73 67 63 61 k2 v2 ; ::msgca
48c0: 74 3a 3a 6d 63 6c 6f 61 64 20 5b 6c 69 73 74 20 t::mcload [list
48d0: 24 6d 73 67 64 69 72 33 5d 22 5c 0a 09 20 20 20 $msgdir3]"\..
48e0: 20 6c 32 2e 6d 73 67 20 24 6d 73 67 64 69 72 32 l2.msg $msgdir2
48f0: 0a 20 20 20 20 6d 61 6b 65 46 69 6c 65 20 7b 3a . makeFile {:
4900: 3a 6d 73 67 63 61 74 3a 3a 6d 63 66 6c 73 65 74 :msgcat::mcflset
4910: 20 6b 33 20 76 33 20 3b 20 3a 3a 6d 73 67 63 61 k3 v3 ; ::msgca
4920: 74 3a 3a 6d 63 66 6c 6d 73 65 74 20 7b 6b 34 20 t::mcflmset {k4
4930: 76 34 20 6b 35 20 76 35 7d 7d 20 6c 32 2e 6d 73 v4 k5 v5}} l2.ms
4940: 67 20 24 6d 73 67 64 69 72 33 0a 0a 09 23 20 63 g $msgdir3...# c
4950: 68 61 69 6e 65 64 20 6d 63 6c 6f 61 64 0a 09 74 hained mcload..t
4960: 65 73 74 20 6d 73 67 63 61 74 2d 38 2e 32 20 7b est msgcat-8.2 {
4970: 6d 63 66 6c 73 65 74 2f 6d 63 66 6c 6d 73 65 74 mcflset/mcflmset
4980: 7d 20 2d 73 65 74 75 70 20 7b 0a 09 20 20 20 20 } -setup {..
4990: 76 61 72 69 61 62 6c 65 20 6c 6f 63 61 6c 65 20 variable locale
49a0: 5b 6d 63 6c 6f 63 61 6c 65 5d 0a 09 20 20 20 20 [mclocale]..
49b0: 6d 63 6c 6f 63 61 6c 65 20 6c 32 0a 09 20 20 20 mclocale l2..
49c0: 20 6d 63 6c 6f 61 64 20 24 6d 73 67 64 69 72 32 mcload $msgdir2
49d0: 0a 09 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 ..} -cleanup {..
49e0: 20 20 20 20 6d 63 6c 6f 63 61 6c 65 20 24 6c 6f mclocale $lo
49f0: 63 61 6c 65 0a 09 7d 20 2d 62 6f 64 79 20 7b 0a cale..} -body {.
4a00: 09 20 20 20 20 72 65 74 75 72 6e 20 5b 6d 63 20 . return [mc
4a10: 6b 32 5d 5b 6d 63 20 6b 33 5d 2d 2d 5b 6d 63 20 k2][mc k3]--[mc
4a20: 6b 34 5d 5b 6d 63 20 6b 35 5d 0a 09 7d 20 2d 72 k4][mc k5]..} -r
4a30: 65 73 75 6c 74 20 76 32 76 33 2d 2d 76 34 76 35 esult v2v3--v4v5
4a40: 0a 0a 20 20 20 20 72 65 6d 6f 76 65 46 69 6c 65 .. removeFile
4a50: 20 6c 32 2e 6d 73 67 20 24 6d 73 67 64 69 72 32 l2.msg $msgdir2
4a60: 0a 20 20 20 20 72 65 6d 6f 76 65 44 69 72 65 63 . removeDirec
4a70: 74 6f 72 79 20 6d 73 67 64 69 72 32 0a 20 20 20 tory msgdir2.
4a80: 20 72 65 6d 6f 76 65 44 69 72 65 63 74 6f 72 79 removeDirectory
4a90: 20 6d 73 67 64 69 72 33 0a 0a 20 20 20 20 23 20 msgdir3.. #
4aa0: 54 65 73 74 73 20 6d 73 67 63 61 74 2d 39 2e 2a Tests msgcat-9.*
4ab0: 3a 20 5b 6d 63 65 78 69 73 74 73 5d 0a 0a 09 74 : [mcexists]...t
4ac0: 65 73 74 20 6d 73 67 63 61 74 2d 39 2e 31 20 7b est msgcat-9.1 {
4ad0: 6d 63 65 78 69 73 74 73 20 6e 6f 20 70 61 72 61 mcexists no para
4ae0: 6d 65 74 65 72 7d 20 2d 62 6f 64 79 20 7b 0a 09 meter} -body {..
4af0: 20 20 20 20 6d 63 65 78 69 73 74 73 0a 09 7d 20 mcexists..}
4b00: 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 31 5c 0a -returnCodes 1\.
4b10: 09 2d 72 65 73 75 6c 74 20 7b 77 72 6f 6e 67 20 .-result {wrong
4b20: 23 20 61 72 67 73 3a 20 73 68 6f 75 6c 64 20 62 # args: should b
4b30: 65 20 22 6d 63 65 78 69 73 74 73 20 3f 2d 65 78 e "mcexists ?-ex
4b40: 61 63 74 6e 61 6d 65 73 70 61 63 65 3f 20 3f 2d actnamespace? ?-
4b50: 65 78 61 63 74 6c 6f 63 61 6c 65 3f 20 3f 2d 6e exactlocale? ?-n
4b60: 61 6d 65 73 70 61 63 65 20 6e 73 3f 20 73 72 63 amespace ns? src
4b70: 22 7d 0a 0a 09 74 65 73 74 20 6d 73 67 63 61 74 "}...test msgcat
4b80: 2d 39 2e 32 20 7b 6d 63 65 78 69 73 74 73 20 75 -9.2 {mcexists u
4b90: 6e 6b 6e 6f 77 6e 20 6f 70 74 69 6f 6e 7d 20 2d nknown option} -
4ba0: 62 6f 64 79 20 7b 0a 09 20 20 20 20 6d 63 65 78 body {.. mcex
4bb0: 69 73 74 73 20 2d 75 6e 6b 6e 6f 77 6e 20 73 72 ists -unknown sr
4bc0: 63 0a 09 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 c..} -returnCode
4bd0: 73 20 31 5c 0a 09 2d 72 65 73 75 6c 74 20 7b 75 s 1\..-result {u
4be0: 6e 6b 6e 6f 77 6e 20 6f 70 74 69 6f 6e 20 22 2d nknown option "-
4bf0: 75 6e 6b 6e 6f 77 6e 22 7d 0a 0a 09 74 65 73 74 unknown"}...test
4c00: 20 6d 73 67 63 61 74 2d 39 2e 33 20 7b 6d 63 65 msgcat-9.3 {mce
4c10: 78 69 73 74 73 7d 20 2d 73 65 74 75 70 20 7b 0a xists} -setup {.
4c20: 09 20 20 20 20 6d 63 66 6f 72 67 65 74 70 61 63 . mcforgetpac
4c30: 6b 61 67 65 0a 09 20 20 20 20 76 61 72 69 61 62 kage.. variab
4c40: 6c 65 20 6c 6f 63 61 6c 65 20 5b 6d 63 6c 6f 63 le locale [mcloc
4c50: 61 6c 65 5d 0a 09 20 20 20 20 6d 63 6c 6f 63 61 ale].. mcloca
4c60: 6c 65 20 66 6f 6f 0a 09 20 20 20 20 6d 63 73 65 le foo.. mcse
4c70: 74 20 66 6f 6f 20 6b 31 20 76 31 0a 09 7d 20 2d t foo k1 v1..} -
4c80: 63 6c 65 61 6e 75 70 20 7b 0a 09 20 20 20 20 6d cleanup {.. m
4c90: 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 6c 65 0a clocale $locale.
4ca0: 09 7d 20 2d 62 6f 64 79 20 7b 0a 09 20 20 20 20 .} -body {..
4cb0: 6c 69 73 74 20 5b 6d 63 65 78 69 73 74 73 20 6b list [mcexists k
4cc0: 31 5d 20 5b 6d 63 65 78 69 73 74 73 20 6b 32 5d 1] [mcexists k2]
4cd0: 0a 09 7d 20 2d 72 65 73 75 6c 74 20 7b 31 20 30 ..} -result {1 0
4ce0: 7d 0a 0a 09 74 65 73 74 20 6d 73 67 63 61 74 2d }...test msgcat-
4cf0: 39 2e 34 20 7b 6d 63 65 78 69 73 74 73 20 64 65 9.4 {mcexists de
4d00: 73 63 65 6e 64 65 6e 74 20 70 72 65 66 65 72 65 scendent prefere
4d10: 6e 63 65 7d 20 2d 73 65 74 75 70 20 7b 0a 09 20 nce} -setup {..
4d20: 20 20 20 6d 63 66 6f 72 67 65 74 70 61 63 6b 61 mcforgetpacka
4d30: 67 65 0a 09 20 20 20 20 76 61 72 69 61 62 6c 65 ge.. variable
4d40: 20 6c 6f 63 61 6c 65 20 5b 6d 63 6c 6f 63 61 6c locale [mclocal
4d50: 65 5d 0a 09 20 20 20 20 6d 63 6c 6f 63 61 6c 65 e].. mclocale
4d60: 20 66 6f 6f 5f 62 61 72 0a 09 20 20 20 20 6d 63 foo_bar.. mc
4d70: 73 65 74 20 66 6f 6f 20 6b 31 20 76 31 0a 09 7d set foo k1 v1..}
4d80: 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 20 20 20 -cleanup {..
4d90: 20 6d 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 6c mclocale $local
4da0: 65 0a 09 7d 20 2d 62 6f 64 79 20 7b 0a 09 20 20 e..} -body {..
4db0: 20 20 6c 69 73 74 20 5b 6d 63 65 78 69 73 74 73 list [mcexists
4dc0: 20 6b 31 5d 20 5b 6d 63 65 78 69 73 74 73 20 2d k1] [mcexists -
4dd0: 65 78 61 63 74 6c 6f 63 61 6c 65 20 6b 31 5d 0a exactlocale k1].
4de0: 09 7d 20 2d 72 65 73 75 6c 74 20 7b 31 20 30 7d .} -result {1 0}
4df0: 0a 0a 09 74 65 73 74 20 6d 73 67 63 61 74 2d 39 ...test msgcat-9
4e00: 2e 35 20 7b 6d 63 65 78 69 73 74 73 20 70 61 72 .5 {mcexists par
4e10: 65 6e 74 20 6e 61 6d 65 73 70 61 63 65 7d 20 2d ent namespace} -
4e20: 73 65 74 75 70 20 7b 0a 09 20 20 20 20 6d 63 66 setup {.. mcf
4e30: 6f 72 67 65 74 70 61 63 6b 61 67 65 0a 09 20 20 orgetpackage..
4e40: 20 20 76 61 72 69 61 62 6c 65 20 6c 6f 63 61 6c variable local
4e50: 65 20 5b 6d 63 6c 6f 63 61 6c 65 5d 0a 09 20 20 e [mclocale]..
4e60: 20 20 6d 63 6c 6f 63 61 6c 65 20 66 6f 6f 5f 62 mclocale foo_b
4e70: 61 72 0a 09 20 20 20 20 6d 63 73 65 74 20 66 6f ar.. mcset fo
4e80: 6f 20 6b 31 20 76 31 0a 09 7d 20 2d 63 6c 65 61 o k1 v1..} -clea
4e90: 6e 75 70 20 7b 0a 09 20 20 20 20 6d 63 6c 6f 63 nup {.. mcloc
4ea0: 61 6c 65 20 24 6c 6f 63 61 6c 65 0a 09 20 20 20 ale $locale..
4eb0: 20 6e 61 6d 65 73 70 61 63 65 20 64 65 6c 65 74 namespace delet
4ec0: 65 20 3a 3a 66 6f 6f 0a 09 7d 20 2d 62 6f 64 79 e ::foo..} -body
4ed0: 20 7b 0a 09 20 20 20 20 6e 61 6d 65 73 70 61 63 {.. namespac
4ee0: 65 20 65 76 61 6c 20 3a 3a 66 6f 6f 20 7b 0a 09 e eval ::foo {..
4ef0: 09 6c 69 73 74 20 5b 3a 3a 6d 73 67 63 61 74 3a .list [::msgcat:
4f00: 3a 6d 63 65 78 69 73 74 73 20 6b 31 5d 5c 0a 09 :mcexists k1]\..
4f10: 09 09 5b 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 65 ..[::msgcat::mce
4f20: 78 69 73 74 73 20 2d 6e 61 6d 65 73 70 61 63 65 xists -namespace
4f30: 20 3a 3a 6d 73 67 63 61 74 3a 3a 74 65 73 74 20 ::msgcat::test
4f40: 6b 31 5d 0a 09 20 20 20 20 7d 0a 09 7d 20 2d 72 k1].. }..} -r
4f50: 65 73 75 6c 74 20 7b 30 20 31 7d 0a 0a 09 74 65 esult {0 1}...te
4f60: 73 74 20 6d 73 67 63 61 74 2d 39 2e 36 20 7b 6d st msgcat-9.6 {m
4f70: 63 65 78 69 73 74 73 20 2d 6e 61 6d 65 73 70 61 cexists -namespa
4f80: 63 65 20 6e 73 20 70 61 72 61 6d 65 74 65 72 7d ce ns parameter}
4f90: 20 2d 73 65 74 75 70 20 7b 0a 09 20 20 20 20 6d -setup {.. m
4fa0: 63 66 6f 72 67 65 74 70 61 63 6b 61 67 65 0a 09 cforgetpackage..
4fb0: 20 20 20 20 76 61 72 69 61 62 6c 65 20 6c 6f 63 variable loc
4fc0: 61 6c 65 20 5b 6d 63 6c 6f 63 61 6c 65 5d 0a 09 ale [mclocale]..
4fd0: 20 20 20 20 6d 63 6c 6f 63 61 6c 65 20 66 6f 6f mclocale foo
4fe0: 5f 62 61 72 0a 09 20 20 20 20 6d 63 73 65 74 20 _bar.. mcset
4ff0: 66 6f 6f 20 6b 31 20 76 31 0a 09 7d 20 2d 63 6c foo k1 v1..} -cl
5000: 65 61 6e 75 70 20 7b 0a 09 20 20 20 20 6d 63 6c eanup {.. mcl
5010: 6f 63 61 6c 65 20 24 6c 6f 63 61 6c 65 0a 09 20 ocale $locale..
5020: 20 20 20 6e 61 6d 65 73 70 61 63 65 20 64 65 6c namespace del
5030: 65 74 65 20 3a 3a 66 6f 6f 0a 09 7d 20 2d 62 6f ete ::foo..} -bo
5040: 64 79 20 7b 0a 09 20 20 20 20 6e 61 6d 65 73 70 dy {.. namesp
5050: 61 63 65 20 65 76 61 6c 20 3a 3a 66 6f 6f 20 7b ace eval ::foo {
5060: 0a 09 09 6c 69 73 74 20 5b 3a 3a 6d 73 67 63 61 ...list [::msgca
5070: 74 3a 3a 6d 63 65 78 69 73 74 73 20 6b 31 5d 5c t::mcexists k1]\
5080: 0a 09 09 09 5b 3a 3a 6d 73 67 63 61 74 3a 3a 6d ....[::msgcat::m
5090: 63 65 78 69 73 74 73 20 2d 6e 61 6d 65 73 70 61 cexists -namespa
50a0: 63 65 20 3a 3a 6d 73 67 63 61 74 3a 3a 74 65 73 ce ::msgcat::tes
50b0: 74 20 6b 31 5d 0a 09 20 20 20 20 7d 0a 09 7d 20 t k1].. }..}
50c0: 2d 72 65 73 75 6c 74 20 7b 30 20 31 7d 0a 0a 09 -result {0 1}...
50d0: 74 65 73 74 20 6d 73 67 63 61 74 2d 39 2e 37 20 test msgcat-9.7
50e0: 7b 6d 63 65 78 69 73 74 73 20 2d 6e 61 6d 65 73 {mcexists -names
50f0: 70 61 63 65 20 2d 20 6e 73 20 61 72 67 75 6d 65 pace - ns argume
5100: 6e 74 20 6d 69 73 73 69 6e 67 7d 20 2d 62 6f 64 nt missing} -bod
5110: 79 20 7b 0a 09 20 20 20 20 6d 63 65 78 69 73 74 y {.. mcexist
5120: 73 20 2d 6e 61 6d 65 73 70 61 63 65 20 73 72 63 s -namespace src
5130: 0a 09 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 ..} -returnCodes
5140: 20 31 5c 0a 09 2d 72 65 73 75 6c 74 20 7b 41 72 1\..-result {Ar
5150: 67 75 6d 65 6e 74 20 6d 69 73 73 69 6e 67 20 66 gument missing f
5160: 6f 72 20 73 77 69 74 63 68 20 22 2d 6e 61 6d 65 or switch "-name
5170: 73 70 61 63 65 22 7d 0a 0a 0a 20 20 20 20 23 20 space"}... #
5180: 54 65 73 74 73 20 6d 73 67 63 61 74 2d 31 30 2e Tests msgcat-10.
5190: 2a 3a 20 5b 6d 63 6c 6f 61 64 65 64 6c 6f 63 61 *: [mcloadedloca
51a0: 6c 65 73 5d 0a 0a 09 74 65 73 74 20 6d 73 67 63 les]...test msgc
51b0: 61 74 2d 31 30 2e 31 20 7b 6d 63 6c 6f 61 64 65 at-10.1 {mcloade
51c0: 64 6c 6f 63 61 6c 65 73 20 6e 6f 20 61 72 67 7d dlocales no arg}
51d0: 20 2d 62 6f 64 79 20 7b 0a 09 20 20 20 20 6d 63 -body {.. mc
51e0: 6c 6f 61 64 65 64 6c 6f 63 61 6c 65 73 0a 09 7d loadedlocales..}
51f0: 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 31 5c -returnCodes 1\
5200: 0a 09 2d 72 65 73 75 6c 74 20 7b 77 72 6f 6e 67 ..-result {wrong
5210: 20 23 20 61 72 67 73 3a 20 73 68 6f 75 6c 64 20 # args: should
5220: 62 65 20 22 6d 63 6c 6f 61 64 65 64 6c 6f 63 61 be "mcloadedloca
5230: 6c 65 73 20 73 75 62 63 6f 6d 6d 61 6e 64 22 7d les subcommand"}
5240: 0a 0a 09 74 65 73 74 20 6d 73 67 63 61 74 2d 31 ...test msgcat-1
5250: 30 2e 32 20 7b 6d 63 6c 6f 61 64 65 64 6c 6f 63 0.2 {mcloadedloc
5260: 61 6c 65 73 20 77 72 6f 6e 67 20 73 75 62 63 6f ales wrong subco
5270: 6d 6d 61 6e 64 7d 20 2d 62 6f 64 79 20 7b 0a 09 mmand} -body {..
5280: 20 20 20 20 6d 63 6c 6f 61 64 65 64 6c 6f 63 61 mcloadedloca
5290: 6c 65 73 20 6a 75 6e 6b 0a 09 7d 20 2d 72 65 74 les junk..} -ret
52a0: 75 72 6e 43 6f 64 65 73 20 31 5c 0a 09 2d 72 65 urnCodes 1\..-re
52b0: 73 75 6c 74 20 7b 75 6e 6b 6e 6f 77 6e 20 73 75 sult {unknown su
52c0: 62 63 6f 6d 6d 61 6e 64 20 22 6a 75 6e 6b 22 3a bcommand "junk":
52d0: 20 6d 75 73 74 20 62 65 20 63 6c 65 61 72 2c 20 must be clear,
52e0: 6f 72 20 6c 6f 61 64 65 64 7d 0a 0a 09 74 65 73 or loaded}...tes
52f0: 74 20 6d 73 67 63 61 74 2d 31 30 2e 33 20 7b 6d t msgcat-10.3 {m
5300: 63 6c 6f 61 64 65 64 6c 6f 63 61 6c 65 73 20 6c cloadedlocales l
5310: 6f 61 64 65 64 7d 20 2d 73 65 74 75 70 20 7b 0a oaded} -setup {.
5320: 09 20 20 20 20 6d 63 66 6f 72 67 65 74 70 61 63 . mcforgetpac
5330: 6b 61 67 65 0a 09 20 20 20 20 76 61 72 69 61 62 kage.. variab
5340: 6c 65 20 6c 6f 63 61 6c 65 20 5b 6d 63 6c 6f 63 le locale [mcloc
5350: 61 6c 65 5d 0a 09 20 20 20 20 6d 63 6c 6f 63 61 ale].. mcloca
5360: 6c 65 20 7b 7d 0a 09 20 20 20 20 6d 63 6c 6f 61 le {}.. mcloa
5370: 64 65 64 6c 6f 63 61 6c 65 73 20 63 6c 65 61 72 dedlocales clear
5380: 0a 09 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 ..} -cleanup {..
5390: 20 20 20 20 6d 63 6c 6f 63 61 6c 65 20 24 6c 6f mclocale $lo
53a0: 63 61 6c 65 0a 09 7d 20 2d 62 6f 64 79 20 7b 0a cale..} -body {.
53b0: 09 20 20 20 20 6d 63 6c 6f 63 61 6c 65 20 66 6f . mclocale fo
53c0: 6f 5f 62 61 72 0a 09 20 20 20 20 23 20 54 68 65 o_bar.. # The
53d0: 20 72 65 73 75 6c 74 20 69 73 20 70 6f 73 69 74 result is posit
53e0: 69 6f 6e 20 69 6e 64 65 70 65 6e 64 65 6e 74 20 ion independent
53f0: 73 6f 20 73 6f 72 74 0a 09 20 20 20 20 73 65 74 so sort.. set
5400: 20 72 65 73 75 6c 74 6c 69 73 74 20 5b 6c 73 6f resultlist [lso
5410: 72 74 20 5b 6d 63 6c 6f 61 64 65 64 6c 6f 63 61 rt [mcloadedloca
5420: 6c 65 73 20 6c 6f 61 64 65 64 5d 5d 0a 09 7d 20 les loaded]]..}
5430: 2d 72 65 73 75 6c 74 20 7b 7b 7d 20 66 6f 6f 20 -result {{} foo
5440: 66 6f 6f 5f 62 61 72 7d 0a 0a 09 74 65 73 74 20 foo_bar}...test
5450: 6d 73 67 63 61 74 2d 31 30 2e 34 20 7b 6d 63 6c msgcat-10.4 {mcl
5460: 6f 61 64 65 64 6c 6f 63 61 6c 65 73 20 63 6c 65 oadedlocales cle
5470: 61 72 7d 20 2d 73 65 74 75 70 20 7b 0a 09 20 20 ar} -setup {..
5480: 20 20 6d 63 66 6f 72 67 65 74 70 61 63 6b 61 67 mcforgetpackag
5490: 65 0a 09 20 20 20 20 76 61 72 69 61 62 6c 65 20 e.. variable
54a0: 6c 6f 63 61 6c 65 20 5b 6d 63 6c 6f 63 61 6c 65 locale [mclocale
54b0: 5d 0a 09 20 20 20 20 6d 63 6c 6f 63 61 6c 65 20 ].. mclocale
54c0: 7b 7d 0a 09 20 20 20 20 6d 63 6c 6f 61 64 65 64 {}.. mcloaded
54d0: 6c 6f 63 61 6c 65 73 20 63 6c 65 61 72 0a 09 7d locales clear..}
54e0: 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 20 20 20 -cleanup {..
54f0: 20 6d 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 6c mclocale $local
5500: 65 0a 09 7d 20 2d 62 6f 64 79 20 7b 0a 09 20 20 e..} -body {..
5510: 20 20 6d 63 6c 6f 63 61 6c 65 20 66 6f 6f 0a 09 mclocale foo..
5520: 20 20 20 20 6d 63 73 65 74 20 66 6f 6f 20 6b 31 mcset foo k1
5530: 20 76 31 0a 09 20 20 20 20 73 65 74 20 72 65 73 v1.. set res
5540: 20 5b 6d 63 65 78 69 73 74 73 20 6b 31 5d 0a 09 [mcexists k1]..
5550: 20 20 20 20 6d 63 6c 6f 63 61 6c 65 20 22 22 0a mclocale "".
5560: 09 20 20 20 20 6d 63 6c 6f 61 64 65 64 6c 6f 63 . mcloadedloc
5570: 61 6c 65 73 20 63 6c 65 61 72 0a 09 20 20 20 20 ales clear..
5580: 6d 63 6c 6f 63 61 6c 65 20 66 6f 6f 0a 09 20 20 mclocale foo..
5590: 20 20 6c 61 70 70 65 6e 64 20 72 65 73 20 5b 6d lappend res [m
55a0: 63 65 78 69 73 74 73 20 6b 31 5d 0a 09 7d 20 2d cexists k1]..} -
55b0: 72 65 73 75 6c 74 20 7b 31 20 30 7d 0a 0a 20 20 result {1 0}..
55c0: 20 20 23 20 54 65 73 74 73 20 6d 73 67 63 61 74 # Tests msgcat
55d0: 2d 31 31 2e 2a 3a 20 5b 6d 63 66 6f 72 67 65 74 -11.*: [mcforget
55e0: 70 61 63 6b 61 67 65 5d 0a 0a 09 74 65 73 74 20 package]...test
55f0: 6d 73 67 63 61 74 2d 31 31 2e 31 20 7b 6d 63 66 msgcat-11.1 {mcf
5600: 6f 72 67 65 74 70 61 63 6b 61 67 65 20 74 72 61 orgetpackage tra
5610: 6e 73 6c 61 74 69 6f 6e 7d 20 2d 73 65 74 75 70 nslation} -setup
5620: 20 7b 0a 09 20 20 20 20 76 61 72 69 61 62 6c 65 {.. variable
5630: 20 6c 6f 63 61 6c 65 20 5b 6d 63 6c 6f 63 61 6c locale [mclocal
5640: 65 5d 0a 09 7d 20 2d 63 6c 65 61 6e 75 70 20 7b e]..} -cleanup {
5650: 0a 09 20 20 20 20 6d 63 6c 6f 63 61 6c 65 20 24 .. mclocale $
5660: 6c 6f 63 61 6c 65 0a 09 7d 20 2d 62 6f 64 79 20 locale..} -body
5670: 7b 0a 09 20 20 20 20 6d 63 6c 6f 63 61 6c 65 20 {.. mclocale
5680: 66 6f 6f 0a 09 20 20 20 20 6d 63 73 65 74 20 66 foo.. mcset f
5690: 6f 6f 20 6b 31 20 76 31 0a 09 20 20 20 20 73 65 oo k1 v1.. se
56a0: 74 20 72 65 73 20 5b 6d 63 65 78 69 73 74 73 20 t res [mcexists
56b0: 6b 31 5d 0a 09 20 20 20 20 6d 63 66 6f 72 67 65 k1].. mcforge
56c0: 74 70 61 63 6b 61 67 65 0a 09 20 20 20 20 6c 61 tpackage.. la
56d0: 70 70 65 6e 64 20 72 65 73 20 5b 6d 63 65 78 69 ppend res [mcexi
56e0: 73 74 73 20 6b 31 5d 0a 09 7d 20 2d 72 65 73 75 sts k1]..} -resu
56f0: 6c 74 20 7b 31 20 30 7d 0a 0a 09 74 65 73 74 20 lt {1 0}...test
5700: 6d 73 67 63 61 74 2d 31 31 2e 32 20 7b 6d 63 66 msgcat-11.2 {mcf
5710: 6f 72 67 65 74 70 61 63 6b 61 67 65 20 6c 6f 63 orgetpackage loc
5720: 61 6c 65 7d 20 2d 73 65 74 75 70 20 7b 0a 09 20 ale} -setup {..
5730: 20 20 20 76 61 72 69 61 62 6c 65 20 6c 6f 63 61 variable loca
5740: 6c 65 20 5b 6d 63 6c 6f 63 61 6c 65 5d 0a 09 7d le [mclocale]..}
5750: 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 20 20 20 -cleanup {..
5760: 20 6d 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 6c mclocale $local
5770: 65 0a 09 7d 20 2d 62 6f 64 79 20 7b 0a 09 20 20 e..} -body {..
5780: 20 20 6d 63 6c 6f 63 61 6c 65 20 66 6f 6f 0a 09 mclocale foo..
5790: 20 20 20 20 6d 63 70 61 63 6b 61 67 65 6c 6f 63 mcpackageloc
57a0: 61 6c 65 20 73 65 74 20 62 61 72 0a 09 20 20 20 ale set bar..
57b0: 20 73 65 74 20 72 65 73 20 5b 6d 63 70 61 63 6b set res [mcpack
57c0: 61 67 65 6c 6f 63 61 6c 65 20 67 65 74 5d 0a 09 agelocale get]..
57d0: 20 20 20 20 6d 63 66 6f 72 67 65 74 70 61 63 6b mcforgetpack
57e0: 61 67 65 0a 09 20 20 20 20 6c 61 70 70 65 6e 64 age.. lappend
57f0: 20 72 65 73 20 5b 6d 63 70 61 63 6b 61 67 65 6c res [mcpackagel
5800: 6f 63 61 6c 65 20 67 65 74 5d 0a 09 7d 20 2d 72 ocale get]..} -r
5810: 65 73 75 6c 74 20 7b 62 61 72 20 66 6f 6f 7d 0a esult {bar foo}.
5820: 0a 09 74 65 73 74 20 6d 73 67 63 61 74 2d 31 31 ..test msgcat-11
5830: 2e 33 20 7b 6d 63 66 6f 72 67 65 74 70 61 63 6b .3 {mcforgetpack
5840: 61 67 65 20 6f 70 74 69 6f 6e 73 7d 20 2d 62 6f age options} -bo
5850: 64 79 20 7b 0a 09 20 20 20 20 6d 63 70 61 63 6b dy {.. mcpack
5860: 61 67 65 63 6f 6e 66 69 67 20 73 65 74 20 6c 6f ageconfig set lo
5870: 61 64 63 6d 64 20 22 22 0a 09 20 20 20 20 73 65 adcmd "".. se
5880: 74 20 72 65 73 20 5b 6d 63 70 61 63 6b 61 67 65 t res [mcpackage
5890: 63 6f 6e 66 69 67 20 69 73 73 65 74 20 6c 6f 61 config isset loa
58a0: 64 63 6d 64 5d 0a 09 20 20 20 20 6d 63 66 6f 72 dcmd].. mcfor
58b0: 67 65 74 70 61 63 6b 61 67 65 0a 09 20 20 20 20 getpackage..
58c0: 6c 61 70 70 65 6e 64 20 72 65 73 20 5b 6d 63 70 lappend res [mcp
58d0: 61 63 6b 61 67 65 63 6f 6e 66 69 67 20 69 73 73 ackageconfig iss
58e0: 65 74 20 6c 6f 61 64 63 6d 64 5d 0a 09 7d 20 2d et loadcmd]..} -
58f0: 72 65 73 75 6c 74 20 7b 31 20 30 7d 0a 0a 20 20 result {1 0}..
5900: 20 20 23 20 54 65 73 74 73 20 6d 73 67 63 61 74 # Tests msgcat
5910: 2d 31 32 2e 2a 3a 20 5b 6d 63 70 61 63 6b 61 67 -12.*: [mcpackag
5920: 65 6c 6f 63 61 6c 65 5d 0a 0a 09 74 65 73 74 20 elocale]...test
5930: 6d 73 67 63 61 74 2d 31 32 2e 31 20 7b 6d 63 70 msgcat-12.1 {mcp
5940: 61 63 6b 61 67 65 6c 6f 63 61 6c 65 20 6e 6f 20 ackagelocale no
5950: 73 75 62 63 6f 6d 6d 61 6e 64 7d 20 2d 62 6f 64 subcommand} -bod
5960: 79 20 7b 0a 09 20 20 20 20 6d 63 70 61 63 6b 61 y {.. mcpacka
5970: 67 65 6c 6f 63 61 6c 65 0a 09 7d 20 2d 72 65 74 gelocale..} -ret
5980: 75 72 6e 43 6f 64 65 73 20 31 5c 0a 09 2d 72 65 urnCodes 1\..-re
5990: 73 75 6c 74 20 7b 77 72 6f 6e 67 20 23 20 61 72 sult {wrong # ar
59a0: 67 73 3a 20 73 68 6f 75 6c 64 20 62 65 20 22 6d gs: should be "m
59b0: 63 70 61 63 6b 61 67 65 6c 6f 63 61 6c 65 20 73 cpackagelocale s
59c0: 75 62 63 6f 6d 6d 61 6e 64 20 3f 61 72 67 20 2e ubcommand ?arg .
59d0: 2e 2e 3f 22 7d 0a 0a 09 74 65 73 74 20 6d 73 67 ..?"}...test msg
59e0: 63 61 74 2d 31 32 2e 32 20 7b 6d 63 6c 70 61 63 cat-12.2 {mclpac
59f0: 6b 61 67 65 6c 6f 63 61 6c 65 20 77 72 6f 6e 67 kagelocale wrong
5a00: 20 73 75 62 63 6f 6d 6d 61 6e 64 7d 20 2d 62 6f subcommand} -bo
5a10: 64 79 20 7b 0a 09 20 20 20 20 6d 63 70 61 63 6b dy {.. mcpack
5a20: 61 67 65 6c 6f 63 61 6c 65 20 6a 75 6e 6b 0a 09 agelocale junk..
5a30: 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 31 } -returnCodes 1
5a40: 5c 0a 09 2d 72 65 73 75 6c 74 20 7b 75 6e 6b 6e \..-result {unkn
5a50: 6f 77 6e 20 73 75 62 63 6f 6d 6d 61 6e 64 20 22 own subcommand "
5a60: 6a 75 6e 6b 22 3a 20 6d 75 73 74 20 62 65 20 63 junk": must be c
5a70: 6c 65 61 72 2c 20 67 65 74 2c 20 69 73 73 65 74 lear, get, isset
5a80: 2c 20 6c 6f 61 64 65 64 2c 20 70 72 65 73 65 6e , loaded, presen
5a90: 74 2c 20 73 65 74 2c 20 6f 72 20 75 6e 73 65 74 t, set, or unset
5aa0: 7d 0a 0a 09 74 65 73 74 20 6d 73 67 63 61 74 2d }...test msgcat-
5ab0: 31 32 2e 32 2e 31 20 7b 6d 63 6c 70 61 63 6b 61 12.2.1 {mclpacka
5ac0: 67 65 6c 6f 63 61 6c 65 20 73 65 74 20 6d 75 6c gelocale set mul
5ad0: 74 69 70 6c 65 20 61 72 67 73 7d 20 2d 62 6f 64 tiple args} -bod
5ae0: 79 20 7b 0a 09 20 20 20 20 6d 63 70 61 63 6b 61 y {.. mcpacka
5af0: 67 65 6c 6f 63 61 6c 65 20 73 65 74 20 61 20 62 gelocale set a b
5b00: 0a 09 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 ..} -returnCodes
5b10: 20 31 5c 0a 09 2d 72 65 73 75 6c 74 20 7b 77 72 1\..-result {wr
5b20: 6f 6e 67 20 23 20 61 72 67 73 3a 20 73 68 6f 75 ong # args: shou
5b30: 6c 64 20 62 65 20 22 6d 63 70 61 63 6b 61 67 65 ld be "mcpackage
5b40: 6c 6f 63 61 6c 65 20 73 65 74 20 3f 6c 6f 63 61 locale set ?loca
5b50: 6c 65 3f 22 7d 0a 0a 09 74 65 73 74 20 6d 73 67 le?"}...test msg
5b60: 63 61 74 2d 31 32 2e 33 20 7b 6d 63 70 61 63 6b cat-12.3 {mcpack
5b70: 61 67 65 6c 6f 63 61 6c 65 20 73 65 74 7d 20 2d agelocale set} -
5b80: 73 65 74 75 70 20 7b 0a 09 20 20 20 20 76 61 72 setup {.. var
5b90: 69 61 62 6c 65 20 6c 6f 63 61 6c 65 20 5b 6d 63 iable locale [mc
5ba0: 6c 6f 63 61 6c 65 5d 0a 09 7d 20 2d 63 6c 65 61 locale]..} -clea
5bb0: 6e 75 70 20 7b 0a 09 20 20 20 20 6d 63 6c 6f 63 nup {.. mcloc
5bc0: 61 6c 65 20 24 6c 6f 63 61 6c 65 0a 09 20 20 20 ale $locale..
5bd0: 20 6d 63 66 6f 72 67 65 74 70 61 63 6b 61 67 65 mcforgetpackage
5be0: 0a 09 7d 20 2d 62 6f 64 79 20 7b 0a 09 20 20 20 ..} -body {..
5bf0: 20 6d 63 6c 6f 63 61 6c 65 20 66 6f 6f 0a 09 20 mclocale foo..
5c00: 20 20 20 6d 63 70 61 63 6b 61 67 65 6c 6f 63 61 mcpackageloca
5c10: 6c 65 20 73 65 74 20 62 61 72 0a 09 20 20 20 20 le set bar..
5c20: 6c 69 73 74 20 5b 6d 63 70 61 63 6b 61 67 65 6c list [mcpackagel
5c30: 6f 63 61 6c 65 20 67 65 74 5d 20 5b 6d 63 6c 6f ocale get] [mclo
5c40: 63 61 6c 65 5d 0a 09 7d 20 2d 72 65 73 75 6c 74 cale]..} -result
5c50: 20 7b 62 61 72 20 66 6f 6f 7d 0a 0a 09 74 65 73 {bar foo}...tes
5c60: 74 20 6d 73 67 63 61 74 2d 31 32 2e 34 20 7b 6d t msgcat-12.4 {m
5c70: 63 70 61 63 6b 61 67 65 6c 6f 63 61 6c 65 20 67 cpackagelocale g
5c80: 65 74 7d 20 2d 73 65 74 75 70 20 7b 0a 09 20 20 et} -setup {..
5c90: 20 20 76 61 72 69 61 62 6c 65 20 6c 6f 63 61 6c variable local
5ca0: 65 20 5b 6d 63 6c 6f 63 61 6c 65 5d 0a 09 7d 20 e [mclocale]..}
5cb0: 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 20 20 20 20 -cleanup {..
5cc0: 6d 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 6c 65 mclocale $locale
5cd0: 0a 09 20 20 20 20 6d 63 66 6f 72 67 65 74 70 61 .. mcforgetpa
5ce0: 63 6b 61 67 65 0a 09 7d 20 2d 62 6f 64 79 20 7b ckage..} -body {
5cf0: 0a 09 20 20 20 20 6d 63 6c 6f 63 61 6c 65 20 66 .. mclocale f
5d00: 6f 6f 0a 09 20 20 20 20 73 65 74 20 72 65 73 20 oo.. set res
5d10: 5b 6d 63 70 61 63 6b 61 67 65 6c 6f 63 61 6c 65 [mcpackagelocale
5d20: 20 67 65 74 5d 0a 09 20 20 20 20 6d 63 70 61 63 get].. mcpac
5d30: 6b 61 67 65 6c 6f 63 61 6c 65 20 73 65 74 20 62 kagelocale set b
5d40: 61 72 0a 09 20 20 20 20 6c 61 70 70 65 6e 64 20 ar.. lappend
5d50: 72 65 73 20 5b 6d 63 70 61 63 6b 61 67 65 6c 6f res [mcpackagelo
5d60: 63 61 6c 65 20 67 65 74 5d 0a 09 7d 20 2d 72 65 cale get]..} -re
5d70: 73 75 6c 74 20 7b 66 6f 6f 20 62 61 72 7d 0a 0a sult {foo bar}..
5d80: 09 74 65 73 74 20 6d 73 67 63 61 74 2d 31 32 2e .test msgcat-12.
5d90: 35 20 7b 6d 63 70 61 63 6b 61 67 65 6c 6f 63 61 5 {mcpackageloca
5da0: 6c 65 20 70 72 65 66 65 72 65 6e 63 65 73 7d 20 le preferences}
5db0: 2d 73 65 74 75 70 20 7b 0a 09 20 20 20 20 76 61 -setup {.. va
5dc0: 72 69 61 62 6c 65 20 6c 6f 63 61 6c 65 20 5b 6d riable locale [m
5dd0: 63 6c 6f 63 61 6c 65 5d 0a 09 7d 20 2d 63 6c 65 clocale]..} -cle
5de0: 61 6e 75 70 20 7b 0a 09 20 20 20 20 6d 63 6c 6f anup {.. mclo
5df0: 63 61 6c 65 20 24 6c 6f 63 61 6c 65 0a 09 20 20 cale $locale..
5e00: 20 20 6d 63 66 6f 72 67 65 74 70 61 63 6b 61 67 mcforgetpackag
5e10: 65 0a 09 7d 20 2d 62 6f 64 79 20 7b 0a 09 20 20 e..} -body {..
5e20: 20 20 6d 63 6c 6f 63 61 6c 65 20 66 6f 6f 0a 09 mclocale foo..
5e30: 20 20 20 20 73 65 74 20 72 65 73 20 5b 6c 69 73 set res [lis
5e40: 74 20 5b 6d 63 70 61 63 6b 61 67 65 6c 6f 63 61 t [mcpackageloca
5e50: 6c 65 20 70 72 65 66 65 72 65 6e 63 65 73 5d 5d le preferences]]
5e60: 0a 09 20 20 20 20 6d 63 70 61 63 6b 61 67 65 6c .. mcpackagel
5e70: 6f 63 61 6c 65 20 73 65 74 20 62 61 72 0a 09 20 ocale set bar..
5e80: 20 20 20 6c 61 70 70 65 6e 64 20 72 65 73 20 5b lappend res [
5e90: 6d 63 70 61 63 6b 61 67 65 6c 6f 63 61 6c 65 20 mcpackagelocale
5ea0: 70 72 65 66 65 72 65 6e 63 65 73 5d 0a 09 7d 20 preferences]..}
5eb0: 2d 72 65 73 75 6c 74 20 7b 7b 66 6f 6f 20 7b 7d -result {{foo {}
5ec0: 7d 20 7b 62 61 72 20 7b 7d 7d 7d 0a 0a 09 74 65 } {bar {}}}...te
5ed0: 73 74 20 6d 73 67 63 61 74 2d 31 32 2e 36 20 7b st msgcat-12.6 {
5ee0: 6d 63 70 61 63 6b 61 67 65 6c 6f 63 61 6c 65 20 mcpackagelocale
5ef0: 6c 6f 61 64 65 64 7d 20 2d 73 65 74 75 70 20 7b loaded} -setup {
5f00: 0a 09 20 20 20 20 76 61 72 69 61 62 6c 65 20 6c .. variable l
5f10: 6f 63 61 6c 65 20 5b 6d 63 6c 6f 63 61 6c 65 5d ocale [mclocale]
5f20: 0a 09 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 ..} -cleanup {..
5f30: 20 20 20 20 6d 63 6c 6f 63 61 6c 65 20 24 6c 6f mclocale $lo
5f40: 63 61 6c 65 0a 09 20 20 20 20 6d 63 66 6f 72 67 cale.. mcforg
5f50: 65 74 70 61 63 6b 61 67 65 0a 09 7d 20 2d 62 6f etpackage..} -bo
5f60: 64 79 20 7b 0a 09 20 20 20 20 6d 63 6c 6f 63 61 dy {.. mcloca
5f70: 6c 65 20 22 22 0a 09 20 20 20 20 6d 63 6c 6f 61 le "".. mcloa
5f80: 64 65 64 6c 6f 63 61 6c 65 73 20 63 6c 65 61 72 dedlocales clear
5f90: 0a 09 20 20 20 20 6d 63 6c 6f 63 61 6c 65 20 66 .. mclocale f
5fa0: 6f 6f 0a 09 20 20 20 20 23 20 54 68 65 20 72 65 oo.. # The re
5fb0: 73 75 6c 74 20 69 73 20 70 6f 73 69 74 69 6f 6e sult is position
5fc0: 20 69 6e 64 65 70 65 6e 64 65 6e 74 20 73 6f 20 independent so
5fd0: 73 6f 72 74 0a 09 20 20 20 20 73 65 74 20 72 65 sort.. set re
5fe0: 73 20 5b 6c 69 73 74 20 5b 6c 73 6f 72 74 20 5b s [list [lsort [
5ff0: 6d 63 70 61 63 6b 61 67 65 6c 6f 63 61 6c 65 20 mcpackagelocale
6000: 6c 6f 61 64 65 64 5d 5d 5d 0a 09 20 20 20 20 6d loaded]]].. m
6010: 63 70 61 63 6b 61 67 65 6c 6f 63 61 6c 65 20 73 cpackagelocale s
6020: 65 74 20 62 61 72 0a 09 20 20 20 20 6c 61 70 70 et bar.. lapp
6030: 65 6e 64 20 72 65 73 20 5b 6c 73 6f 72 74 20 5b end res [lsort [
6040: 6d 63 70 61 63 6b 61 67 65 6c 6f 63 61 6c 65 20 mcpackagelocale
6050: 6c 6f 61 64 65 64 5d 5d 0a 09 7d 20 2d 72 65 73 loaded]]..} -res
6060: 75 6c 74 20 7b 7b 7b 7d 20 66 6f 6f 7d 20 7b 7b ult {{{} foo} {{
6070: 7d 20 62 61 72 20 66 6f 6f 7d 7d 0a 0a 09 74 65 } bar foo}}...te
6080: 73 74 20 6d 73 67 63 61 74 2d 31 32 2e 37 20 7b st msgcat-12.7 {
6090: 6d 63 70 61 63 6b 61 67 65 6c 6f 63 61 6c 65 20 mcpackagelocale
60a0: 69 73 73 65 74 7d 20 2d 73 65 74 75 70 20 7b 0a isset} -setup {.
60b0: 09 20 20 20 20 76 61 72 69 61 62 6c 65 20 6c 6f . variable lo
60c0: 63 61 6c 65 20 5b 6d 63 6c 6f 63 61 6c 65 5d 0a cale [mclocale].
60d0: 09 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 20 .} -cleanup {..
60e0: 20 20 20 6d 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 mclocale $loc
60f0: 61 6c 65 0a 09 20 20 20 20 6d 63 66 6f 72 67 65 ale.. mcforge
6100: 74 70 61 63 6b 61 67 65 0a 09 7d 20 2d 62 6f 64 tpackage..} -bod
6110: 79 20 7b 0a 09 20 20 20 20 6d 63 6c 6f 63 61 6c y {.. mclocal
6120: 65 20 66 6f 6f 0a 09 20 20 20 20 73 65 74 20 72 e foo.. set r
6130: 65 73 20 5b 6d 63 70 61 63 6b 61 67 65 6c 6f 63 es [mcpackageloc
6140: 61 6c 65 20 69 73 73 65 74 5d 0a 09 20 20 20 20 ale isset]..
6150: 6d 63 70 61 63 6b 61 67 65 6c 6f 63 61 6c 65 20 mcpackagelocale
6160: 73 65 74 20 62 61 72 0a 09 20 20 20 20 6c 61 70 set bar.. lap
6170: 70 65 6e 64 20 72 65 73 20 5b 6d 63 70 61 63 6b pend res [mcpack
6180: 61 67 65 6c 6f 63 61 6c 65 20 69 73 73 65 74 5d agelocale isset]
6190: 0a 09 7d 20 2d 72 65 73 75 6c 74 20 7b 30 20 31 ..} -result {0 1
61a0: 7d 0a 0a 09 74 65 73 74 20 6d 73 67 63 61 74 2d }...test msgcat-
61b0: 31 32 2e 38 20 7b 6d 63 70 61 63 6b 61 67 65 6c 12.8 {mcpackagel
61c0: 6f 63 61 6c 65 20 75 6e 73 65 74 7d 20 2d 73 65 ocale unset} -se
61d0: 74 75 70 20 7b 0a 09 20 20 20 20 76 61 72 69 61 tup {.. varia
61e0: 62 6c 65 20 6c 6f 63 61 6c 65 20 5b 6d 63 6c 6f ble locale [mclo
61f0: 63 61 6c 65 5d 0a 09 7d 20 2d 63 6c 65 61 6e 75 cale]..} -cleanu
6200: 70 20 7b 0a 09 20 20 20 20 6d 63 6c 6f 63 61 6c p {.. mclocal
6210: 65 20 24 6c 6f 63 61 6c 65 0a 09 20 20 20 20 6d e $locale.. m
6220: 63 66 6f 72 67 65 74 70 61 63 6b 61 67 65 0a 09 cforgetpackage..
6230: 7d 20 2d 62 6f 64 79 20 7b 0a 09 20 20 20 20 6d } -body {.. m
6240: 63 70 61 63 6b 61 67 65 6c 6f 63 61 6c 65 20 73 cpackagelocale s
6250: 65 74 20 62 61 72 0a 09 20 20 20 20 73 65 74 20 et bar.. set
6260: 72 65 73 20 5b 6d 63 70 61 63 6b 61 67 65 6c 6f res [mcpackagelo
6270: 63 61 6c 65 20 69 73 73 65 74 5d 0a 09 20 20 20 cale isset]..
6280: 20 6d 63 70 61 63 6b 61 67 65 6c 6f 63 61 6c 65 mcpackagelocale
6290: 20 75 6e 73 65 74 0a 09 20 20 20 20 6c 61 70 70 unset.. lapp
62a0: 65 6e 64 20 72 65 73 20 5b 6d 63 70 61 63 6b 61 end res [mcpacka
62b0: 67 65 6c 6f 63 61 6c 65 20 69 73 73 65 74 5d 0a gelocale isset].
62c0: 09 7d 20 2d 72 65 73 75 6c 74 20 7b 31 20 30 7d .} -result {1 0}
62d0: 0a 0a 09 74 65 73 74 20 6d 73 67 63 61 74 2d 31 ...test msgcat-1
62e0: 32 2e 39 20 7b 6d 63 70 61 63 6b 61 67 65 6c 6f 2.9 {mcpackagelo
62f0: 63 61 6c 65 20 70 72 65 73 65 6e 74 7d 20 2d 73 cale present} -s
6300: 65 74 75 70 20 7b 0a 09 20 20 20 20 76 61 72 69 etup {.. vari
6310: 61 62 6c 65 20 6c 6f 63 61 6c 65 20 5b 6d 63 6c able locale [mcl
6320: 6f 63 61 6c 65 5d 0a 09 7d 20 2d 63 6c 65 61 6e ocale]..} -clean
6330: 75 70 20 7b 0a 09 20 20 20 20 6d 63 6c 6f 63 61 up {.. mcloca
6340: 6c 65 20 24 6c 6f 63 61 6c 65 0a 09 20 20 20 20 le $locale..
6350: 6d 63 66 6f 72 67 65 74 70 61 63 6b 61 67 65 0a mcforgetpackage.
6360: 09 7d 20 2d 62 6f 64 79 20 7b 0a 09 20 20 20 20 .} -body {..
6370: 6d 63 6c 6f 63 61 6c 65 20 22 22 0a 09 20 20 20 mclocale ""..
6380: 20 6d 63 6c 6f 61 64 65 64 6c 6f 63 61 6c 65 73 mcloadedlocales
6390: 20 63 6c 65 61 72 0a 09 20 20 20 20 6d 63 6c 6f clear.. mclo
63a0: 63 61 6c 65 20 66 6f 6f 0a 09 20 20 20 20 73 65 cale foo.. se
63b0: 74 20 72 65 73 20 5b 6d 63 70 61 63 6b 61 67 65 t res [mcpackage
63c0: 6c 6f 63 61 6c 65 20 70 72 65 73 65 6e 74 20 66 locale present f
63d0: 6f 6f 5d 0a 09 20 20 20 20 6c 61 70 70 65 6e 64 oo].. lappend
63e0: 20 72 65 73 20 5b 6d 63 70 61 63 6b 61 67 65 6c res [mcpackagel
63f0: 6f 63 61 6c 65 20 70 72 65 73 65 6e 74 20 62 61 ocale present ba
6400: 72 5d 0a 09 20 20 20 20 6d 63 70 61 63 6b 61 67 r].. mcpackag
6410: 65 6c 6f 63 61 6c 65 20 73 65 74 20 62 61 72 0a elocale set bar.
6420: 09 20 20 20 20 6c 61 70 70 65 6e 64 20 72 65 73 . lappend res
6430: 20 5b 6d 63 70 61 63 6b 61 67 65 6c 6f 63 61 6c [mcpackagelocal
6440: 65 20 70 72 65 73 65 6e 74 20 66 6f 6f 5d 5c 0a e present foo]\.
6450: 09 09 20 20 20 20 5b 6d 63 70 61 63 6b 61 67 65 .. [mcpackage
6460: 6c 6f 63 61 6c 65 20 70 72 65 73 65 6e 74 20 62 locale present b
6470: 61 72 5d 0a 09 7d 20 2d 72 65 73 75 6c 74 20 7b ar]..} -result {
6480: 31 20 30 20 31 20 31 7d 0a 0a 09 74 65 73 74 20 1 0 1 1}...test
6490: 6d 73 67 63 61 74 2d 31 32 2e 31 30 20 7b 6d 63 msgcat-12.10 {mc
64a0: 70 61 63 6b 61 67 65 6c 6f 63 61 6c 65 20 63 6c packagelocale cl
64b0: 65 61 72 7d 20 2d 73 65 74 75 70 20 7b 0a 09 20 ear} -setup {..
64c0: 20 20 20 76 61 72 69 61 62 6c 65 20 6c 6f 63 61 variable loca
64d0: 6c 65 20 5b 6d 63 6c 6f 63 61 6c 65 5d 0a 09 7d le [mclocale]..}
64e0: 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 20 20 20 -cleanup {..
64f0: 20 6d 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 6c mclocale $local
6500: 65 0a 09 20 20 20 20 6d 63 66 6f 72 67 65 74 70 e.. mcforgetp
6510: 61 63 6b 61 67 65 0a 09 7d 20 2d 62 6f 64 79 20 ackage..} -body
6520: 7b 0a 09 20 20 20 20 6d 63 6c 6f 63 61 6c 65 20 {.. mclocale
6530: 22 22 0a 09 20 20 20 20 6d 63 6c 6f 61 64 65 64 "".. mcloaded
6540: 6c 6f 63 61 6c 65 73 20 63 6c 65 61 72 0a 09 20 locales clear..
6550: 20 20 20 6d 63 6c 6f 63 61 6c 65 20 66 6f 6f 0a mclocale foo.
6560: 09 20 20 20 20 6d 63 70 61 63 6b 61 67 65 6c 6f . mcpackagelo
6570: 63 61 6c 65 20 73 65 74 20 62 61 72 0a 09 20 20 cale set bar..
6580: 20 20 6d 63 70 61 63 6b 61 67 65 6c 6f 63 61 6c mcpackagelocal
6590: 65 20 63 6c 65 61 72 0a 09 20 20 20 20 6c 69 73 e clear.. lis
65a0: 74 20 5b 6d 63 70 61 63 6b 61 67 65 6c 6f 63 61 t [mcpackageloca
65b0: 6c 65 20 70 72 65 73 65 6e 74 20 66 6f 6f 5d 20 le present foo]
65c0: 5b 6d 63 70 61 63 6b 61 67 65 6c 6f 63 61 6c 65 [mcpackagelocale
65d0: 20 70 72 65 73 65 6e 74 20 62 61 72 5d 0a 09 7d present bar]..}
65e0: 20 2d 72 65 73 75 6c 74 20 7b 30 20 31 7d 0a 0a -result {0 1}..
65f0: 09 74 65 73 74 20 6d 73 67 63 61 74 2d 31 32 2e .test msgcat-12.
6600: 31 31 20 7b 6d 63 70 61 63 6b 61 67 65 6c 6f 63 11 {mcpackageloc
6610: 61 6c 65 20 63 75 73 74 6f 6d 20 70 72 65 66 65 ale custom prefe
6620: 72 65 6e 63 65 73 7d 20 2d 73 65 74 75 70 20 7b rences} -setup {
6630: 0a 09 20 20 20 20 76 61 72 69 61 62 6c 65 20 6c .. variable l
6640: 6f 63 61 6c 65 20 5b 6d 63 6c 6f 63 61 6c 65 5d ocale [mclocale]
6650: 0a 09 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 ..} -cleanup {..
6660: 20 20 20 20 6d 63 6c 6f 63 61 6c 65 20 24 6c 6f mclocale $lo
6670: 63 61 6c 65 0a 09 20 20 20 20 6d 63 66 6f 72 67 cale.. mcforg
6680: 65 74 70 61 63 6b 61 67 65 0a 09 7d 20 2d 62 6f etpackage..} -bo
6690: 64 79 20 7b 0a 09 20 20 20 20 6d 63 6c 6f 63 61 dy {.. mcloca
66a0: 6c 65 20 66 6f 6f 0a 09 20 20 20 20 73 65 74 20 le foo.. set
66b0: 72 65 73 20 5b 6c 69 73 74 20 5b 6d 63 70 61 63 res [list [mcpac
66c0: 6b 61 67 65 6c 6f 63 61 6c 65 20 70 72 65 66 65 kagelocale prefe
66d0: 72 65 6e 63 65 73 5d 5d 0a 09 20 20 20 20 6d 63 rences]].. mc
66e0: 70 61 63 6b 61 67 65 6c 6f 63 61 6c 65 20 70 72 packagelocale pr
66f0: 65 66 65 72 65 6e 63 65 73 20 62 61 72 20 7b 7d eferences bar {}
6700: 0a 09 20 20 20 20 6c 61 70 70 65 6e 64 20 72 65 .. lappend re
6710: 73 20 5b 6d 63 70 61 63 6b 61 67 65 6c 6f 63 61 s [mcpackageloca
6720: 6c 65 20 70 72 65 66 65 72 65 6e 63 65 73 5d 0a le preferences].
6730: 09 7d 20 2d 72 65 73 75 6c 74 20 7b 7b 66 6f 6f .} -result {{foo
6740: 20 7b 7d 7d 20 7b 62 61 72 20 7b 7d 7d 7d 0a 0a {}} {bar {}}}..
6750: 09 74 65 73 74 20 6d 73 67 63 61 74 2d 31 32 2e .test msgcat-12.
6760: 31 32 20 7b 6d 63 70 61 63 6b 61 67 65 6c 6f 63 12 {mcpackageloc
6770: 61 6c 65 20 70 72 65 66 65 72 65 6e 63 65 73 20 ale preferences
6780: 2d 3e 20 6e 6f 20 69 73 73 65 74 7d 20 2d 73 65 -> no isset} -se
6790: 74 75 70 20 7b 0a 09 20 20 20 20 76 61 72 69 61 tup {.. varia
67a0: 62 6c 65 20 6c 6f 63 61 6c 65 20 5b 6d 63 6c 6f ble locale [mclo
67b0: 63 61 6c 65 5d 0a 09 7d 20 2d 63 6c 65 61 6e 75 cale]..} -cleanu
67c0: 70 20 7b 0a 09 20 20 20 20 6d 63 6c 6f 63 61 6c p {.. mclocal
67d0: 65 20 24 6c 6f 63 61 6c 65 0a 09 20 20 20 20 6d e $locale.. m
67e0: 63 66 6f 72 67 65 74 70 61 63 6b 61 67 65 0a 09 cforgetpackage..
67f0: 7d 20 2d 62 6f 64 79 20 7b 0a 09 20 20 20 20 6d } -body {.. m
6800: 63 6c 6f 63 61 6c 65 20 66 6f 6f 0a 09 20 20 20 clocale foo..
6810: 20 6d 63 70 61 63 6b 61 67 65 6c 6f 63 61 6c 65 mcpackagelocale
6820: 20 70 72 65 66 65 72 65 6e 63 65 73 0a 09 20 20 preferences..
6830: 20 20 6d 63 70 61 63 6b 61 67 65 6c 6f 63 61 6c mcpackagelocal
6840: 65 20 69 73 73 65 74 0a 09 7d 20 2d 72 65 73 75 e isset..} -resu
6850: 6c 74 20 7b 30 7d 0a 0a 0a 20 20 20 20 23 20 54 lt {0}... # T
6860: 65 73 74 73 20 6d 73 67 63 61 74 2d 31 33 2e 2a ests msgcat-13.*
6870: 3a 20 5b 6d 63 70 61 63 6b 61 67 65 63 6f 6e 66 : [mcpackageconf
6880: 69 67 20 73 75 62 63 6d 64 73 5d 0a 0a 09 74 65 ig subcmds]...te
6890: 73 74 20 6d 73 67 63 61 74 2d 31 33 2e 31 20 7b st msgcat-13.1 {
68a0: 6d 63 70 61 63 6b 61 67 65 63 6f 6e 66 69 67 20 mcpackageconfig
68b0: 6e 6f 20 73 75 62 63 6f 6d 6d 61 6e 64 7d 20 2d no subcommand} -
68c0: 62 6f 64 79 20 7b 0a 09 20 20 20 20 6d 63 70 61 body {.. mcpa
68d0: 63 6b 61 67 65 63 6f 6e 66 69 67 0a 09 7d 20 2d ckageconfig..} -
68e0: 72 65 74 75 72 6e 43 6f 64 65 73 20 31 5c 0a 09 returnCodes 1\..
68f0: 2d 72 65 73 75 6c 74 20 7b 77 72 6f 6e 67 20 23 -result {wrong #
6900: 20 61 72 67 73 3a 20 73 68 6f 75 6c 64 20 62 65 args: should be
6910: 20 22 6d 63 70 61 63 6b 61 67 65 63 6f 6e 66 69 "mcpackageconfi
6920: 67 20 73 75 62 63 6f 6d 6d 61 6e 64 20 6f 70 74 g subcommand opt
6930: 69 6f 6e 20 3f 76 61 6c 75 65 3f 22 7d 0a 0a 09 ion ?value?"}...
6940: 74 65 73 74 20 6d 73 67 63 61 74 2d 31 33 2e 32 test msgcat-13.2
6950: 20 7b 6d 63 6c 70 61 63 6b 61 67 65 63 6f 6e 66 {mclpackageconf
6960: 69 67 20 77 72 6f 6e 67 20 73 75 62 63 6f 6d 6d ig wrong subcomm
6970: 61 6e 64 7d 20 2d 62 6f 64 79 20 7b 0a 09 20 20 and} -body {..
6980: 20 20 6d 63 70 61 63 6b 61 67 65 63 6f 6e 66 69 mcpackageconfi
6990: 67 20 6a 75 6e 6b 20 6d 63 66 6f 6c 64 65 72 0a g junk mcfolder.
69a0: 09 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 .} -returnCodes
69b0: 31 5c 0a 09 2d 72 65 73 75 6c 74 20 7b 75 6e 6b 1\..-result {unk
69c0: 6e 6f 77 6e 20 73 75 62 63 6f 6d 6d 61 6e 64 20 nown subcommand
69d0: 22 6a 75 6e 6b 22 3a 20 6d 75 73 74 20 62 65 20 "junk": must be
69e0: 67 65 74 2c 20 69 73 73 65 74 2c 20 73 65 74 2c get, isset, set,
69f0: 20 6f 72 20 75 6e 73 65 74 7d 0a 0a 09 74 65 73 or unset}...tes
6a00: 74 20 6d 73 67 63 61 74 2d 31 33 2e 33 20 7b 6d t msgcat-13.3 {m
6a10: 63 6c 70 61 63 6b 61 67 65 63 6f 6e 66 69 67 20 clpackageconfig
6a20: 77 72 6f 6e 67 20 6f 70 74 69 6f 6e 7d 20 2d 62 wrong option} -b
6a30: 6f 64 79 20 7b 0a 09 20 20 20 20 6d 63 70 61 63 ody {.. mcpac
6a40: 6b 61 67 65 63 6f 6e 66 69 67 20 67 65 74 20 6a kageconfig get j
6a50: 75 6e 6b 0a 09 7d 20 2d 72 65 74 75 72 6e 43 6f unk..} -returnCo
6a60: 64 65 73 20 31 5c 0a 09 2d 72 65 73 75 6c 74 20 des 1\..-result
6a70: 7b 62 61 64 20 6f 70 74 69 6f 6e 20 22 6a 75 6e {bad option "jun
6a80: 6b 22 3a 20 6d 75 73 74 20 62 65 20 6d 63 66 6f k": must be mcfo
6a90: 6c 64 65 72 2c 20 6c 6f 61 64 63 6d 64 2c 20 63 lder, loadcmd, c
6aa0: 68 61 6e 67 65 63 6d 64 2c 20 6f 72 20 75 6e 6b hangecmd, or unk
6ab0: 6e 6f 77 6e 63 6d 64 7d 0a 0a 09 74 65 73 74 20 nowncmd}...test
6ac0: 6d 73 67 63 61 74 2d 31 33 2e 34 20 7b 6d 63 70 msgcat-13.4 {mcp
6ad0: 61 63 6b 61 67 65 63 6f 6e 66 69 67 20 67 65 74 ackageconfig get
6ae0: 7d 20 2d 73 65 74 75 70 20 7b 0a 09 20 20 20 20 } -setup {..
6af0: 6d 63 66 6f 72 67 65 74 70 61 63 6b 61 67 65 0a mcforgetpackage.
6b00: 09 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 20 .} -cleanup {..
6b10: 20 20 20 6d 63 66 6f 72 67 65 74 70 61 63 6b 61 mcforgetpacka
6b20: 67 65 0a 09 7d 20 2d 62 6f 64 79 20 7b 0a 09 20 ge..} -body {..
6b30: 20 20 20 6d 63 70 61 63 6b 61 67 65 63 6f 6e 66 mcpackageconf
6b40: 69 67 20 73 65 74 20 6c 6f 61 64 63 6d 64 20 22 ig set loadcmd "
6b50: 22 0a 09 20 20 20 20 6d 63 70 61 63 6b 61 67 65 ".. mcpackage
6b60: 63 6f 6e 66 69 67 20 67 65 74 20 6c 6f 61 64 63 config get loadc
6b70: 6d 64 0a 09 7d 20 2d 72 65 73 75 6c 74 20 7b 7d md..} -result {}
6b80: 0a 0a 09 74 65 73 74 20 6d 73 67 63 61 74 2d 31 ...test msgcat-1
6b90: 33 2e 35 20 7b 6d 63 70 61 63 6b 61 67 65 63 6f 3.5 {mcpackageco
6ba0: 6e 66 69 67 20 28 69 73 2f 75 6e 29 73 65 74 7d nfig (is/un)set}
6bb0: 20 2d 73 65 74 75 70 20 7b 0a 09 20 20 20 20 6d -setup {.. m
6bc0: 63 66 6f 72 67 65 74 70 61 63 6b 61 67 65 0a 09 cforgetpackage..
6bd0: 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 20 20 } -cleanup {..
6be0: 20 20 6d 63 66 6f 72 67 65 74 70 61 63 6b 61 67 mcforgetpackag
6bf0: 65 0a 09 7d 20 2d 62 6f 64 79 20 7b 0a 09 20 20 e..} -body {..
6c00: 20 20 73 65 74 20 72 65 73 20 5b 6d 63 70 61 63 set res [mcpac
6c10: 6b 61 67 65 63 6f 6e 66 69 67 20 69 73 73 65 74 kageconfig isset
6c20: 20 6c 6f 61 64 63 6d 64 5d 0a 09 20 20 20 20 6c loadcmd].. l
6c30: 61 70 70 65 6e 64 20 72 65 73 20 5b 6d 63 70 61 append res [mcpa
6c40: 63 6b 61 67 65 63 6f 6e 66 69 67 20 73 65 74 20 ckageconfig set
6c50: 6c 6f 61 64 63 6d 64 20 22 22 5d 0a 09 20 20 20 loadcmd ""]..
6c60: 20 6c 61 70 70 65 6e 64 20 72 65 73 20 5b 6d 63 lappend res [mc
6c70: 70 61 63 6b 61 67 65 63 6f 6e 66 69 67 20 69 73 packageconfig is
6c80: 73 65 74 20 6c 6f 61 64 63 6d 64 5d 0a 09 20 20 set loadcmd]..
6c90: 20 20 6d 63 70 61 63 6b 61 67 65 63 6f 6e 66 69 mcpackageconfi
6ca0: 67 20 75 6e 73 65 74 20 6c 6f 61 64 63 6d 64 0a g unset loadcmd.
6cb0: 09 20 20 20 20 6c 61 70 70 65 6e 64 20 72 65 73 . lappend res
6cc0: 20 5b 6d 63 70 61 63 6b 61 67 65 63 6f 6e 66 69 [mcpackageconfi
6cd0: 67 20 69 73 73 65 74 20 6c 6f 61 64 63 6d 64 5d g isset loadcmd]
6ce0: 0a 09 7d 20 2d 72 65 73 75 6c 74 20 7b 30 20 30 ..} -result {0 0
6cf0: 20 31 20 30 7d 0a 0a 20 20 20 20 23 20 6f 70 74 1 0}.. # opt
6d00: 69 6f 6e 20 6d 63 66 6f 6c 64 65 72 20 69 73 20 ion mcfolder is
6d10: 61 6c 72 65 61 64 79 20 74 65 73 74 65 64 20 77 already tested w
6d20: 69 74 68 20 35 2e 31 31 0a 0a 20 20 20 20 23 20 ith 5.11.. #
6d30: 54 65 73 74 73 20 6d 73 67 63 61 74 2d 31 34 2e Tests msgcat-14.
6d40: 2a 3a 20 63 61 6c 6c 62 61 63 6b 73 3a 20 6c 6f *: callbacks: lo
6d50: 61 64 63 6d 64 2c 20 63 68 61 6e 67 65 63 6d 64 adcmd, changecmd
6d60: 2c 20 75 6e 6b 6e 6f 77 6e 63 6d 64 0a 0a 20 20 , unknowncmd..
6d70: 20 20 23 20 54 68 69 73 20 72 6f 75 74 69 6e 65 # This routine
6d80: 20 69 73 20 75 73 65 64 20 61 73 20 62 67 65 72 is used as bger
6d90: 72 6f 72 20 61 6e 64 20 62 79 20 64 69 72 65 63 ror and by direc
6da0: 74 20 63 61 6c 6c 62 61 63 6b 20 69 6e 76 6f 63 t callback invoc
6db0: 61 74 69 6f 6e 0a 20 20 20 20 70 72 6f 63 20 63 ation. proc c
6dc0: 61 6c 6c 62 61 63 6b 70 72 6f 63 20 61 72 67 73 allbackproc args
6dd0: 20 7b 0a 09 76 61 72 69 61 62 6c 65 20 72 65 73 {..variable res
6de0: 75 6c 74 76 61 72 69 61 62 6c 65 0a 09 73 65 74 ultvariable..set
6df0: 20 72 65 73 75 6c 74 76 61 72 69 61 62 6c 65 20 resultvariable
6e00: 24 61 72 67 73 0a 20 20 20 20 7d 0a 20 20 20 20 $args. }.
6e10: 70 72 6f 63 20 63 61 6c 6c 62 61 63 6b 66 61 69 proc callbackfai
6e20: 6c 70 72 6f 63 20 61 72 67 73 20 7b 0a 09 72 65 lproc args {..re
6e30: 74 75 72 6e 20 2d 63 6f 64 65 20 65 72 72 6f 72 turn -code error
6e40: 20 66 61 69 6c 0a 20 20 20 20 7d 0a 20 20 20 20 fail. }.
6e50: 73 65 74 20 62 67 65 72 72 6f 72 73 61 76 65 64 set bgerrorsaved
6e60: 20 5b 69 6e 74 65 72 70 20 62 67 65 72 72 6f 72 [interp bgerror
6e70: 20 7b 7d 5d 0a 20 20 20 20 69 6e 74 65 72 70 20 {}]. interp
6e80: 62 67 65 72 72 6f 72 20 7b 7d 20 5b 6e 61 6d 65 bgerror {} [name
6e90: 73 70 61 63 65 20 63 6f 64 65 20 63 61 6c 6c 62 space code callb
6ea0: 61 63 6b 70 72 6f 63 5d 0a 0a 20 20 20 20 76 61 ackproc].. va
6eb0: 72 69 61 62 6c 65 20 6c 6f 63 61 6c 65 0a 20 20 riable locale.
6ec0: 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 if {![info exi
6ed0: 73 74 20 6c 6f 63 61 6c 65 5d 7d 20 7b 20 73 65 st locale]} { se
6ee0: 74 20 6c 6f 63 61 6c 65 20 5b 6d 63 6c 6f 63 61 t locale [mcloca
6ef0: 6c 65 5d 20 7d 0a 0a 09 74 65 73 74 20 6d 73 67 le] }...test msg
6f00: 63 61 74 2d 31 34 2e 31 20 7b 69 6e 76 6f 6b 61 cat-14.1 {invoka
6f10: 74 69 6f 6e 20 6c 6f 61 64 63 6d 64 7d 20 2d 73 tion loadcmd} -s
6f20: 65 74 75 70 20 7b 0a 09 20 20 20 20 6d 63 66 6f etup {.. mcfo
6f30: 72 67 65 74 70 61 63 6b 61 67 65 0a 20 20 20 20 rgetpackage.
6f40: 09 20 20 20 20 6d 63 6c 6f 63 61 6c 65 20 24 6c . mclocale $l
6f50: 6f 63 61 6c 65 0a 09 20 20 20 20 6d 63 6c 6f 63 ocale.. mcloc
6f60: 61 6c 65 20 22 22 0a 09 20 20 20 20 6d 63 6c 6f ale "".. mclo
6f70: 61 64 65 64 6c 6f 63 61 6c 65 73 20 63 6c 65 61 adedlocales clea
6f80: 72 0a 09 20 20 20 20 73 65 74 20 72 65 73 75 6c r.. set resul
6f90: 74 76 61 72 69 61 62 6c 65 20 22 22 0a 09 7d 20 tvariable ""..}
6fa0: 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 20 20 20 20 -cleanup {..
6fb0: 6d 63 66 6f 72 67 65 74 70 61 63 6b 61 67 65 0a mcforgetpackage.
6fc0: 09 7d 20 2d 62 6f 64 79 20 7b 0a 09 20 20 20 20 .} -body {..
6fd0: 6d 63 70 61 63 6b 61 67 65 63 6f 6e 66 69 67 20 mcpackageconfig
6fe0: 73 65 74 20 6c 6f 61 64 63 6d 64 20 5b 6e 61 6d set loadcmd [nam
6ff0: 65 73 70 61 63 65 20 63 6f 64 65 20 63 61 6c 6c espace code call
7000: 62 61 63 6b 70 72 6f 63 5d 0a 09 20 20 20 20 6d backproc].. m
7010: 63 6c 6f 63 61 6c 65 20 66 6f 6f 5f 62 61 72 0a clocale foo_bar.
7020: 09 20 20 20 20 6c 73 6f 72 74 20 24 72 65 73 75 . lsort $resu
7030: 6c 74 76 61 72 69 61 62 6c 65 0a 09 7d 20 2d 72 ltvariable..} -r
7040: 65 73 75 6c 74 20 7b 66 6f 6f 20 66 6f 6f 5f 62 esult {foo foo_b
7050: 61 72 7d 0a 0a 09 74 65 73 74 20 6d 73 67 63 61 ar}...test msgca
7060: 74 2d 31 34 2e 32 20 7b 69 6e 76 6f 6b 61 74 69 t-14.2 {invokati
7070: 6f 6e 20 66 61 69 6c 65 64 20 69 6e 20 6c 6f 61 on failed in loa
7080: 64 63 6d 64 7d 20 2d 73 65 74 75 70 20 7b 0a 09 dcmd} -setup {..
7090: 20 20 20 20 6d 63 66 6f 72 67 65 74 70 61 63 6b mcforgetpack
70a0: 61 67 65 0a 20 20 20 20 09 20 20 20 20 6d 63 6c age. . mcl
70b0: 6f 63 61 6c 65 20 24 6c 6f 63 61 6c 65 0a 09 20 ocale $locale..
70c0: 20 20 20 6d 63 6c 6f 63 61 6c 65 20 22 22 0a 09 mclocale ""..
70d0: 20 20 20 20 6d 63 6c 6f 61 64 65 64 6c 6f 63 61 mcloadedloca
70e0: 6c 65 73 20 63 6c 65 61 72 0a 09 7d 20 2d 63 6c les clear..} -cl
70f0: 65 61 6e 75 70 20 7b 0a 09 20 20 20 20 6d 63 66 eanup {.. mcf
7100: 6f 72 67 65 74 70 61 63 6b 61 67 65 0a 09 20 20 orgetpackage..
7110: 20 20 61 66 74 65 72 20 63 61 6e 63 65 6c 20 73 after cancel s
7120: 65 74 20 5b 6e 61 6d 65 73 70 61 63 65 20 63 75 et [namespace cu
7130: 72 72 65 6e 74 5d 3a 3a 72 65 73 75 6c 74 76 61 rrent]::resultva
7140: 72 69 61 62 6c 65 20 74 69 6d 65 6f 75 74 0a 09 riable timeout..
7150: 7d 20 2d 62 6f 64 79 20 7b 0a 09 20 20 20 20 6d } -body {.. m
7160: 63 70 61 63 6b 61 67 65 63 6f 6e 66 69 67 20 73 cpackageconfig s
7170: 65 74 20 6c 6f 61 64 63 6d 64 20 5b 6e 61 6d 65 et loadcmd [name
7180: 73 70 61 63 65 20 63 6f 64 65 20 63 61 6c 6c 62 space code callb
7190: 61 63 6b 66 61 69 6c 70 72 6f 63 5d 0a 09 20 20 ackfailproc]..
71a0: 20 20 6d 63 6c 6f 63 61 6c 65 20 66 6f 6f 5f 62 mclocale foo_b
71b0: 61 72 0a 09 20 20 20 20 23 20 6c 65 74 20 74 68 ar.. # let th
71c0: 65 20 62 67 65 72 72 6f 72 20 72 75 6e 0a 09 20 e bgerror run..
71d0: 20 20 20 61 66 74 65 72 20 31 30 30 20 73 65 74 after 100 set
71e0: 20 5b 6e 61 6d 65 73 70 61 63 65 20 63 75 72 72 [namespace curr
71f0: 65 6e 74 5d 3a 3a 72 65 73 75 6c 74 76 61 72 69 ent]::resultvari
7200: 61 62 6c 65 20 74 69 6d 65 6f 75 74 0a 09 20 20 able timeout..
7210: 20 20 76 77 61 69 74 20 5b 6e 61 6d 65 73 70 61 vwait [namespa
7220: 63 65 20 63 75 72 72 65 6e 74 5d 3a 3a 72 65 73 ce current]::res
7230: 75 6c 74 76 61 72 69 61 62 6c 65 0a 09 20 20 20 ultvariable..
7240: 20 6c 61 73 73 69 67 6e 20 24 72 65 73 75 6c 74 lassign $result
7250: 76 61 72 69 61 62 6c 65 20 65 72 72 20 65 72 72 variable err err
7260: 64 69 63 74 0a 09 20 20 20 20 6c 69 73 74 20 24 dict.. list $
7270: 65 72 72 20 5b 64 69 63 74 20 67 65 74 20 24 65 err [dict get $e
7280: 72 72 64 69 63 74 20 2d 63 6f 64 65 5d 0a 09 7d rrdict -code]..}
7290: 20 2d 72 65 73 75 6c 74 20 7b 66 61 69 6c 20 31 -result {fail 1
72a0: 7d 0a 0a 09 74 65 73 74 20 6d 73 67 63 61 74 2d }...test msgcat-
72b0: 31 34 2e 33 20 7b 69 6e 76 6f 6b 61 74 69 6f 6e 14.3 {invokation
72c0: 20 63 68 61 6e 67 65 63 6d 64 7d 20 2d 73 65 74 changecmd} -set
72d0: 75 70 20 7b 0a 09 20 20 20 20 6d 63 66 6f 72 67 up {.. mcforg
72e0: 65 74 70 61 63 6b 61 67 65 0a 20 20 20 20 09 20 etpackage. .
72f0: 20 20 20 6d 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 mclocale $loc
7300: 61 6c 65 0a 09 20 20 20 20 6d 63 6c 6f 63 61 6c ale.. mclocal
7310: 65 20 22 22 0a 09 20 20 20 20 73 65 74 20 72 65 e "".. set re
7320: 73 75 6c 74 76 61 72 69 61 62 6c 65 20 22 22 0a sultvariable "".
7330: 09 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 20 .} -cleanup {..
7340: 20 20 20 6d 63 66 6f 72 67 65 74 70 61 63 6b 61 mcforgetpacka
7350: 67 65 0a 09 7d 20 2d 62 6f 64 79 20 7b 0a 09 20 ge..} -body {..
7360: 20 20 20 6d 63 70 61 63 6b 61 67 65 63 6f 6e 66 mcpackageconf
7370: 69 67 20 73 65 74 20 63 68 61 6e 67 65 63 6d 64 ig set changecmd
7380: 20 5b 6e 61 6d 65 73 70 61 63 65 20 63 6f 64 65 [namespace code
7390: 20 63 61 6c 6c 62 61 63 6b 70 72 6f 63 5d 0a 09 callbackproc]..
73a0: 20 20 20 20 6d 63 6c 6f 63 61 6c 65 20 66 6f 6f mclocale foo
73b0: 5f 62 61 72 0a 09 20 20 20 20 73 65 74 20 72 65 _bar.. set re
73c0: 73 75 6c 74 76 61 72 69 61 62 6c 65 0a 09 7d 20 sultvariable..}
73d0: 2d 72 65 73 75 6c 74 20 7b 66 6f 6f 5f 62 61 72 -result {foo_bar
73e0: 20 66 6f 6f 20 7b 7d 7d 0a 0a 09 74 65 73 74 20 foo {}}...test
73f0: 6d 73 67 63 61 74 2d 31 34 2e 34 20 7b 69 6e 76 msgcat-14.4 {inv
7400: 6f 6b 61 74 69 6f 6e 20 75 6e 6b 6e 6f 77 6e 63 okation unknownc
7410: 6d 64 7d 20 2d 73 65 74 75 70 20 7b 0a 09 20 20 md} -setup {..
7420: 20 20 6d 63 66 6f 72 67 65 74 70 61 63 6b 61 67 mcforgetpackag
7430: 65 0a 20 20 20 20 09 20 20 20 20 6d 63 6c 6f 63 e. . mcloc
7440: 61 6c 65 20 24 6c 6f 63 61 6c 65 0a 09 20 20 20 ale $locale..
7450: 20 6d 63 6c 6f 63 61 6c 65 20 22 22 0a 09 20 20 mclocale ""..
7460: 20 20 6d 63 6c 6f 61 64 65 64 6c 6f 63 61 6c 65 mcloadedlocale
7470: 73 20 63 6c 65 61 72 0a 09 20 20 20 20 73 65 74 s clear.. set
7480: 20 72 65 73 75 6c 74 76 61 72 69 61 62 6c 65 20 resultvariable
7490: 22 22 0a 09 7d 20 2d 63 6c 65 61 6e 75 70 20 7b ""..} -cleanup {
74a0: 0a 09 20 20 20 20 6d 63 66 6f 72 67 65 74 70 61 .. mcforgetpa
74b0: 63 6b 61 67 65 0a 09 7d 20 2d 62 6f 64 79 20 7b ckage..} -body {
74c0: 0a 09 20 20 20 20 6d 63 70 61 63 6b 61 67 65 63 .. mcpackagec
74d0: 6f 6e 66 69 67 20 73 65 74 20 75 6e 6b 6e 6f 77 onfig set unknow
74e0: 6e 63 6d 64 20 5b 6e 61 6d 65 73 70 61 63 65 20 ncmd [namespace
74f0: 63 6f 64 65 20 63 61 6c 6c 62 61 63 6b 70 72 6f code callbackpro
7500: 63 5d 0a 09 20 20 20 20 6d 63 6c 6f 63 61 6c 65 c].. mclocale
7510: 20 66 6f 6f 5f 62 61 72 0a 09 20 20 20 20 6d 63 foo_bar.. mc
7520: 20 6b 31 20 70 31 0a 09 20 20 20 20 73 65 74 20 k1 p1.. set
7530: 72 65 73 75 6c 74 76 61 72 69 61 62 6c 65 0a 09 resultvariable..
7540: 7d 20 2d 72 65 73 75 6c 74 20 7b 66 6f 6f 5f 62 } -result {foo_b
7550: 61 72 20 6b 31 20 70 31 7d 0a 0a 09 74 65 73 74 ar k1 p1}...test
7560: 20 6d 73 67 63 61 74 2d 31 34 2e 35 20 7b 64 69 msgcat-14.5 {di
7570: 73 61 62 6c 65 20 67 6c 6f 62 61 6c 20 75 6e 6b sable global unk
7580: 6e 6f 77 6e 63 6d 64 7d 20 2d 73 65 74 75 70 20 nowncmd} -setup
7590: 7b 0a 09 20 20 20 20 6d 63 66 6f 72 67 65 74 70 {.. mcforgetp
75a0: 61 63 6b 61 67 65 0a 20 20 20 20 09 20 20 20 20 ackage. .
75b0: 6d 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 6c 65 mclocale $locale
75c0: 0a 09 20 20 20 20 6d 63 6c 6f 63 61 6c 65 20 22 .. mclocale "
75d0: 22 0a 09 20 20 20 20 6d 63 6c 6f 61 64 65 64 6c ".. mcloadedl
75e0: 6f 63 61 6c 65 73 20 63 6c 65 61 72 0a 09 20 20 ocales clear..
75f0: 20 20 73 65 74 20 72 65 73 75 6c 74 76 61 72 69 set resultvari
7600: 61 62 6c 65 20 22 22 0a 09 20 20 20 20 72 65 6e able "".. ren
7610: 61 6d 65 20 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 ame ::msgcat::mc
7620: 75 6e 6b 6e 6f 77 6e 20 53 61 76 65 64 4d 63 75 unknown SavedMcu
7630: 6e 6b 6e 6f 77 6e 0a 09 20 20 20 20 70 72 6f 63 nknown.. proc
7640: 20 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 75 6e 6b ::msgcat::mcunk
7650: 6e 6f 77 6e 20 7b 64 6f 6d 20 73 7d 20 7b 0a 09 nown {dom s} {..
7660: 09 72 65 74 75 72 6e 20 75 6e 6b 6e 6f 77 6e 3a .return unknown:
7670: 24 64 6f 6d 3a 24 73 0a 09 20 20 20 20 7d 0a 09 $dom:$s.. }..
7680: 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 20 20 } -cleanup {..
7690: 20 20 6d 63 66 6f 72 67 65 74 70 61 63 6b 61 67 mcforgetpackag
76a0: 65 0a 09 20 20 20 20 72 65 6e 61 6d 65 20 3a 3a e.. rename ::
76b0: 6d 73 67 63 61 74 3a 3a 6d 63 75 6e 6b 6e 6f 77 msgcat::mcunknow
76c0: 6e 20 7b 7d 0a 09 20 20 20 20 72 65 6e 61 6d 65 n {}.. rename
76d0: 20 53 61 76 65 64 4d 63 75 6e 6b 6e 6f 77 6e 20 SavedMcunknown
76e0: 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 75 6e 6b 6e ::msgcat::mcunkn
76f0: 6f 77 6e 0a 09 7d 20 2d 62 6f 64 79 20 7b 0a 09 own..} -body {..
7700: 20 20 20 20 6d 63 70 61 63 6b 61 67 65 63 6f 6e mcpackagecon
7710: 66 69 67 20 73 65 74 20 75 6e 6b 6e 6f 77 6e 63 fig set unknownc
7720: 6d 64 20 22 22 0a 09 20 20 20 20 6d 63 6c 6f 63 md "".. mcloc
7730: 61 6c 65 20 66 6f 6f 5f 62 61 72 0a 09 20 20 20 ale foo_bar..
7740: 20 6d 63 20 6b 31 25 73 20 70 31 0a 09 7d 20 2d mc k1%s p1..} -
7750: 72 65 73 75 6c 74 20 7b 6b 31 70 31 7d 0a 0a 09 result {k1p1}...
7760: 74 65 73 74 20 6d 73 67 63 61 74 2d 31 34 2e 36 test msgcat-14.6
7770: 20 7b 75 6e 6b 6e 6f 77 6e 63 6d 64 20 66 61 69 {unknowncmd fai
7780: 6c 69 6e 67 7d 20 2d 73 65 74 75 70 20 7b 0a 09 ling} -setup {..
7790: 20 20 20 20 6d 63 66 6f 72 67 65 74 70 61 63 6b mcforgetpack
77a0: 61 67 65 0a 20 20 20 20 09 20 20 20 20 6d 63 6c age. . mcl
77b0: 6f 63 61 6c 65 20 24 6c 6f 63 61 6c 65 0a 09 20 ocale $locale..
77c0: 20 20 20 6d 63 6c 6f 63 61 6c 65 20 22 22 0a 09 mclocale ""..
77d0: 20 20 20 20 6d 63 6c 6f 61 64 65 64 6c 6f 63 61 mcloadedloca
77e0: 6c 65 73 20 63 6c 65 61 72 0a 09 20 20 20 20 73 les clear.. s
77f0: 65 74 20 72 65 73 75 6c 74 76 61 72 69 61 62 6c et resultvariabl
7800: 65 20 22 22 0a 09 7d 20 2d 63 6c 65 61 6e 75 70 e ""..} -cleanup
7810: 20 7b 0a 09 20 20 20 20 6d 63 66 6f 72 67 65 74 {.. mcforget
7820: 70 61 63 6b 61 67 65 0a 09 7d 20 2d 62 6f 64 79 package..} -body
7830: 20 7b 0a 09 20 20 20 20 6d 63 70 61 63 6b 61 67 {.. mcpackag
7840: 65 63 6f 6e 66 69 67 20 73 65 74 20 75 6e 6b 6e econfig set unkn
7850: 6f 77 6e 63 6d 64 20 5b 6e 61 6d 65 73 70 61 63 owncmd [namespac
7860: 65 20 63 6f 64 65 20 63 61 6c 6c 62 61 63 6b 66 e code callbackf
7870: 61 69 6c 70 72 6f 63 5d 0a 09 20 20 20 20 6d 63 ailproc].. mc
7880: 6c 6f 63 61 6c 65 20 66 6f 6f 5f 62 61 72 0a 09 locale foo_bar..
7890: 20 20 20 20 6d 63 20 6b 31 0a 09 7d 20 2d 72 65 mc k1..} -re
78a0: 74 75 72 6e 43 6f 64 65 73 20 31 5c 0a 09 2d 72 turnCodes 1\..-r
78b0: 65 73 75 6c 74 20 7b 66 61 69 6c 7d 0a 0c 0a 0a esult {fail}....
78c0: 20 20 20 20 23 20 54 65 73 74 73 20 6d 73 67 63 # Tests msgc
78d0: 61 74 2d 31 35 2e 2a 3a 20 74 63 6c 6f 6f 20 63 at-15.*: tcloo c
78e0: 6f 76 65 72 61 67 65 0a 0a 20 20 20 20 23 20 54 overage.. # T
78f0: 68 65 72 65 20 61 72 65 20 34 20 75 73 65 2d 63 here are 4 use-c
7900: 61 73 65 73 2c 20 77 68 65 72 65 20 33 20 6d 75 ases, where 3 mu
7910: 73 74 20 62 65 20 74 65 73 74 65 64 20 6e 6f 77 st be tested now
7920: 3a 0a 20 20 20 20 23 20 2d 20 6e 61 6d 65 73 70 :. # - namesp
7930: 61 63 65 20 64 65 66 69 6e 65 64 2c 20 69 6e 20 ace defined, in
7940: 63 6c 61 73 73 20 64 65 66 69 6e 69 74 69 6f 6e class definition
7950: 2c 20 63 6c 61 73 73 20 64 65 66 69 6e 65 64 20 , class defined
7960: 6f 6f 2c 20 63 6c 61 73 73 6c 65 73 73 0a 0a 20 oo, classless..
7970: 20 20 20 74 65 73 74 20 6d 73 67 63 61 74 2d 31 test msgcat-1
7980: 35 2e 31 20 7b 6d 63 20 69 6e 20 63 6c 61 73 73 5.1 {mc in class
7990: 20 73 65 74 75 70 7d 20 2d 73 65 74 75 70 20 7b setup} -setup {
79a0: 0a 09 23 20 66 75 6c 6c 20 6e 61 6d 65 73 70 61 ..# full namespa
79b0: 63 65 20 69 73 20 3a 3a 6d 73 67 63 61 74 3a 3a ce is ::msgcat::
79c0: 74 65 73 74 3a 62 61 72 0a 09 6e 61 6d 65 73 70 test:bar..namesp
79d0: 61 63 65 20 65 76 61 6c 20 62 61 72 20 7b 0a 09 ace eval bar {..
79e0: 20 20 20 20 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 ::msgcat::mc
79f0: 73 65 74 20 66 6f 6f 5f 42 41 52 20 63 6f 6e 32 set foo_BAR con2
7a00: 20 63 6f 6e 32 62 61 72 0a 09 20 20 20 20 6f 6f con2bar.. oo
7a10: 3a 3a 63 6c 61 73 73 20 63 72 65 61 74 65 20 43 ::class create C
7a20: 6c 61 73 73 43 75 72 0a 09 7d 0a 09 76 61 72 69 lassCur..}..vari
7a30: 61 62 6c 65 20 6c 6f 63 61 6c 65 20 5b 6d 63 6c able locale [mcl
7a40: 6f 63 61 6c 65 5d 0a 09 6d 63 6c 6f 63 61 6c 65 ocale]..mclocale
7a50: 20 66 6f 6f 5f 42 41 52 0a 20 20 20 20 7d 20 2d foo_BAR. } -
7a60: 63 6c 65 61 6e 75 70 20 7b 0a 09 6d 63 6c 6f 63 cleanup {..mcloc
7a70: 61 6c 65 20 24 6c 6f 63 61 6c 65 0a 09 6e 61 6d ale $locale..nam
7a80: 65 73 70 61 63 65 20 65 76 61 6c 20 62 61 72 20 espace eval bar
7a90: 7b 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 66 6f 72 {::msgcat::mcfor
7aa0: 67 65 74 70 61 63 6b 61 67 65 7d 0a 09 6e 61 6d getpackage}..nam
7ab0: 65 73 70 61 63 65 20 64 65 6c 65 74 65 20 62 61 espace delete ba
7ac0: 72 0a 20 20 20 20 7d 20 2d 62 6f 64 79 20 7b 0a r. } -body {.
7ad0: 09 6f 6f 3a 3a 64 65 66 69 6e 65 20 62 61 72 3a .oo::define bar:
7ae0: 3a 43 6c 61 73 73 43 75 72 20 6d 73 67 63 61 74 :ClassCur msgcat
7af0: 3a 3a 6d 63 20 63 6f 6e 32 0a 20 20 20 20 7d 20 ::mc con2. }
7b00: 2d 72 65 73 75 6c 74 20 63 6f 6e 32 62 61 72 0a -result con2bar.
7b10: 0a 20 20 20 20 74 65 73 74 20 6d 73 67 63 61 74 . test msgcat
7b20: 2d 31 35 2e 32 20 7b 6d 63 20 69 6e 20 63 6c 61 -15.2 {mc in cla
7b30: 73 73 7d 20 2d 73 65 74 75 70 20 7b 0a 09 23 20 ss} -setup {..#
7b40: 66 75 6c 6c 20 6e 61 6d 65 73 70 61 63 65 20 69 full namespace i
7b50: 73 20 3a 3a 6d 73 67 63 61 74 3a 3a 74 65 73 74 s ::msgcat::test
7b60: 3a 62 61 72 0a 09 6e 61 6d 65 73 70 61 63 65 20 :bar..namespace
7b70: 65 76 61 6c 20 62 61 72 20 7b 0a 09 20 20 20 20 eval bar {..
7b80: 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 73 65 74 20 ::msgcat::mcset
7b90: 66 6f 6f 5f 42 41 52 20 63 6f 6e 32 20 63 6f 6e foo_BAR con2 con
7ba0: 32 62 61 72 0a 09 20 20 20 20 6f 6f 3a 3a 63 6c 2bar.. oo::cl
7bb0: 61 73 73 20 63 72 65 61 74 65 20 43 6c 61 73 73 ass create Class
7bc0: 43 75 72 0a 09 20 20 20 20 6f 6f 3a 3a 64 65 66 Cur.. oo::def
7bd0: 69 6e 65 20 43 6c 61 73 73 43 75 72 20 6d 65 74 ine ClassCur met
7be0: 68 6f 64 20 6d 65 74 68 6f 64 31 20 7b 7d 20 7b hod method1 {} {
7bf0: 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 20 63 6f 6e ::msgcat::mc con
7c00: 32 7d 0a 09 7d 0a 09 23 20 66 75 6c 6c 20 6e 61 2}..}..# full na
7c10: 6d 65 73 70 61 63 65 20 69 73 20 3a 3a 6d 73 67 mespace is ::msg
7c20: 63 61 74 3a 3a 74 65 73 74 3a 62 61 7a 0a 09 6e cat::test:baz..n
7c30: 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 62 61 amespace eval ba
7c40: 7a 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 z {.
7c50: 73 65 74 20 4f 62 6a 43 75 72 20 5b 3a 3a 6d 73 set ObjCur [::ms
7c60: 67 63 61 74 3a 3a 74 65 73 74 3a 3a 62 61 72 3a gcat::test::bar:
7c70: 3a 43 6c 61 73 73 43 75 72 20 6e 65 77 5d 0a 09 :ClassCur new]..
7c80: 7d 0a 09 76 61 72 69 61 62 6c 65 20 6c 6f 63 61 }..variable loca
7c90: 6c 65 20 5b 6d 63 6c 6f 63 61 6c 65 5d 0a 09 6d le [mclocale]..m
7ca0: 63 6c 6f 63 61 6c 65 20 66 6f 6f 5f 42 41 52 0a clocale foo_BAR.
7cb0: 20 20 20 20 7d 20 2d 63 6c 65 61 6e 75 70 20 7b } -cleanup {
7cc0: 0a 09 6d 63 6c 6f 63 61 6c 65 20 24 6c 6f 63 61 ..mclocale $loca
7cd0: 6c 65 0a 09 6e 61 6d 65 73 70 61 63 65 20 65 76 le..namespace ev
7ce0: 61 6c 20 62 61 72 20 7b 3a 3a 6d 73 67 63 61 74 al bar {::msgcat
7cf0: 3a 3a 6d 63 66 6f 72 67 65 74 70 61 63 6b 61 67 ::mcforgetpackag
7d00: 65 7d 0a 09 6e 61 6d 65 73 70 61 63 65 20 64 65 e}..namespace de
7d10: 6c 65 74 65 20 62 61 72 20 62 61 7a 0a 20 20 20 lete bar baz.
7d20: 20 7d 20 2d 62 6f 64 79 20 7b 0a 09 24 62 61 7a } -body {..$baz
7d30: 3a 3a 4f 62 6a 43 75 72 20 6d 65 74 68 6f 64 31 ::ObjCur method1
7d40: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 63 . } -result c
7d50: 6f 6e 32 62 61 72 0a 0a 20 20 20 20 74 65 73 74 on2bar.. test
7d60: 20 6d 73 67 63 61 74 2d 31 35 2e 33 20 7b 6d 63 msgcat-15.3 {mc
7d70: 20 69 6e 20 63 6c 61 73 73 6c 65 73 73 20 6f 62 in classless ob
7d80: 6a 65 63 74 7d 20 2d 73 65 74 75 70 20 7b 0a 09 ject} -setup {..
7d90: 23 20 66 75 6c 6c 20 6e 61 6d 65 73 70 61 63 65 # full namespace
7da0: 20 69 73 20 3a 3a 6d 73 67 63 61 74 3a 3a 74 65 is ::msgcat::te
7db0: 73 74 3a 62 61 72 0a 09 6e 61 6d 65 73 70 61 63 st:bar..namespac
7dc0: 65 20 65 76 61 6c 20 62 61 72 20 7b 0a 09 20 20 e eval bar {..
7dd0: 20 20 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 73 65 ::msgcat::mcse
7de0: 74 20 66 6f 6f 5f 42 41 52 20 63 6f 6e 32 20 63 t foo_BAR con2 c
7df0: 6f 6e 32 62 61 72 0a 09 20 20 20 20 6f 6f 3a 3a on2bar.. oo::
7e00: 6f 62 6a 65 63 74 20 63 72 65 61 74 65 20 4f 62 object create Ob
7e10: 6a 43 75 72 0a 09 20 20 20 20 6f 6f 3a 3a 6f 62 jCur.. oo::ob
7e20: 6a 64 65 66 69 6e 65 20 4f 62 6a 43 75 72 20 6d jdefine ObjCur m
7e30: 65 74 68 6f 64 20 6d 65 74 68 6f 64 31 20 7b 7d ethod method1 {}
7e40: 20 7b 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 20 63 {::msgcat::mc c
7e50: 6f 6e 32 7d 0a 09 7d 0a 09 76 61 72 69 61 62 6c on2}..}..variabl
7e60: 65 20 6c 6f 63 61 6c 65 20 5b 6d 63 6c 6f 63 61 e locale [mcloca
7e70: 6c 65 5d 0a 09 6d 63 6c 6f 63 61 6c 65 20 66 6f le]..mclocale fo
7e80: 6f 5f 42 41 52 0a 20 20 20 20 7d 20 2d 63 6c 65 o_BAR. } -cle
7e90: 61 6e 75 70 20 7b 0a 09 6d 63 6c 6f 63 61 6c 65 anup {..mclocale
7ea0: 20 24 6c 6f 63 61 6c 65 0a 09 6e 61 6d 65 73 70 $locale..namesp
7eb0: 61 63 65 20 65 76 61 6c 20 62 61 72 20 7b 3a 3a ace eval bar {::
7ec0: 6d 73 67 63 61 74 3a 3a 6d 63 66 6f 72 67 65 74 msgcat::mcforget
7ed0: 70 61 63 6b 61 67 65 7d 0a 09 6e 61 6d 65 73 70 package}..namesp
7ee0: 61 63 65 20 64 65 6c 65 74 65 20 62 61 72 0a 20 ace delete bar.
7ef0: 20 20 20 7d 20 2d 62 6f 64 79 20 7b 0a 09 62 61 } -body {..ba
7f00: 72 3a 3a 4f 62 6a 43 75 72 20 6d 65 74 68 6f 64 r::ObjCur method
7f10: 31 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 1. } -result
7f20: 63 6f 6e 32 62 61 72 0a 0a 20 20 20 20 74 65 73 con2bar.. tes
7f30: 74 20 6d 73 67 63 61 74 2d 31 35 2e 34 20 7b 6d t msgcat-15.4 {m
7f40: 63 20 69 6e 20 63 6c 61 73 73 6c 65 73 73 20 6f c in classless o
7f50: 62 6a 65 63 74 20 77 69 74 68 20 65 78 70 6c 69 bject with expli
7f60: 63 69 74 65 20 6e 61 6d 65 73 70 61 63 65 20 65 cite namespace e
7f70: 76 61 6c 7d 5c 0a 20 20 20 20 2d 73 65 74 75 70 val}\. -setup
7f80: 20 7b 0a 09 23 20 66 75 6c 6c 20 6e 61 6d 65 73 {..# full names
7f90: 70 61 63 65 20 69 73 20 3a 3a 6d 73 67 63 61 74 pace is ::msgcat
7fa0: 3a 3a 74 65 73 74 3a 62 61 72 0a 09 6e 61 6d 65 ::test:bar..name
7fb0: 73 70 61 63 65 20 65 76 61 6c 20 62 61 72 20 7b space eval bar {
7fc0: 0a 09 20 20 20 20 3a 3a 6d 73 67 63 61 74 3a 3a .. ::msgcat::
7fd0: 6d 63 73 65 74 20 66 6f 6f 5f 42 41 52 20 63 6f mcset foo_BAR co
7fe0: 6e 32 20 63 6f 6e 32 62 61 72 0a 09 20 20 20 20 n2 con2bar..
7ff0: 6f 6f 3a 3a 6f 62 6a 65 63 74 20 63 72 65 61 74 oo::object creat
8000: 65 20 4f 62 6a 43 75 72 0a 09 20 20 20 20 6f 6f e ObjCur.. oo
8010: 3a 3a 6f 62 6a 64 65 66 69 6e 65 20 4f 62 6a 43 ::objdefine ObjC
8020: 75 72 20 6d 65 74 68 6f 64 20 6d 65 74 68 6f 64 ur method method
8030: 31 20 7b 7d 20 7b 0a 09 09 6e 61 6d 65 73 70 61 1 {} {...namespa
8040: 63 65 20 65 76 61 6c 20 3a 3a 6d 73 67 63 61 74 ce eval ::msgcat
8050: 3a 3a 74 65 73 74 3a 3a 62 61 7a 20 7b 0a 09 09 ::test::baz {...
8060: 20 20 20 20 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 ::msgcat::mc
8070: 20 63 6f 6e 32 0a 09 09 7d 0a 09 20 20 20 20 7d con2...}.. }
8080: 0a 09 7d 0a 09 6e 61 6d 65 73 70 61 63 65 20 65 ..}..namespace e
8090: 76 61 6c 20 62 61 7a 20 7b 0a 09 20 20 20 20 3a val baz {.. :
80a0: 3a 6d 73 67 63 61 74 3a 3a 6d 63 73 65 74 20 66 :msgcat::mcset f
80b0: 6f 6f 5f 42 41 52 20 63 6f 6e 32 20 63 6f 6e 32 oo_BAR con2 con2
80c0: 62 61 7a 0a 09 7d 0a 09 76 61 72 69 61 62 6c 65 baz..}..variable
80d0: 20 6c 6f 63 61 6c 65 20 5b 6d 63 6c 6f 63 61 6c locale [mclocal
80e0: 65 5d 0a 09 6d 63 6c 6f 63 61 6c 65 20 66 6f 6f e]..mclocale foo
80f0: 5f 42 41 52 0a 20 20 20 20 7d 20 2d 63 6c 65 61 _BAR. } -clea
8100: 6e 75 70 20 7b 0a 09 6d 63 6c 6f 63 61 6c 65 20 nup {..mclocale
8110: 24 6c 6f 63 61 6c 65 0a 09 6e 61 6d 65 73 70 61 $locale..namespa
8120: 63 65 20 65 76 61 6c 20 62 61 72 20 7b 3a 3a 6d ce eval bar {::m
8130: 73 67 63 61 74 3a 3a 6d 63 66 6f 72 67 65 74 70 sgcat::mcforgetp
8140: 61 63 6b 61 67 65 7d 0a 09 6e 61 6d 65 73 70 61 ackage}..namespa
8150: 63 65 20 65 76 61 6c 20 62 61 7a 20 7b 3a 3a 6d ce eval baz {::m
8160: 73 67 63 61 74 3a 3a 6d 63 66 6f 72 67 65 74 70 sgcat::mcforgetp
8170: 61 63 6b 61 67 65 7d 0a 09 6e 61 6d 65 73 70 61 ackage}..namespa
8180: 63 65 20 64 65 6c 65 74 65 20 62 61 72 20 62 61 ce delete bar ba
8190: 7a 0a 20 20 20 20 7d 20 2d 62 6f 64 79 20 7b 0a z. } -body {.
81a0: 09 62 61 72 3a 3a 4f 62 6a 43 75 72 20 6d 65 74 .bar::ObjCur met
81b0: 68 6f 64 31 0a 20 20 20 20 7d 20 2d 72 65 73 75 hod1. } -resu
81c0: 6c 74 20 63 6f 6e 32 62 61 7a 0a 0a 20 20 20 20 lt con2baz..
81d0: 23 20 54 65 73 74 20 6d 73 67 63 61 74 2d 31 36 # Test msgcat-16
81e0: 2e 2a 3a 20 63 6f 6d 6d 61 6e 64 20 6d 63 70 61 .*: command mcpa
81f0: 63 6b 61 67 65 6e 61 6d 65 73 70 61 63 65 67 65 ckagenamespacege
8200: 74 0a 0a 20 20 20 20 74 65 73 74 20 6d 73 67 63 t.. test msgc
8210: 61 74 2d 31 36 2e 31 20 7b 6d 63 70 61 63 6b 61 at-16.1 {mcpacka
8220: 67 65 6e 61 6d 65 73 70 61 63 65 67 65 74 20 69 genamespaceget i
8230: 6e 20 6e 61 6d 65 73 70 61 63 65 20 70 72 6f 63 n namespace proc
8240: 65 64 75 72 65 7d 20 2d 62 6f 64 79 20 7b 0a 09 edure} -body {..
8250: 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 62 namespace eval b
8260: 61 7a 20 7b 6d 73 67 63 61 74 3a 3a 6d 63 70 61 az {msgcat::mcpa
8270: 63 6b 61 67 65 6e 61 6d 65 73 70 61 63 65 67 65 ckagenamespacege
8280: 74 7d 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 t}. } -result
8290: 20 3a 3a 6d 73 67 63 61 74 3a 3a 74 65 73 74 3a ::msgcat::test:
82a0: 3a 62 61 7a 0a 0a 20 20 20 20 74 65 73 74 20 6d :baz.. test m
82b0: 73 67 63 61 74 2d 31 36 2e 32 20 7b 6d 63 70 61 sgcat-16.2 {mcpa
82c0: 63 6b 61 67 65 6e 61 6d 65 73 70 61 63 65 67 65 ckagenamespacege
82d0: 74 20 69 6e 20 63 6c 61 73 73 20 73 65 74 75 70 t in class setup
82e0: 7d 20 2d 73 65 74 75 70 20 7b 0a 09 6e 61 6d 65 } -setup {..name
82f0: 73 70 61 63 65 20 65 76 61 6c 20 62 61 72 20 7b space eval bar {
8300: 0a 09 20 20 20 20 6f 6f 3a 3a 63 6c 61 73 73 20 .. oo::class
8310: 63 72 65 61 74 65 20 43 6c 61 73 73 43 75 72 0a create ClassCur.
8320: 09 20 20 20 20 6f 6f 3a 3a 64 65 66 69 6e 65 20 . oo::define
8330: 43 6c 61 73 73 43 75 72 20 76 61 72 69 61 62 6c ClassCur variabl
8340: 65 20 61 0a 09 7d 0a 20 20 20 20 7d 20 2d 63 6c e a..}. } -cl
8350: 65 61 6e 75 70 20 7b 0a 09 6e 61 6d 65 73 70 61 eanup {..namespa
8360: 63 65 20 64 65 6c 65 74 65 20 62 61 72 0a 20 20 ce delete bar.
8370: 20 20 7d 20 2d 62 6f 64 79 20 7b 0a 09 6f 6f 3a } -body {..oo:
8380: 3a 64 65 66 69 6e 65 20 62 61 72 3a 3a 43 6c 61 :define bar::Cla
8390: 73 73 43 75 72 20 6d 73 67 63 61 74 3a 3a 6d 63 ssCur msgcat::mc
83a0: 70 61 63 6b 61 67 65 6e 61 6d 65 73 70 61 63 65 packagenamespace
83b0: 67 65 74 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c get. } -resul
83c0: 74 20 3a 3a 6d 73 67 63 61 74 3a 3a 74 65 73 74 t ::msgcat::test
83d0: 3a 3a 62 61 72 0a 0a 20 20 20 20 74 65 73 74 20 ::bar.. test
83e0: 6d 73 67 63 61 74 2d 31 36 2e 33 20 7b 6d 63 70 msgcat-16.3 {mcp
83f0: 61 63 6b 61 67 65 6e 61 6d 65 73 70 61 63 65 67 ackagenamespaceg
8400: 65 74 20 69 6e 20 63 6c 61 73 73 7d 20 2d 73 65 et in class} -se
8410: 74 75 70 20 7b 0a 09 6e 61 6d 65 73 70 61 63 65 tup {..namespace
8420: 20 65 76 61 6c 20 62 61 72 20 7b 0a 09 20 20 20 eval bar {..
8430: 20 6f 6f 3a 3a 63 6c 61 73 73 20 63 72 65 61 74 oo::class creat
8440: 65 20 43 6c 61 73 73 43 75 72 0a 09 20 20 20 20 e ClassCur..
8450: 6f 6f 3a 3a 64 65 66 69 6e 65 20 43 6c 61 73 73 oo::define Class
8460: 43 75 72 20 6d 65 74 68 6f 64 20 6d 65 74 68 6f Cur method metho
8470: 64 31 20 7b 7d 20 7b 6d 73 67 63 61 74 3a 3a 6d d1 {} {msgcat::m
8480: 63 70 61 63 6b 61 67 65 6e 61 6d 65 73 70 61 63 cpackagenamespac
8490: 65 67 65 74 7d 0a 09 7d 0a 09 6e 61 6d 65 73 70 eget}..}..namesp
84a0: 61 63 65 20 65 76 61 6c 20 62 61 7a 20 7b 0a 20 ace eval baz {.
84b0: 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20 4f set O
84c0: 62 6a 43 75 72 20 5b 3a 3a 6d 73 67 63 61 74 3a bjCur [::msgcat:
84d0: 3a 74 65 73 74 3a 3a 62 61 72 3a 3a 43 6c 61 73 :test::bar::Clas
84e0: 73 43 75 72 20 6e 65 77 5d 0a 09 7d 0a 20 20 20 sCur new]..}.
84f0: 20 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 6e } -cleanup {..n
8500: 61 6d 65 73 70 61 63 65 20 64 65 6c 65 74 65 20 amespace delete
8510: 62 61 72 20 62 61 7a 0a 20 20 20 20 7d 20 2d 62 bar baz. } -b
8520: 6f 64 79 20 7b 0a 09 24 62 61 7a 3a 3a 4f 62 6a ody {..$baz::Obj
8530: 43 75 72 20 6d 65 74 68 6f 64 31 0a 20 20 20 20 Cur method1.
8540: 7d 20 2d 72 65 73 75 6c 74 20 3a 3a 6d 73 67 63 } -result ::msgc
8550: 61 74 3a 3a 74 65 73 74 3a 3a 62 61 72 0a 0a 20 at::test::bar..
8560: 20 20 20 74 65 73 74 20 6d 73 67 63 61 74 2d 31 test msgcat-1
8570: 36 2e 34 20 7b 6d 63 70 61 63 6b 61 67 65 6e 61 6.4 {mcpackagena
8580: 6d 65 73 70 61 63 65 67 65 74 20 69 6e 20 63 6c mespaceget in cl
8590: 61 73 73 6c 65 73 73 20 6f 62 6a 65 63 74 7d 20 assless object}
85a0: 2d 73 65 74 75 70 20 7b 0a 09 6e 61 6d 65 73 70 -setup {..namesp
85b0: 61 63 65 20 65 76 61 6c 20 62 61 72 20 7b 0a 09 ace eval bar {..
85c0: 20 20 20 20 6f 6f 3a 3a 6f 62 6a 65 63 74 20 63 oo::object c
85d0: 72 65 61 74 65 20 4f 62 6a 43 75 72 0a 09 20 20 reate ObjCur..
85e0: 20 20 6f 6f 3a 3a 6f 62 6a 64 65 66 69 6e 65 20 oo::objdefine
85f0: 4f 62 6a 43 75 72 20 6d 65 74 68 6f 64 20 6d 65 ObjCur method me
8600: 74 68 6f 64 31 20 7b 7d 20 7b 6d 73 67 63 61 74 thod1 {} {msgcat
8610: 3a 3a 6d 63 70 61 63 6b 61 67 65 6e 61 6d 65 73 ::mcpackagenames
8620: 70 61 63 65 67 65 74 7d 0a 09 7d 0a 20 20 20 20 paceget}..}.
8630: 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 09 6e 61 } -cleanup {..na
8640: 6d 65 73 70 61 63 65 20 64 65 6c 65 74 65 20 62 mespace delete b
8650: 61 72 0a 20 20 20 20 7d 20 2d 62 6f 64 79 20 7b ar. } -body {
8660: 0a 09 62 61 72 3a 3a 4f 62 6a 43 75 72 20 6d 65 ..bar::ObjCur me
8670: 74 68 6f 64 31 0a 20 20 20 20 7d 20 2d 72 65 73 thod1. } -res
8680: 75 6c 74 20 3a 3a 6d 73 67 63 61 74 3a 3a 74 65 ult ::msgcat::te
8690: 73 74 3a 3a 62 61 72 0a 0a 20 20 20 20 74 65 73 st::bar.. tes
86a0: 74 20 6d 73 67 63 61 74 2d 31 36 2e 35 5c 0a 20 t msgcat-16.5\.
86b0: 20 20 20 7b 6d 63 70 61 63 6b 61 67 65 6e 61 6d {mcpackagenam
86c0: 65 73 70 61 63 65 67 65 74 20 69 6e 20 63 6c 61 espaceget in cla
86d0: 73 73 6c 65 73 73 20 6f 62 6a 65 63 74 20 77 69 ssless object wi
86e0: 74 68 20 65 78 70 6c 69 63 69 74 65 20 6e 61 6d th explicite nam
86f0: 65 73 70 61 63 65 20 65 76 61 6c 7d 5c 0a 20 20 espace eval}\.
8700: 20 20 2d 73 65 74 75 70 20 7b 0a 09 6e 61 6d 65 -setup {..name
8710: 73 70 61 63 65 20 65 76 61 6c 20 62 61 72 20 7b space eval bar {
8720: 0a 09 20 20 20 20 6f 6f 3a 3a 6f 62 6a 65 63 74 .. oo::object
8730: 20 63 72 65 61 74 65 20 4f 62 6a 43 75 72 0a 09 create ObjCur..
8740: 20 20 20 20 6f 6f 3a 3a 6f 62 6a 64 65 66 69 6e oo::objdefin
8750: 65 20 4f 62 6a 43 75 72 20 6d 65 74 68 6f 64 20 e ObjCur method
8760: 6d 65 74 68 6f 64 31 20 7b 7d 20 7b 0a 09 09 6e method1 {} {...n
8770: 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 3a 3a amespace eval ::
8780: 6d 73 67 63 61 74 3a 3a 74 65 73 74 3a 3a 62 61 msgcat::test::ba
8790: 7a 20 7b 0a 09 09 20 20 20 20 6d 73 67 63 61 74 z {... msgcat
87a0: 3a 3a 6d 63 70 61 63 6b 61 67 65 6e 61 6d 65 73 ::mcpackagenames
87b0: 70 61 63 65 67 65 74 0a 09 09 7d 0a 09 20 20 20 paceget...}..
87c0: 20 7d 0a 09 7d 0a 20 20 20 20 7d 20 2d 63 6c 65 }..}. } -cle
87d0: 61 6e 75 70 20 7b 0a 09 6e 61 6d 65 73 70 61 63 anup {..namespac
87e0: 65 20 64 65 6c 65 74 65 20 62 61 72 20 62 61 7a e delete bar baz
87f0: 0a 20 20 20 20 7d 20 2d 62 6f 64 79 20 7b 0a 09 . } -body {..
8800: 62 61 72 3a 3a 4f 62 6a 43 75 72 20 6d 65 74 68 bar::ObjCur meth
8810: 6f 64 31 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c od1. } -resul
8820: 74 20 3a 3a 6d 73 67 63 61 74 3a 3a 74 65 73 74 t ::msgcat::test
8830: 3a 3a 62 61 7a 0a 0a 0c 0a 20 20 20 20 23 20 54 ::baz.... # T
8840: 65 73 74 20 6d 73 67 63 61 74 2d 31 37 2e 2a 3a est msgcat-17.*:
8850: 20 6d 63 6e 20 63 6f 6d 6d 61 6e 64 0a 0a 20 20 mcn command..
8860: 20 20 74 65 73 74 20 6d 73 67 63 61 74 2d 31 37 test msgcat-17
8870: 2e 31 20 7b 6d 63 6e 20 6e 6f 20 70 61 72 61 6d .1 {mcn no param
8880: 65 74 65 72 73 7d 20 2d 62 6f 64 79 20 7b 0a 09 eters} -body {..
8890: 6d 63 6e 0a 20 20 20 20 7d 20 2d 72 65 74 75 72 mcn. } -retur
88a0: 6e 43 6f 64 65 73 20 31 5c 0a 20 20 20 20 2d 72 nCodes 1\. -r
88b0: 65 73 75 6c 74 20 7b 77 72 6f 6e 67 20 23 20 61 esult {wrong # a
88c0: 72 67 73 3a 20 73 68 6f 75 6c 64 20 62 65 20 22 rgs: should be "
88d0: 6d 63 6e 20 6e 73 20 73 72 63 20 3f 61 72 67 20 mcn ns src ?arg
88e0: 2e 2e 2e 3f 22 7d 0a 0a 20 20 20 20 74 65 73 74 ...?"}.. test
88f0: 20 6d 73 67 63 61 74 2d 31 37 2e 32 20 7b 6d 63 msgcat-17.2 {mc
8900: 6e 7d 20 2d 73 65 74 75 70 20 7b 0a 09 6e 61 6d n} -setup {..nam
8910: 65 73 70 61 63 65 20 65 76 61 6c 20 62 61 72 20 espace eval bar
8920: 7b 3a 3a 6d 73 67 63 61 74 3a 3a 6d 63 73 65 74 {::msgcat::mcset
8930: 20 66 6f 6f 5f 42 41 52 20 63 6f 6e 31 20 63 6f foo_BAR con1 co
8940: 6e 31 62 61 72 7d 0a 09 76 61 72 69 61 62 6c 65 n1bar}..variable
8950: 20 6c 6f 63 61 6c 65 20 5b 6d 63 6c 6f 63 61 6c locale [mclocal
8960: 65 5d 0a 09 6d 63 6c 6f 63 61 6c 65 20 66 6f 6f e]..mclocale foo
8970: 5f 42 41 52 0a 20 20 20 20 7d 20 2d 63 6c 65 61 _BAR. } -clea
8980: 6e 75 70 20 7b 0a 09 6d 63 6c 6f 63 61 6c 65 20 nup {..mclocale
8990: 24 6c 6f 63 61 6c 65 0a 20 20 20 20 7d 20 2d 62 $locale. } -b
89a0: 6f 64 79 20 7b 0a 09 3a 3a 6d 73 67 63 61 74 3a ody {..::msgcat:
89b0: 3a 6d 63 6e 20 5b 6e 61 6d 65 73 70 61 63 65 20 :mcn [namespace
89c0: 63 75 72 72 65 6e 74 5d 3a 3a 62 61 72 20 63 6f current]::bar co
89d0: 6e 31 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 n1. } -result
89e0: 20 63 6f 6e 31 62 61 72 0a 0a 0c 0a 20 20 20 20 con1bar....
89f0: 69 6e 74 65 72 70 20 62 67 65 72 72 6f 72 20 7b interp bgerror {
8a00: 7d 20 24 62 67 65 72 72 6f 72 73 61 76 65 64 0a } $bgerrorsaved.
8a10: 0a 20 20 20 20 23 20 54 65 73 74 73 20 6d 73 67 . # Tests msg
8a20: 63 61 74 2d 31 38 2e 2a 3a 20 5b 6d 63 75 74 69 cat-18.*: [mcuti
8a30: 6c 5d 0a 0a 20 20 20 20 74 65 73 74 20 6d 73 67 l].. test msg
8a40: 63 61 74 2d 31 38 2e 31 20 7b 6d 63 75 74 69 6c cat-18.1 {mcutil
8a50: 20 2d 20 6e 6f 20 61 72 67 75 6d 65 6e 74 7d 20 - no argument}
8a60: 2d 62 6f 64 79 20 7b 0a 09 6d 63 75 74 69 6c 0a -body {..mcutil.
8a70: 20 20 20 20 7d 20 2d 72 65 74 75 72 6e 43 6f 64 } -returnCod
8a80: 65 73 20 31 5c 0a 20 20 20 20 2d 72 65 73 75 6c es 1\. -resul
8a90: 74 20 7b 77 72 6f 6e 67 20 23 20 61 72 67 73 3a t {wrong # args:
8aa0: 20 73 68 6f 75 6c 64 20 62 65 20 22 6d 63 75 74 should be "mcut
8ab0: 69 6c 20 73 75 62 63 6f 6d 6d 61 6e 64 20 3f 61 il subcommand ?a
8ac0: 72 67 20 2e 2e 2e 3f 22 7d 0a 0a 20 20 20 20 74 rg ...?"}.. t
8ad0: 65 73 74 20 6d 73 67 63 61 74 2d 31 38 2e 32 20 est msgcat-18.2
8ae0: 7b 6d 63 75 74 69 6c 20 2d 20 77 72 6f 6e 67 20 {mcutil - wrong
8af0: 61 72 67 75 6d 65 6e 74 7d 20 2d 62 6f 64 79 20 argument} -body
8b00: 7b 0a 09 6d 63 75 74 69 6c 20 6a 75 6e 6b 0a 20 {..mcutil junk.
8b10: 20 20 20 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 } -returnCode
8b20: 73 20 31 5c 0a 20 20 20 20 2d 72 65 73 75 6c 74 s 1\. -result
8b30: 20 7b 75 6e 6b 6e 6f 77 6e 20 73 75 62 63 6f 6d {unknown subcom
8b40: 6d 61 6e 64 20 22 6a 75 6e 6b 22 3a 20 6d 75 73 mand "junk": mus
8b50: 74 20 62 65 20 67 65 74 70 72 65 66 65 72 65 6e t be getpreferen
8b60: 63 65 73 2c 20 6f 72 20 67 65 74 73 79 73 74 65 ces, or getsyste
8b70: 6d 6c 6f 63 61 6c 65 7d 0a 0a 20 20 20 20 74 65 mlocale}.. te
8b80: 73 74 20 6d 73 67 63 61 74 2d 31 38 2e 33 20 7b st msgcat-18.3 {
8b90: 6d 63 75 74 69 6c 20 2d 20 70 61 72 74 69 61 6c mcutil - partial
8ba0: 20 61 72 67 75 6d 65 6e 74 7d 20 2d 62 6f 64 79 argument} -body
8bb0: 20 7b 0a 09 6d 63 75 74 69 6c 20 67 65 74 73 79 {..mcutil getsy
8bc0: 73 74 65 6d 0a 20 20 20 20 7d 20 2d 72 65 74 75 stem. } -retu
8bd0: 72 6e 43 6f 64 65 73 20 31 5c 0a 20 20 20 20 2d rnCodes 1\. -
8be0: 72 65 73 75 6c 74 20 7b 75 6e 6b 6e 6f 77 6e 20 result {unknown
8bf0: 73 75 62 63 6f 6d 6d 61 6e 64 20 22 67 65 74 73 subcommand "gets
8c00: 79 73 74 65 6d 22 3a 20 6d 75 73 74 20 62 65 20 ystem": must be
8c10: 67 65 74 70 72 65 66 65 72 65 6e 63 65 73 2c 20 getpreferences,
8c20: 6f 72 20 67 65 74 73 79 73 74 65 6d 6c 6f 63 61 or getsystemloca
8c30: 6c 65 7d 0a 0a 20 20 20 20 74 65 73 74 20 6d 73 le}.. test ms
8c40: 67 63 61 74 2d 31 38 2e 34 20 7b 6d 63 75 74 69 gcat-18.4 {mcuti
8c50: 6c 20 67 65 74 70 72 65 66 65 72 65 6e 63 65 73 l getpreferences
8c60: 20 2d 20 6e 6f 20 61 72 67 75 6d 65 6e 74 7d 20 - no argument}
8c70: 2d 62 6f 64 79 20 7b 0a 09 6d 63 75 74 69 6c 20 -body {..mcutil
8c80: 67 65 74 70 72 65 66 65 72 65 6e 63 65 73 0a 20 getpreferences.
8c90: 20 20 20 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 } -returnCode
8ca0: 73 20 31 5c 0a 20 20 20 20 2d 72 65 73 75 6c 74 s 1\. -result
8cb0: 20 7b 77 72 6f 6e 67 20 23 20 61 72 67 73 3a 20 {wrong # args:
8cc0: 73 68 6f 75 6c 64 20 62 65 20 22 6d 63 75 74 69 should be "mcuti
8cd0: 6c 20 67 65 74 70 72 65 66 65 72 65 6e 63 65 73 l getpreferences
8ce0: 20 6c 6f 63 61 6c 65 22 7d 0a 0a 20 20 20 20 74 locale"}.. t
8cf0: 65 73 74 20 6d 73 67 63 61 74 2d 31 38 2e 35 20 est msgcat-18.5
8d00: 7b 6d 63 75 74 69 6c 20 67 65 74 70 72 65 66 65 {mcutil getprefe
8d10: 72 65 6e 63 65 73 20 2d 20 44 45 5f 64 65 7d 20 rences - DE_de}
8d20: 2d 62 6f 64 79 20 7b 0a 09 6d 63 75 74 69 6c 20 -body {..mcutil
8d30: 67 65 74 70 72 65 66 65 72 65 6e 63 65 73 20 44 getpreferences D
8d40: 45 5f 64 65 0a 20 20 20 20 7d 20 2d 72 65 73 75 E_de. } -resu
8d50: 6c 74 20 7b 64 65 5f 64 65 20 64 65 20 7b 7d 7d lt {de_de de {}}
8d60: 0a 0a 20 20 20 20 74 65 73 74 20 6d 73 67 63 61 .. test msgca
8d70: 74 2d 31 38 2e 36 20 7b 6d 63 75 74 69 6c 20 67 t-18.6 {mcutil g
8d80: 65 74 73 79 73 74 65 6d 6c 6f 63 61 6c 65 20 2d etsystemlocale -
8d90: 20 77 72 6f 6e 67 20 61 72 67 75 6d 65 6e 74 7d wrong argument}
8da0: 20 2d 62 6f 64 79 20 7b 0a 09 6d 63 75 74 69 6c -body {..mcutil
8db0: 20 67 65 74 73 79 73 74 65 6d 6c 6f 63 61 6c 65 getsystemlocale
8dc0: 20 44 45 5f 64 65 0a 20 20 20 20 7d 20 2d 72 65 DE_de. } -re
8dd0: 74 75 72 6e 43 6f 64 65 73 20 31 5c 0a 20 20 20 turnCodes 1\.
8de0: 20 2d 72 65 73 75 6c 74 20 7b 77 72 6f 6e 67 20 -result {wrong
8df0: 23 20 61 72 67 73 3a 20 73 68 6f 75 6c 64 20 62 # args: should b
8e00: 65 20 22 6d 63 75 74 69 6c 20 67 65 74 73 79 73 e "mcutil getsys
8e10: 74 65 6d 6c 6f 63 61 6c 65 22 7d 0a 0a 20 20 20 temlocale"}..
8e20: 20 23 20 54 68 65 20 72 65 73 75 6c 74 20 69 73 # The result is
8e30: 20 73 79 73 74 65 6d 20 64 65 70 65 6e 64 65 6e system dependen
8e40: 74 0a 20 20 20 20 23 20 53 6f 20 6a 75 73 74 20 t. # So just
8e50: 74 65 73 74 20 69 66 20 69 74 20 72 75 6e 73 0a test if it runs.
8e60: 20 20 20 20 23 20 54 68 65 20 65 6e 76 69 72 6f # The enviro
8e70: 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 20 76 nment variable v
8e80: 65 72 73 69 6f 6e 20 77 61 73 20 74 65 73 74 20 ersion was test
8e90: 77 69 74 68 20 74 65 73 74 20 30 2e 78 0a 20 20 with test 0.x.
8ea0: 20 20 74 65 73 74 20 6d 73 67 63 61 74 2d 31 38 test msgcat-18
8eb0: 2e 37 20 7b 6d 63 75 74 69 6c 20 67 65 74 73 79 .7 {mcutil getsy
8ec0: 73 74 65 6d 6c 6f 63 61 6c 65 7d 20 2d 62 6f 64 stemlocale} -bod
8ed0: 79 20 7b 0a 09 6d 63 75 74 69 6c 20 67 65 74 73 y {..mcutil gets
8ee0: 79 73 74 65 6d 6c 6f 63 61 6c 65 0a 09 73 65 74 ystemlocale..set
8ef0: 20 6f 6b 20 6f 6b 0a 20 20 20 20 7d 20 2d 72 65 ok ok. } -re
8f00: 73 75 6c 74 20 7b 6f 6b 7d 0a 0a 0a 20 20 20 20 sult {ok}...
8f10: 63 6c 65 61 6e 75 70 54 65 73 74 73 0a 7d 0a 6e cleanupTests.}.n
8f20: 61 6d 65 73 70 61 63 65 20 64 65 6c 65 74 65 20 amespace delete
8f30: 3a 3a 6d 73 67 63 61 74 3a 3a 74 65 73 74 0a 72 ::msgcat::test.r
8f40: 65 74 75 72 6e 0a 0a 23 20 4c 6f 63 61 6c 20 56 eturn..# Local V
8f50: 61 72 69 61 62 6c 65 73 3a 0a 23 20 6d 6f 64 65 ariables:.# mode
8f60: 3a 20 74 63 6c 0a 23 20 45 6e 64 3a 0a : tcl.# End:.