Artifact
3e754eb159b720ea82e137046a7722c720d6918ccfe7479fc9aea32bc3075a12 :
File
tests/i18n.test
— part of check-in
[fa94139e03]
at
2018-10-18 23:16:17
on branch trunk
— Simplified the master file of the included test suite, mostly by removing not longer needed cruft. And other minor test suite gardening.
(user:
rolf
size: 2992)
[more...]
0000: 23 20 46 65 61 74 75 72 65 73 20 63 6f 76 65 72 # Features cover
0010: 65 64 3a 20 69 6e 74 65 72 6e 61 74 69 6f 6e 61 ed: internationa
0020: 6c 20 69 73 73 75 65 73 20 0a 23 0a 23 20 43 6f l issues .#.# Co
0030: 70 79 72 69 67 68 74 20 28 63 29 20 32 30 30 32 pyright (c) 2002
0040: 20 52 6f 6c 66 20 41 64 65 2e 0a 23 0a 23 20 52 Rolf Ade..#.# R
0050: 43 53 3a 20 40 28 23 29 20 24 49 64 24 0a 0a 73 CS: @(#) $Id$..s
0060: 6f 75 72 63 65 20 5b 66 69 6c 65 20 6a 6f 69 6e ource [file join
0070: 20 5b 66 69 6c 65 20 64 69 72 20 5b 69 6e 66 6f [file dir [info
0080: 20 73 63 72 69 70 74 5d 5d 20 6c 6f 61 64 74 64 script]] loadtd
0090: 6f 6d 2e 74 63 6c 5d 0a 0a 74 65 73 74 43 6f 6e om.tcl]..testCon
00a0: 73 74 72 61 69 6e 74 20 62 65 79 6f 6e 64 42 4d straint beyondBM
00b0: 50 20 5b 65 78 70 72 20 7b 5b 64 6f 6d 20 66 65 P [expr {[dom fe
00c0: 61 74 75 72 65 69 6e 66 6f 20 54 43 4c 5f 55 54 atureinfo TCL_UT
00d0: 46 5f 4d 41 58 5d 20 3e 20 33 7d 5d 0a 74 65 73 F_MAX] > 3}].tes
00e0: 74 43 6f 6e 73 74 72 61 69 6e 74 20 38 2e 36 20 tConstraint 8.6
00f0: 5b 70 61 63 6b 61 67 65 20 76 73 61 74 69 73 66 [package vsatisf
0100: 69 65 73 20 5b 70 61 63 6b 61 67 65 20 70 72 65 ies [package pre
0110: 73 65 6e 74 20 54 63 6c 5d 20 38 2e 36 5d 0a 0a sent Tcl] 8.6]..
0120: 74 65 73 74 20 69 31 38 6e 2d 31 2e 31 20 7b 70 test i18n-1.1 {p
0130: 61 72 73 65 20 75 74 66 2d 38 20 73 74 72 69 6e arse utf-8 strin
0140: 67 7d 20 7b 0a 20 20 20 20 73 65 74 20 72 75 73 g} {. set rus
0150: 73 69 61 6e 20 22 5c 75 30 34 33 30 5c 75 30 34 sian "\u0430\u04
0160: 33 31 5c 75 30 34 33 32 5c 75 30 34 33 33 5c 75 31\u0432\u0433\u
0170: 30 34 33 34 5c 75 30 34 33 35 5c 75 30 34 33 36 0434\u0435\u0436
0180: 5c 75 30 34 33 37 5c 75 30 34 33 38 5c 75 30 34 \u0437\u0438\u04
0190: 33 39 22 0a 20 20 20 20 73 65 74 20 64 6f 63 20 39". set doc
01a0: 5b 64 6f 6d 20 70 61 72 73 65 20 22 3c 74 65 73 [dom parse "<tes
01b0: 74 3e 24 72 75 73 73 69 61 6e 3c 2f 74 65 73 74 t>$russian</test
01c0: 3e 22 5d 0a 20 20 20 20 73 65 74 20 72 6f 6f 74 >"]. set root
01d0: 20 5b 24 64 6f 63 20 64 6f 63 75 6d 65 6e 74 45 [$doc documentE
01e0: 6c 65 6d 65 6e 74 5d 0a 20 20 20 20 73 65 74 20 lement]. set
01f0: 74 65 78 74 20 5b 24 72 6f 6f 74 20 74 65 78 74 text [$root text
0200: 5d 0a 20 20 20 20 24 64 6f 63 20 64 65 6c 65 74 ]. $doc delet
0210: 65 0a 20 20 20 20 73 74 72 69 6e 67 20 63 6f 6d e. string com
0220: 70 61 72 65 20 24 74 65 78 74 20 22 5c 75 30 34 pare $text "\u04
0230: 33 30 5c 75 30 34 33 31 5c 75 30 34 33 32 5c 75 30\u0431\u0432\u
0240: 30 34 33 33 5c 75 30 34 33 34 5c 75 30 34 33 35 0433\u0434\u0435
0250: 5c 75 30 34 33 36 5c 75 30 34 33 37 5c 75 30 34 \u0436\u0437\u04
0260: 33 38 5c 75 30 34 33 39 22 0a 7d 20 7b 30 7d 0a 38\u0439".} {0}.
0270: 0a 74 65 73 74 20 69 31 38 6e 2d 31 2e 32 20 7b .test i18n-1.2 {
0280: 70 61 72 73 65 20 75 74 66 2d 38 20 63 68 61 6e parse utf-8 chan
0290: 6e 65 6c 7d 20 7b 0a 20 20 20 20 73 65 74 20 66 nel} {. set f
02a0: 64 20 5b 6f 70 65 6e 20 5b 66 69 6c 65 20 6a 6f d [open [file jo
02b0: 69 6e 20 5b 70 77 64 5d 20 5b 66 69 6c 65 20 64 in [pwd] [file d
02c0: 69 72 20 5b 69 6e 66 6f 20 73 63 72 69 70 74 5d ir [info script]
02d0: 5d 20 64 61 74 61 2f 69 31 38 6e 5f 31 2e 78 6d ] data/i18n_1.xm
02e0: 6c 5d 5d 0a 20 20 20 20 66 63 6f 6e 66 69 67 75 l]]. fconfigu
02f0: 72 65 20 24 66 64 20 2d 65 6e 63 6f 64 69 6e 67 re $fd -encoding
0300: 20 75 74 66 2d 38 0a 20 20 20 20 73 65 74 20 64 utf-8. set d
0310: 6f 63 20 5b 64 6f 6d 20 70 61 72 73 65 20 2d 63 oc [dom parse -c
0320: 68 61 6e 6e 65 6c 20 24 66 64 5d 0a 20 20 20 20 hannel $fd].
0330: 63 6c 6f 73 65 20 24 66 64 0a 20 20 20 20 73 65 close $fd. se
0340: 74 20 72 6f 6f 74 20 5b 24 64 6f 63 20 64 6f 63 t root [$doc doc
0350: 75 6d 65 6e 74 45 6c 65 6d 65 6e 74 5d 0a 20 20 umentElement].
0360: 20 20 73 65 74 20 74 65 78 74 20 5b 24 72 6f 6f set text [$roo
0370: 74 20 74 65 78 74 5d 0a 20 20 20 20 24 64 6f 63 t text]. $doc
0380: 20 64 65 6c 65 74 65 0a 20 20 20 20 73 74 72 69 delete. stri
0390: 6e 67 20 63 6f 6d 70 61 72 65 20 24 74 65 78 74 ng compare $text
03a0: 20 22 5c 75 30 34 33 30 5c 75 30 34 33 31 5c 75 "\u0430\u0431\u
03b0: 30 34 33 32 5c 75 30 34 33 33 5c 75 30 34 33 34 0432\u0433\u0434
03c0: 5c 75 30 34 33 35 5c 75 30 34 33 36 5c 75 30 34 \u0435\u0436\u04
03d0: 33 37 5c 75 30 34 33 38 5c 75 30 34 33 39 22 0a 37\u0438\u0439".
03e0: 7d 20 7b 30 7d 0a 20 20 20 20 0a 74 65 73 74 20 } {0}. .test
03f0: 69 31 38 6e 2d 31 2e 33 20 7b 70 61 72 73 65 20 i18n-1.3 {parse
0400: 75 74 66 2d 38 20 72 65 61 64 46 69 6c 65 7d 20 utf-8 readFile}
0410: 7b 0a 20 20 20 20 73 65 74 20 64 6f 63 20 5b 64 {. set doc [d
0420: 6f 6d 20 70 61 72 73 65 20 5b 3a 3a 74 64 6f 6d om parse [::tdom
0430: 3a 3a 78 6d 6c 52 65 61 64 46 69 6c 65 20 5b 66 ::xmlReadFile [f
0440: 69 6c 65 20 6a 6f 69 6e 20 5b 70 77 64 5d 20 5b ile join [pwd] [
0450: 66 69 6c 65 20 64 69 72 20 5b 69 6e 66 6f 20 73 file dir [info s
0460: 63 72 69 70 74 5d 5d 20 64 61 74 61 2f 69 31 38 cript]] data/i18
0470: 6e 5f 31 2e 78 6d 6c 5d 5d 5d 0a 20 20 20 20 73 n_1.xml]]]. s
0480: 65 74 20 72 6f 6f 74 20 5b 24 64 6f 63 20 64 6f et root [$doc do
0490: 63 75 6d 65 6e 74 45 6c 65 6d 65 6e 74 5d 0a 20 cumentElement].
04a0: 20 20 20 73 65 74 20 74 65 78 74 20 5b 24 72 6f set text [$ro
04b0: 6f 74 20 74 65 78 74 5d 0a 20 20 20 20 24 64 6f ot text]. $do
04c0: 63 20 64 65 6c 65 74 65 0a 20 20 20 20 73 74 72 c delete. str
04d0: 69 6e 67 20 63 6f 6d 70 61 72 65 20 24 74 65 78 ing compare $tex
04e0: 74 20 22 5c 75 30 34 33 30 5c 75 30 34 33 31 5c t "\u0430\u0431\
04f0: 75 30 34 33 32 5c 75 30 34 33 33 5c 75 30 34 33 u0432\u0433\u043
0500: 34 5c 75 30 34 33 35 5c 75 30 34 33 36 5c 75 30 4\u0435\u0436\u0
0510: 34 33 37 5c 75 30 34 33 38 5c 75 30 34 33 39 22 437\u0438\u0439"
0520: 0a 7d 20 7b 30 7d 0a 20 20 20 20 0a 74 65 73 74 .} {0}. .test
0530: 20 69 31 38 6e 2d 31 2e 34 20 7b 70 63 64 61 74 i18n-1.4 {pcdat
0540: 61 20 6f 75 74 73 69 64 65 20 42 4d 50 7d 20 2d a outside BMP} -
0550: 62 6f 64 79 20 7b 0a 20 20 20 20 73 65 74 20 64 body {. set d
0560: 6f 63 20 5b 64 6f 6d 20 70 61 72 73 65 20 22 3c oc [dom parse "<
0570: 64 6f 63 3e 26 23 78 31 46 34 36 45 3b 26 23 78 doc>👮&#x
0580: 31 46 34 37 45 3b 26 23 78 31 46 34 39 34 3b 3c 1F47E;💔<
0590: 2f 64 6f 63 3e 22 5d 0a 20 20 20 20 73 65 74 20 /doc>"]. set
05a0: 72 65 73 75 6c 74 20 5b 24 64 6f 63 20 61 73 58 result [$doc asX
05b0: 4d 4c 20 2d 69 6e 64 65 6e 74 20 6e 6f 6e 65 20 ML -indent none
05c0: 2d 65 73 63 61 70 65 4e 6f 6e 41 53 43 49 49 5d -escapeNonASCII]
05d0: 0a 20 20 20 20 24 64 6f 63 20 64 65 6c 65 74 65 . $doc delete
05e0: 0a 20 20 20 20 73 65 74 20 72 65 73 75 6c 74 0a . set result.
05f0: 7d 20 2d 72 65 73 75 6c 74 20 22 3c 64 6f 63 3e } -result "<doc>
0600: 26 23 31 32 38 31 31 30 3b 26 23 31 32 38 31 32 👮㈌
0610: 36 3b 26 23 31 32 38 31 34 38 3b 3c 2f 64 6f 63 6;💔</doc
0620: 3e 22 0a 0a 74 65 73 74 20 69 31 38 6e 2d 31 2e >"..test i18n-1.
0630: 35 20 7b 70 63 64 61 74 61 20 6f 75 74 73 69 64 5 {pcdata outsid
0640: 65 20 42 4d 50 7d 20 2d 62 6f 64 79 20 7b 0a 20 e BMP} -body {.
0650: 20 20 20 73 65 74 20 64 6f 63 20 5b 64 6f 6d 20 set doc [dom
0660: 70 61 72 73 65 20 22 3c 64 6f 63 3e 26 23 78 31 parse "<doc>
0670: 46 34 36 45 3b 26 23 78 31 46 34 37 45 3b 26 23 F46E;👾&#
0680: 78 31 46 34 39 34 3b 3c 2f 64 6f 63 3e 22 5d 0a x1F494;</doc>"].
0690: 20 20 20 20 73 65 74 20 72 65 73 75 6c 74 20 5b set result [
06a0: 24 64 6f 63 20 73 65 6c 65 63 74 4e 6f 64 65 73 $doc selectNodes
06b0: 20 73 74 72 69 6e 67 2d 6c 65 6e 67 74 68 28 2f string-length(/
06c0: 64 6f 63 29 5d 0a 20 20 20 20 24 64 6f 63 20 64 doc)]. $doc d
06d0: 65 6c 65 74 65 0a 20 20 20 20 73 65 74 20 72 65 elete. set re
06e0: 73 75 6c 74 0a 7d 20 2d 72 65 73 75 6c 74 20 33 sult.} -result 3
06f0: 0a 0a 74 65 73 74 20 69 31 38 6e 2d 31 2e 36 20 ..test i18n-1.6
0700: 7b 70 63 64 61 74 61 20 6f 75 74 73 69 64 65 20 {pcdata outside
0710: 42 4d 50 7d 20 2d 63 6f 6e 73 74 72 61 69 6e 74 BMP} -constraint
0720: 73 20 7b 0a 20 20 20 20 38 2e 36 0a 20 20 20 20 s {. 8.6.
0730: 62 65 79 6f 6e 64 42 4d 50 0a 7d 20 2d 62 6f 64 beyondBMP.} -bod
0740: 79 20 7b 0a 20 20 20 20 73 65 74 20 64 6f 63 20 y {. set doc
0750: 5b 64 6f 6d 20 70 61 72 73 65 20 22 3c 64 6f 63 [dom parse "<doc
0760: 3e 5c 55 31 46 34 36 45 5c 55 31 46 34 37 45 5c >\U1F46E\U1F47E\
0770: 55 31 46 34 39 34 3c 2f 64 6f 63 3e 22 5d 0a 20 U1F494</doc>"].
0780: 20 20 20 73 65 74 20 72 65 73 75 6c 74 20 5b 24 set result [$
0790: 64 6f 63 20 61 73 58 4d 4c 20 2d 69 6e 64 65 6e doc asXML -inden
07a0: 74 20 6e 6f 6e 65 20 2d 65 73 63 61 70 65 4e 6f t none -escapeNo
07b0: 6e 41 53 43 49 49 5d 0a 20 20 20 20 24 64 6f 63 nASCII]. $doc
07c0: 20 64 65 6c 65 74 65 0a 20 20 20 20 73 65 74 20 delete. set
07d0: 72 65 73 75 6c 74 0a 7d 20 2d 72 65 73 75 6c 74 result.} -result
07e0: 20 22 3c 64 6f 63 3e 26 23 31 32 38 31 31 30 3b "<doc>👮
07f0: 26 23 31 32 38 31 32 36 3b 26 23 31 32 38 31 34 👾㈎
0800: 38 3b 3c 2f 64 6f 63 3e 22 0a 0a 74 65 73 74 20 8;</doc>"..test
0810: 69 31 38 6e 2d 31 2e 37 20 7b 70 63 64 61 74 61 i18n-1.7 {pcdata
0820: 20 6f 75 74 73 69 64 65 20 42 4d 50 7d 20 2d 62 outside BMP} -b
0830: 6f 64 79 20 7b 0a 20 20 20 20 73 65 74 20 64 6f ody {. set do
0840: 63 20 5b 64 6f 6d 20 70 61 72 73 65 20 22 3c 64 c [dom parse "<d
0850: 6f 63 3e 26 23 78 31 46 34 36 45 3b 26 23 78 31 oc>👮
0860: 46 34 37 45 3b 26 23 78 31 46 34 39 34 3b 3c 2f F47E;💔</
0870: 64 6f 63 3e 22 5d 0a 20 20 20 20 73 65 74 20 72 doc>"]. set r
0880: 65 73 75 6c 74 20 5b 64 6f 6d 20 69 73 42 4d 50 esult [dom isBMP
0890: 43 68 61 72 44 61 74 61 20 5b 24 64 6f 63 20 73 CharData [$doc s
08a0: 65 6c 65 63 74 4e 6f 64 65 73 20 73 74 72 69 6e electNodes strin
08b0: 67 28 2f 64 6f 63 29 5d 5d 0a 20 20 20 20 24 64 g(/doc)]]. $d
08c0: 6f 63 20 64 65 6c 65 74 65 0a 20 20 20 20 73 65 oc delete. se
08d0: 74 20 72 65 73 75 6c 74 0a 7d 20 2d 72 65 73 75 t result.} -resu
08e0: 6c 74 20 30 0a 0a 74 65 73 74 20 69 31 38 6e 2d lt 0..test i18n-
08f0: 31 2e 38 20 7b 70 63 64 61 74 61 20 6f 75 74 73 1.8 {pcdata outs
0900: 69 64 65 20 42 4d 50 7d 20 2d 63 6f 6e 73 74 72 ide BMP} -constr
0910: 61 69 6e 74 73 20 7b 0a 20 20 20 20 62 65 79 6f aints {. beyo
0920: 6e 64 42 4d 50 0a 20 20 20 20 38 2e 36 0a 7d 20 ndBMP. 8.6.}
0930: 2d 62 6f 64 79 20 7b 0a 20 20 20 20 73 65 74 20 -body {. set
0940: 64 6f 63 20 5b 64 6f 6d 20 70 61 72 73 65 20 22 doc [dom parse "
0950: 3c 64 6f 63 3e 5c 55 31 46 34 36 45 5c 55 31 46 <doc>\U1F46E\U1F
0960: 34 37 45 5c 55 31 46 34 39 34 3c 2f 64 6f 63 3e 47E\U1F494</doc>
0970: 22 5d 0a 20 20 20 20 73 65 74 20 72 65 73 75 6c "]. set resul
0980: 74 20 5b 24 64 6f 63 20 61 73 58 4d 4c 20 2d 69 t [$doc asXML -i
0990: 6e 64 65 6e 74 20 6e 6f 6e 65 5d 0a 20 20 20 20 ndent none].
09a0: 24 64 6f 63 20 64 65 6c 65 74 65 0a 20 20 20 20 $doc delete.
09b0: 73 65 74 20 72 65 73 75 6c 74 0a 7d 20 2d 72 65 set result.} -re
09c0: 73 75 6c 74 20 22 3c 64 6f 63 3e 26 23 31 32 38 sult "<doc>€
09d0: 31 31 30 3b 26 23 31 32 38 31 32 36 3b 26 23 31 110;👾
09e0: 32 38 31 34 38 3b 3c 2f 64 6f 63 3e 22 0a 0a 74 28148;</doc>"..t
09f0: 65 73 74 20 69 31 38 6e 2d 31 2e 31 30 20 7b 70 est i18n-1.10 {p
0a00: 63 64 61 74 61 20 6f 75 74 73 69 64 65 20 75 6e cdata outside un
0a10: 69 63 6f 64 65 7d 20 2d 62 6f 64 79 20 7b 0a 20 icode} -body {.
0a20: 20 20 20 73 65 74 20 64 6f 63 20 5b 64 6f 6d 20 set doc [dom
0a30: 70 61 72 73 65 20 22 3c 64 6f 63 3e 26 23 78 31 parse "<doc>
0a40: 30 46 46 46 46 3b 3c 2f 64 6f 63 3e 22 5d 0a 20 0FFFF;</doc>"].
0a50: 20 20 20 73 65 74 20 72 65 73 75 6c 74 20 5b 24 set result [$
0a60: 64 6f 63 20 61 73 58 4d 4c 20 2d 69 6e 64 65 6e doc asXML -inden
0a70: 74 20 6e 6f 6e 65 20 2d 65 73 63 61 70 65 4e 6f t none -escapeNo
0a80: 6e 41 53 43 49 49 5d 0a 20 20 20 20 24 64 6f 63 nASCII]. $doc
0a90: 20 64 65 6c 65 74 65 0a 20 20 20 20 73 65 74 20 delete. set
0aa0: 72 65 73 75 6c 74 0a 7d 20 2d 72 65 73 75 6c 74 result.} -result
0ab0: 20 22 3c 64 6f 63 3e 26 23 31 31 31 34 31 31 31 "<doc>
0ac0: 3b 3c 2f 64 6f 63 3e 22 0a 0a 74 65 73 74 20 69 ;</doc>"..test i
0ad0: 31 38 6e 2d 31 2e 31 31 20 7b 70 63 64 61 74 61 18n-1.11 {pcdata
0ae0: 20 6f 75 74 73 69 64 65 20 75 6e 69 63 6f 64 65 outside unicode
0af0: 7d 20 2d 62 6f 64 79 20 7b 0a 20 20 20 20 73 65 } -body {. se
0b00: 74 20 72 65 73 75 6c 74 20 5b 63 61 74 63 68 20 t result [catch
0b10: 7b 64 6f 6d 20 70 61 72 73 65 20 22 3c 64 6f 63 {dom parse "<doc
0b20: 3e 26 23 78 31 31 30 30 30 30 3b 3c 2f 64 6f 63 >�</doc
0b30: 3e 22 7d 20 6d 73 67 5d 0a 20 20 20 20 73 65 74 >"} msg]. set
0b40: 20 6d 73 67 0a 7d 20 2d 6d 61 74 63 68 20 67 6c msg.} -match gl
0b50: 6f 62 20 2d 72 65 73 75 6c 74 20 22 2a 72 65 66 ob -result "*ref
0b60: 65 72 65 6e 63 65 20 74 6f 20 69 6e 76 61 6c 69 erence to invali
0b70: 64 20 63 68 61 72 61 63 74 65 72 20 6e 75 6d 62 d character numb
0b80: 65 72 2a 22 0a 0a 23 20 63 6c 65 61 6e 75 70 0a er*"..# cleanup.
0b90: 3a 3a 74 63 6c 74 65 73 74 3a 3a 63 6c 65 61 6e ::tcltest::clean
0ba0: 75 70 54 65 73 74 73 0a 72 65 74 75 72 6e 0a 0a upTests.return..