Jim Tcl
Hex Artifact Content
Not logged in

Artifact 3923f8c24f17920475fe58ef6e328f21324fcbd9:


0000: 73 6f 75 72 63 65 20 5b 66 69 6c 65 20 64 69 72  source [file dir
0010: 6e 61 6d 65 20 5b 69 6e 66 6f 20 73 63 72 69 70  name [info scrip
0020: 74 5d 5d 2f 74 65 73 74 69 6e 67 2e 74 63 6c 0a  t]]/testing.tcl.
0030: 0a 6e 65 65 64 73 20 63 6f 6e 73 74 72 61 69 6e  .needs constrain
0040: 74 20 75 74 66 38 0a 0a 74 65 73 74 20 75 74 66  t utf8..test utf
0050: 38 2d 31 2e 31 20 22 50 61 74 74 65 72 6e 20 6d  8-1.1 "Pattern m
0060: 61 74 63 68 69 6e 67 20 2d 20 3f 22 20 7b 0a 09  atching - ?" {..
0070: 73 74 72 69 6e 67 20 6d 61 74 63 68 20 22 61 62  string match "ab
0080: 63 3f 64 65 66 22 20 22 61 62 63 5c 75 30 30 62  c?def" "abc\u00b
0090: 35 64 65 66 22 0a 7d 20 31 0a 0a 74 65 73 74 20  5def".} 1..test 
00a0: 75 74 66 38 2d 31 2e 32 20 22 50 61 74 74 65 72  utf8-1.2 "Patter
00b0: 6e 20 6d 61 74 63 68 69 6e 67 20 2d 20 3f 22 20  n matching - ?" 
00c0: 7b 0a 09 73 74 72 69 6e 67 20 6d 61 74 63 68 20  {..string match 
00d0: 22 61 62 63 3f 64 65 66 22 20 22 61 62 63 5c 75  "abc?def" "abc\u
00e0: 32 37 30 34 64 65 66 22 0a 7d 20 31 0a 0a 74 65  2704def".} 1..te
00f0: 73 74 20 75 74 66 38 2d 31 2e 33 20 22 50 61 74  st utf8-1.3 "Pat
0100: 74 65 72 6e 20 75 74 66 2d 38 20 6c 69 74 65 72  tern utf-8 liter
0110: 61 6c 22 20 7b 0a 09 73 74 72 69 6e 67 20 6d 61  al" {..string ma
0120: 74 63 68 20 22 61 62 5c 75 30 30 62 35 5c 75 32  tch "ab\u00b5\u2
0130: 37 30 34 3f 22 20 22 61 62 5c 75 30 30 62 35 5c  704?" "ab\u00b5\
0140: 75 32 37 30 34 78 22 20 0a 7d 20 31 0a 0a 74 65  u2704x" .} 1..te
0150: 73 74 20 75 74 66 38 2d 31 2e 34 20 22 50 61 74  st utf8-1.4 "Pat
0160: 74 65 72 6e 20 75 74 66 2d 38 20 63 68 61 72 20  tern utf-8 char 
0170: 73 65 74 73 22 20 7b 0a 09 73 74 72 69 6e 67 20  sets" {..string 
0180: 6d 61 74 63 68 20 22 61 5c 5b 62 5c 75 30 30 62  match "a\[b\u00b
0190: 35 5c 5d 5c 75 32 37 30 34 3f 22 20 22 61 5c 75  5\]\u2704?" "a\u
01a0: 30 30 62 35 5c 75 32 37 30 34 78 22 20 0a 7d 20  00b5\u2704x" .} 
01b0: 31 0a 0a 74 65 73 74 20 75 74 66 38 2d 31 2e 35  1..test utf8-1.5
01c0: 20 22 50 61 74 74 65 72 6e 20 75 74 66 2d 38 20   "Pattern utf-8 
01d0: 63 68 61 72 20 73 65 74 73 22 20 7b 0a 09 73 74  char sets" {..st
01e0: 72 69 6e 67 20 6d 61 74 63 68 20 22 61 5c 5b 62  ring match "a\[b
01f0: 5c 75 30 30 62 35 5c 5d 5c 75 32 37 30 34 3f 22  \u00b5\]\u2704?"
0200: 20 22 61 5c 75 30 30 62 36 5c 75 32 37 30 34 78   "a\u00b6\u2704x
0210: 22 20 0a 7d 20 30 0a 74 65 73 74 20 75 74 66 38  " .} 0.test utf8
0220: 2d 31 2e 36 20 22 50 61 74 74 65 72 6e 20 75 74  -1.6 "Pattern ut
0230: 66 2d 38 20 63 68 61 72 20 73 65 74 73 22 20 7b  f-8 char sets" {
0240: 0a 09 73 74 72 69 6e 67 20 6d 61 74 63 68 20 22  ..string match "
0250: 61 5c 5b 62 5c 75 30 30 62 35 5c 5d 5c 75 32 37  a\[b\u00b5\]\u27
0260: 30 34 3f 22 20 22 61 62 5c 75 32 37 30 34 78 22  04?" "ab\u2704x"
0270: 20 0a 7d 20 31 0a 74 65 73 74 20 75 74 66 38 2d   .} 1.test utf8-
0280: 31 2e 37 20 22 50 61 74 74 65 72 6e 20 75 74 66  1.7 "Pattern utf
0290: 2d 38 20 63 68 61 72 20 73 65 74 73 22 20 7b 0a  -8 char sets" {.
02a0: 09 73 74 72 69 6e 67 20 6d 61 74 63 68 20 22 61  .string match "a
02b0: 5c 5b 62 5c 75 30 30 62 35 5c 5d 3f 22 20 22 61  \[b\u00b5\]?" "a
02c0: 5c 75 32 37 30 34 78 22 0a 7d 20 30 0a 74 65 73  \u2704x".} 0.tes
02d0: 74 20 75 74 66 38 2d 31 2e 38 20 22 50 61 74 74  t utf8-1.8 "Patt
02e0: 65 72 6e 20 75 74 66 2d 38 20 63 68 61 72 20 73  ern utf-8 char s
02f0: 65 74 73 22 20 7b 0a 09 73 74 72 69 6e 67 20 6d  ets" {..string m
0300: 61 74 63 68 20 22 61 5c 5b 5c 75 30 30 62 35 2d  atch "a\[\u00b5-
0310: 5c 75 30 30 63 33 5c 5d 22 20 22 61 5c 75 62 64  \u00c3\]" "a\ubd
0320: 22 0a 7d 20 31 0a 74 65 73 74 20 75 74 66 38 2d  ".} 1.test utf8-
0330: 31 2e 39 20 22 50 61 74 74 65 72 6e 20 75 74 66  1.9 "Pattern utf
0340: 2d 38 20 63 68 61 72 20 73 65 74 73 22 20 7b 0a  -8 char sets" {.
0350: 09 73 74 72 69 6e 67 20 6d 61 74 63 68 20 22 61  .string match "a
0360: 5c 5b 5c 75 30 30 62 35 2d 5c 75 30 30 63 33 5c  \[\u00b5-\u00c3\
0370: 5d 22 20 22 61 5c 75 63 34 22 0a 7d 20 30 0a 0a  ]" "a\uc4".} 0..
0380: 74 65 73 74 20 75 74 66 38 2d 32 2e 31 20 22 50  test utf8-2.1 "P
0390: 61 74 74 65 72 6e 20 75 74 66 2d 38 20 6e 6f 63  attern utf-8 noc
03a0: 61 73 65 22 20 7b 0a 09 73 74 72 69 6e 67 20 6d  ase" {..string m
03b0: 61 74 63 68 20 2d 6e 6f 63 61 73 65 20 22 61 5c  atch -nocase "a\
03c0: 75 31 65 64 63 5c 75 31 65 66 34 2a 22 20 22 41  u1edc\u1ef4*" "A
03d0: 5c 75 31 65 64 64 5c 75 31 65 66 35 58 58 22 0a  \u1edd\u1ef5XX".
03e0: 7d 20 31 0a 0a 74 65 73 74 20 75 74 66 38 2d 32  } 1..test utf8-2
03f0: 2e 32 20 22 50 61 74 74 65 72 6e 20 75 74 66 2d  .2 "Pattern utf-
0400: 38 20 63 61 73 65 20 64 69 66 66 65 72 65 6e 63  8 case differenc
0410: 65 22 20 7b 0a 09 73 74 72 69 6e 67 20 6d 61 74  e" {..string mat
0420: 63 68 20 22 61 5c 75 31 65 64 63 5c 75 31 65 66  ch "a\u1edc\u1ef
0430: 34 2a 22 20 22 41 5c 75 31 65 64 64 5c 75 31 65  4*" "A\u1edd\u1e
0440: 66 35 58 58 22 0a 7d 20 30 0a 0a 74 65 73 74 20  f5XX".} 0..test 
0450: 75 74 66 38 2d 33 2e 31 20 22 6c 73 65 61 72 63  utf8-3.1 "lsearc
0460: 68 20 2d 67 6c 6f 62 22 20 7b 0a 09 6c 73 65 61  h -glob" {..lsea
0470: 72 63 68 20 2d 67 6c 6f 62 20 7b 31 20 64 20 61  rch -glob {1 d a
0480: 5c 75 30 30 62 35 78 79 62 20 63 7d 20 61 5c 75  \u00b5xyb c} a\u
0490: 62 35 2a 62 0a 7d 20 32 0a 0a 74 65 73 74 20 75  b5*b.} 2..test u
04a0: 74 66 38 2d 33 2e 32 20 22 73 77 69 74 63 68 20  tf8-3.2 "switch 
04b0: 2d 67 6c 6f 62 22 20 7b 0a 09 73 77 69 74 63 68  -glob" {..switch
04c0: 20 2d 67 6c 6f 62 20 2d 2d 20 61 5c 75 62 35 78   -glob -- a\ub5x
04d0: 79 62 20 61 5c 75 62 35 2a 62 20 7b 20 73 65 74  yb a\ub5*b { set
04e0: 20 78 20 31 20 7d 20 64 65 66 61 75 6c 74 20 7b   x 1 } default {
04f0: 20 73 65 74 20 78 20 30 20 7d 0a 09 73 65 74 20   set x 0 }..set 
0500: 78 0a 7d 20 31 0a 0a 73 65 74 20 78 20 22 5c 75  x.} 1..set x "\u
0510: 62 35 74 65 73 74 22 0a 74 65 73 74 20 75 74 66  b5test".test utf
0520: 38 2d 33 2e 33 20 22 69 6e 66 6f 20 70 72 6f 63  8-3.3 "info proc
0530: 73 22 20 7b 0a 09 70 72 6f 63 20 24 78 20 7b 7d  s" {..proc $x {}
0540: 20 7b 20 69 6e 66 6f 20 70 72 6f 63 73 20 5c 5b   { info procs \[
0550: 5c 75 62 35 58 5d 3f 3f 3f 3f 20 7d 0a 09 24 78  \ub5X]???? }..$x
0560: 0a 7d 20 24 78 0a 0a 74 65 73 74 20 75 74 66 38  .} $x..test utf8
0570: 2d 33 2e 33 20 22 69 6e 66 6f 20 63 6f 6d 6d 61  -3.3 "info comma
0580: 6e 64 73 22 20 7b 0a 09 69 6e 66 6f 20 63 6f 6d  nds" {..info com
0590: 6d 61 6e 64 73 20 5c 5b 5c 75 62 35 58 5d 3f 3f  mands \[\ub5X]??
05a0: 3f 3f 0a 7d 20 24 78 0a 0a 74 65 73 74 20 75 74  ??.} $x..test ut
05b0: 66 38 2d 33 2e 34 20 22 70 72 6f 63 20 6e 61 6d  f8-3.4 "proc nam
05c0: 65 20 77 69 74 68 20 69 6e 76 61 6c 69 64 20 75  e with invalid u
05d0: 74 66 2d 38 22 20 7b 0a 09 63 61 74 63 68 20 7b  tf-8" {..catch {
05e0: 20 70 72 6f 63 20 61 62 5c 78 63 32 20 7b 7d 20   proc ab\xc2 {} 
05f0: 7b 7d 20 7d 20 6d 73 67 0a 7d 20 30 0a 0a 74 65  {} } msg.} 0..te
0600: 73 74 20 75 74 66 38 2d 33 2e 35 20 22 72 65 6e  st utf8-3.5 "ren
0610: 61 6d 65 20 74 6f 20 69 6e 76 61 6c 69 64 20 6e  ame to invalid n
0620: 61 6d 65 22 20 7b 0a 09 63 61 74 63 68 20 7b 20  ame" {..catch { 
0630: 72 65 6e 61 6d 65 20 61 62 5c 78 63 32 20 61 62  rename ab\xc2 ab
0640: 5c 78 63 33 20 7d 20 6d 73 67 0a 7d 20 30 0a 0a  \xc3 } msg.} 0..
0650: 63 61 74 63 68 20 7b 72 65 6e 61 6d 65 20 61 62  catch {rename ab
0660: 5c 78 63 33 20 22 22 7d 0a 0a 74 65 73 74 20 75  \xc3 ""}..test u
0670: 74 66 38 2d 34 2e 31 20 22 73 70 6c 69 74 20 77  tf8-4.1 "split w
0680: 69 74 68 20 75 74 66 2d 38 22 20 7b 0a 09 73 70  ith utf-8" {..sp
0690: 6c 69 74 20 22 7a 79 5c 75 32 37 30 32 78 77 22  lit "zy\u2702xw"
06a0: 20 78 0a 7d 20 22 7a 79 5c 75 32 37 30 32 20 77   x.} "zy\u2702 w
06b0: 22 0a 0a 74 65 73 74 20 75 74 66 38 2d 34 2e 32  "..test utf8-4.2
06c0: 20 22 73 70 6c 69 74 20 77 69 74 68 20 75 74 66   "split with utf
06d0: 2d 38 22 20 7b 0a 09 73 70 6c 69 74 20 22 7a 79  -8" {..split "zy
06e0: 5c 75 32 37 30 32 78 77 22 20 5c 75 32 37 30 32  \u2702xw" \u2702
06f0: 0a 7d 20 22 7a 79 20 78 77 22 0a 0a 74 65 73 74  .} "zy xw"..test
0700: 20 75 74 66 38 2d 34 2e 32 20 22 73 70 6c 69 74   utf8-4.2 "split
0710: 20 77 69 74 68 20 75 74 66 2d 38 22 20 7b 0a 09   with utf-8" {..
0720: 73 70 6c 69 74 20 22 7a 79 5c 75 32 37 30 32 78  split "zy\u2702x
0730: 77 22 20 7b 7d 0a 7d 20 22 7a 20 79 20 5c 75 32  w" {}.} "z y \u2
0740: 37 30 32 20 78 20 77 22 0a 0a 74 65 73 74 20 75  702 x w"..test u
0750: 74 66 38 2d 35 2e 31 20 22 73 74 72 69 6e 67 20  tf8-5.1 "string 
0760: 66 69 72 73 74 20 77 69 74 68 20 75 74 66 2d 38  first with utf-8
0770: 22 20 7b 0a 09 73 74 72 69 6e 67 20 66 69 72 73  " {..string firs
0780: 74 20 77 20 22 7a 79 5c 75 32 37 30 32 78 77 22  t w "zy\u2702xw"
0790: 0a 7d 20 34 0a 0a 74 65 73 74 20 75 74 66 38 2d  .} 4..test utf8-
07a0: 35 2e 32 20 22 73 74 72 69 6e 67 20 66 69 72 73  5.2 "string firs
07b0: 74 20 77 69 74 68 20 75 74 66 2d 38 22 20 7b 0a  t with utf-8" {.
07c0: 09 73 74 72 69 6e 67 20 66 69 72 73 74 20 5c 75  .string first \u
07d0: 32 37 30 32 20 22 5c 75 62 35 7a 79 5c 75 32 37  2702 "\ub5zy\u27
07e0: 30 32 78 77 22 0a 7d 20 33 0a 0a 74 65 73 74 20  02xw".} 3..test 
07f0: 75 74 66 38 2d 35 2e 33 20 22 73 74 72 69 6e 67  utf8-5.3 "string
0800: 20 66 69 72 73 74 20 77 69 74 68 20 75 74 66 2d   first with utf-
0810: 38 22 20 7b 0a 09 73 74 72 69 6e 67 20 66 69 72  8" {..string fir
0820: 73 74 20 5c 75 32 37 30 34 20 22 5c 75 62 35 7a  st \u2704 "\ub5z
0830: 79 5c 75 32 37 30 32 78 77 22 0a 7d 20 2d 31 0a  y\u2702xw".} -1.
0840: 0a 74 65 73 74 20 75 74 66 38 2d 35 2e 34 20 22  .test utf8-5.4 "
0850: 73 74 72 69 6e 67 20 66 69 72 73 74 20 77 69 74  string first wit
0860: 68 20 75 74 66 2d 38 22 20 7b 0a 09 73 74 72 69  h utf-8" {..stri
0870: 6e 67 20 66 69 72 73 74 20 5c 75 32 37 30 32 20  ng first \u2702 
0880: 22 5c 75 62 35 7a 79 5c 75 32 37 30 32 78 77 5c  "\ub5zy\u2702xw\
0890: 75 32 37 30 32 42 42 22 0a 7d 20 33 0a 0a 74 65  u2702BB".} 3..te
08a0: 73 74 20 75 74 66 38 2d 36 2e 31 20 22 73 74 72  st utf8-6.1 "str
08b0: 69 6e 67 20 6c 61 73 74 20 77 69 74 68 20 75 74  ing last with ut
08c0: 66 2d 38 22 20 7b 0a 09 73 74 72 69 6e 67 20 6c  f-8" {..string l
08d0: 61 73 74 20 77 20 22 7a 79 5c 75 32 37 30 32 78  ast w "zy\u2702x
08e0: 77 22 0a 7d 20 34 0a 0a 74 65 73 74 20 75 74 66  w".} 4..test utf
08f0: 38 2d 36 2e 32 20 22 73 74 72 69 6e 67 20 6c 61  8-6.2 "string la
0900: 73 74 20 77 69 74 68 20 75 74 66 2d 38 22 20 7b  st with utf-8" {
0910: 0a 09 73 74 72 69 6e 67 20 6c 61 73 74 20 5c 75  ..string last \u
0920: 32 37 30 32 20 22 5c 75 62 35 7a 79 5c 75 32 37  2702 "\ub5zy\u27
0930: 30 32 78 77 22 0a 7d 20 33 0a 0a 74 65 73 74 20  02xw".} 3..test 
0940: 75 74 66 38 2d 36 2e 33 20 22 73 74 72 69 6e 67  utf8-6.3 "string
0950: 20 6c 61 73 74 20 77 69 74 68 20 75 74 66 2d 38   last with utf-8
0960: 22 20 7b 0a 09 73 74 72 69 6e 67 20 6c 61 73 74  " {..string last
0970: 20 5c 75 32 37 30 34 20 22 5c 75 62 35 7a 79 5c   \u2704 "\ub5zy\
0980: 75 32 37 30 32 78 77 22 0a 7d 20 2d 31 0a 0a 74  u2702xw".} -1..t
0990: 65 73 74 20 75 74 66 38 2d 36 2e 34 20 22 73 74  est utf8-6.4 "st
09a0: 72 69 6e 67 20 6c 61 73 74 20 77 69 74 68 20 75  ring last with u
09b0: 74 66 2d 38 22 20 7b 0a 09 73 74 72 69 6e 67 20  tf-8" {..string 
09c0: 6c 61 73 74 20 5c 75 32 37 30 32 20 22 5c 75 62  last \u2702 "\ub
09d0: 35 7a 79 5c 75 32 37 30 32 78 77 5c 75 32 37 30  5zy\u2702xw\u270
09e0: 32 42 42 22 0a 7d 20 36 0a 0a 74 65 73 74 20 75  2BB".} 6..test u
09f0: 74 66 38 2d 37 2e 31 20 22 73 74 72 69 6e 67 20  tf8-7.1 "string 
0a00: 72 65 76 65 72 73 65 22 20 7b 0a 09 73 74 72 69  reverse" {..stri
0a10: 6e 67 20 72 65 76 65 72 73 65 20 5c 75 62 35 54  ng reverse \ub5T
0a20: 65 73 74 5c 75 32 37 30 32 0a 7d 20 5c 75 32 37  est\u2702.} \u27
0a30: 30 32 74 73 65 54 5c 75 62 35 0a 0a 74 65 73 74  02tseT\ub5..test
0a40: 20 75 74 66 38 2d 37 2e 32 20 7b 61 70 70 65 6e   utf8-7.2 {appen
0a50: 64 20 63 6f 75 6e 74 73 20 63 6f 72 72 65 63 74  d counts correct
0a60: 6c 79 7d 20 7b 0a 09 73 65 74 20 78 20 5c 75 32  ly} {..set x \u2
0a70: 37 30 32 58 59 5a 0a 09 61 70 70 65 6e 64 20 78  702XYZ..append x
0a80: 20 5c 75 32 37 30 32 58 59 5a 0a 09 6c 69 73 74   \u2702XYZ..list
0a90: 20 5b 73 74 72 69 6e 67 20 6c 65 6e 67 74 68 20   [string length 
0aa0: 24 78 5d 20 5b 73 74 72 69 6e 67 20 62 79 74 65  $x] [string byte
0ab0: 6c 65 6e 67 74 68 20 24 78 5d 0a 7d 20 7b 38 20  length $x].} {8 
0ac0: 31 32 7d 0a 0a 74 65 73 74 20 75 74 66 38 2d 37  12}..test utf8-7
0ad0: 2e 33 20 7b 55 70 70 65 72 2c 20 6c 6f 77 65 72  .3 {Upper, lower
0ae0: 20 66 6f 72 20 74 69 74 6c 65 63 61 73 65 20 75   for titlecase u
0af0: 74 66 2d 38 7d 20 7b 0a 09 6c 69 73 74 20 5b 73  tf-8} {..list [s
0b00: 74 72 69 6e 67 20 74 6f 75 70 70 65 72 20 5c 75  tring toupper \u
0b10: 30 31 63 35 5d 20 5b 73 74 72 69 6e 67 20 74 6f  01c5] [string to
0b20: 6c 6f 77 65 72 20 5c 75 30 31 63 35 5d 0a 7d 20  lower \u01c5].} 
0b30: 22 5c 75 30 31 63 34 20 5c 75 30 31 63 36 22 0a  "\u01c4 \u01c6".
0b40: 0a 74 65 73 74 72 65 70 6f 72 74 0a              .testreport.