Hex Artifact Content
Not logged in

Artifact c9ba7bf4c4e0fba5a3505ac31c5d89ff19b4a7dc:


0000: 6c 61 70 70 65 6e 64 20 61 75 74 6f 5f 70 61 74  lappend auto_pat
0010: 68 20 2e 0a 0a 70 61 63 6b 61 67 65 20 72 65 71  h ...package req
0020: 75 69 72 65 20 74 63 6c 74 65 73 74 0a 70 61 63  uire tcltest.pac
0030: 6b 61 67 65 20 72 65 71 75 69 72 65 20 6d 73 67  kage require msg
0040: 70 61 63 6b 0a 0a 3a 3a 74 63 6c 74 65 73 74 3a  pack..::tcltest:
0050: 3a 63 6f 6e 66 69 67 75 72 65 20 7b 2a 7d 24 61  :configure {*}$a
0060: 72 67 76 0a 0a 0a 74 72 79 20 7b 0a 20 20 20 20  rgv...try {.    
0070: 70 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 20  package require 
0080: 79 61 6d 6c 0a 20 20 20 20 73 65 74 20 6d 74 73  yaml.    set mts
0090: 50 61 74 68 20 5b 66 69 6c 65 20 6a 6f 69 6e 20  Path [file join 
00a0: 5b 66 69 6c 65 20 64 69 72 6e 61 6d 65 20 5b 69  [file dirname [i
00b0: 6e 66 6f 20 73 63 72 69 70 74 5d 5d 20 5c 0a 20  nfo script]] \. 
00c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
00d0: 20 20 20 20 20 20 20 20 20 20 76 65 6e 64 6f 72            vendor
00e0: 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   \.             
00f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 73                ms
0100: 67 70 61 63 6b 2d 74 65 73 74 2d 73 75 69 74 65  gpack-test-suite
0110: 5d 0a 7d 20 6f 6e 20 6f 6b 20 5f 20 7b 0a 20 20  ].} on ok _ {.  
0120: 20 20 74 63 6c 74 65 73 74 3a 3a 74 65 73 74 43    tcltest::testC
0130: 6f 6e 73 74 72 61 69 6e 74 20 79 61 6d 6c 20 74  onstraint yaml t
0140: 72 75 65 0a 7d 0a 0a 0a 70 72 6f 63 20 66 6c 61  rue.}...proc fla
0150: 74 6d 61 70 20 61 72 67 73 20 7b 0a 20 20 20 20  tmap args {.    
0160: 63 6f 6e 63 61 74 20 7b 2a 7d 5b 75 70 6c 65 76  concat {*}[uplev
0170: 65 6c 20 31 20 6c 6d 61 70 20 24 61 72 67 73 5d  el 1 lmap $args]
0180: 0a 7d 0a 0a 70 72 6f 63 20 74 65 73 74 5f 6d 61  .}..proc test_ma
0190: 70 20 6e 20 7b 0a 20 20 20 20 23 20 47 65 74 20  p n {.    # Get 
01a0: 6b 65 79 73 20 61 6e 64 20 76 61 6c 75 65 73 0a  keys and values.
01b0: 20 20 20 20 73 65 74 20 6c 20 7b 7d 0a 0a 20 20      set l {}..  
01c0: 20 20 66 6f 72 20 7b 73 65 74 20 69 20 30 7d 20    for {set i 0} 
01d0: 7b 24 69 20 3c 20 24 6e 7d 20 7b 69 6e 63 72 20  {$i < $n} {incr 
01e0: 69 7d 20 7b 0a 20 20 20 20 20 20 20 20 73 65 74  i} {.        set
01f0: 20 6d 20 30 0a 20 20 20 20 20 20 20 20 66 6f 72   m 0.        for
0200: 20 7b 73 65 74 20 6a 20 30 7d 20 7b 24 6a 20 3c   {set j 0} {$j <
0210: 20 32 35 36 7d 20 7b 69 6e 63 72 20 6a 7d 20 7b   256} {incr j} {
0220: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 63  .            inc
0230: 72 20 6d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r m.            
0240: 73 65 74 20 6b 20 5b 65 78 70 72 20 7b 69 6e 74  set k [expr {int
0250: 28 73 69 6e 28 24 69 20 2b 20 24 6a 29 2a 31 30  (sin($i + $j)*10
0260: 30 30 30 30 30 30 29 7d 5d 0a 20 20 20 20 20 20  000000)}].      
0270: 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f        if {![info
0280: 20 65 78 69 73 74 73 20 61 28 24 6b 29 5d 7d 20   exists a($k)]} 
0290: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  {.              
02a0: 20 20 62 72 65 61 6b 0a 20 20 20 20 20 20 20 20    break.        
02b0: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 7d 0a      }.        }.
02c0: 20 20 20 20 20 20 20 20 73 65 74 20 76 20 5b 65          set v [e
02d0: 78 70 72 20 7b 69 6e 74 28 73 69 6e 28 24 6e 29  xpr {int(sin($n)
02e0: 2a 31 30 30 30 30 30 29 7d 5d 0a 20 20 20 20 20  *100000)}].     
02f0: 20 20 20 6c 61 70 70 65 6e 64 20 6c 20 24 6b 20     lappend l $k 
0300: 24 76 0a 20 20 20 20 20 20 20 20 73 65 74 20 61  $v.        set a
0310: 28 24 6b 29 20 24 76 0a 20 20 20 20 7d 0a 0a 20  ($k) $v.    }.. 
0320: 20 20 20 73 65 74 20 6c 20 5b 6c 73 6f 72 74 20     set l [lsort 
0330: 2d 73 74 72 69 64 65 20 32 20 2d 69 6e 64 65 78  -stride 2 -index
0340: 20 30 20 2d 64 69 63 74 69 6f 6e 61 72 79 20 24   0 -dictionary $
0350: 6c 5d 0a 0a 20 20 20 20 23 20 54 65 73 74 20 77  l]..    # Test w
0360: 69 74 68 20 6d 61 70 20 61 6e 64 20 6c 6f 6f 70  ith map and loop
0370: 20 6f 76 65 72 20 65 6c 65 6d 65 6e 74 73 0a 20   over elements. 
0380: 20 20 20 73 65 74 20 74 74 20 5b 6d 73 67 70 61     set tt [msgpa
0390: 63 6b 20 70 61 63 6b 20 6d 61 70 20 24 6e 5d 0a  ck pack map $n].
03a0: 20 20 20 20 66 6f 72 65 61 63 68 20 7b 6b 20 76      foreach {k v
03b0: 7d 20 24 6c 20 7b 0a 20 20 20 20 20 20 20 20 61  } $l {.        a
03c0: 70 70 65 6e 64 20 74 74 20 5b 6d 73 67 70 61 63  ppend tt [msgpac
03d0: 6b 20 70 61 63 6b 20 69 6e 74 20 24 6b 5d 0a 20  k pack int $k]. 
03e0: 20 20 20 20 20 20 20 61 70 70 65 6e 64 20 74 74         append tt
03f0: 20 5b 6d 73 67 70 61 63 6b 20 70 61 63 6b 20 69   [msgpack pack i
0400: 6e 74 20 24 76 5d 0a 20 20 20 20 7d 0a 20 20 20  nt $v].    }.   
0410: 20 61 70 70 65 6e 64 20 74 74 20 5b 6d 73 67 70   append tt [msgp
0420: 61 63 6b 20 70 61 63 6b 20 74 72 75 65 5d 0a 0a  ack pack true]..
0430: 20 20 20 20 23 20 54 65 73 74 20 64 69 63 74 0a      # Test dict.
0440: 20 20 20 20 73 65 74 20 74 74 32 20 5b 6d 73 67      set tt2 [msg
0450: 70 61 63 6b 20 70 61 63 6b 20 64 69 63 74 20 69  pack pack dict i
0460: 6e 74 20 69 6e 74 20 24 6c 5d 0a 20 20 20 20 61  nt int $l].    a
0470: 70 70 65 6e 64 20 74 74 32 20 5b 6d 73 67 70 61  ppend tt2 [msgpa
0480: 63 6b 20 70 61 63 6b 20 74 72 75 65 5d 0a 0a 20  ck pack true].. 
0490: 20 20 20 23 20 54 65 73 74 20 74 63 6c 5f 61 72     # Test tcl_ar
04a0: 72 61 79 0a 20 20 20 20 73 65 74 20 74 74 33 20  ray.    set tt3 
04b0: 5b 6d 73 67 70 61 63 6b 20 70 61 63 6b 20 74 63  [msgpack pack tc
04c0: 6c 5f 61 72 72 61 79 20 69 6e 74 20 69 6e 74 20  l_array int int 
04d0: 61 5d 0a 20 20 20 20 61 70 70 65 6e 64 20 74 74  a].    append tt
04e0: 33 20 5b 6d 73 67 70 61 63 6b 20 70 61 63 6b 20  3 [msgpack pack 
04f0: 74 72 75 65 5d 0a 0a 20 20 20 20 72 65 74 75 72  true]..    retur
0500: 6e 20 5b 6c 69 73 74 20 5c 0a 20 20 20 20 20 20  n [list \.      
0510: 20 20 5b 73 74 72 69 6e 67 20 65 71 75 61 6c 20    [string equal 
0520: 24 74 74 20 24 74 74 32 5d 20 5c 0a 20 20 20 20  $tt $tt2] \.    
0530: 20 20 20 20 5b 73 74 72 69 6e 67 20 65 71 75 61      [string equa
0540: 6c 20 24 74 74 20 24 74 74 33 5d 20 5c 0a 20 20  l $tt $tt3] \.  
0550: 20 20 20 20 20 20 24 74 74 20 5c 0a 20 20 20 20        $tt \.    
0560: 5d 0a 7d 0a 0a 0a 74 63 6c 74 65 73 74 3a 3a 74  ].}...tcltest::t
0570: 65 73 74 20 66 69 78 5f 69 6e 74 38 20 66 69 78  est fix_int8 fix
0580: 5f 69 6e 74 38 20 2d 62 6f 64 79 20 7b 0a 20 20  _int8 -body {.  
0590: 20 20 73 65 74 20 74 74 20 5b 6d 73 67 70 61 63    set tt [msgpac
05a0: 6b 20 70 61 63 6b 20 66 69 78 5f 69 6e 74 38 20  k pack fix_int8 
05b0: 31 30 30 5d 0a 20 20 20 20 61 70 70 65 6e 64 20  100].    append 
05c0: 74 74 20 5b 6d 73 67 70 61 63 6b 20 70 61 63 6b  tt [msgpack pack
05d0: 20 66 69 78 5f 69 6e 74 38 20 2d 31 30 30 5d 0a   fix_int8 -100].
05e0: 20 20 20 20 61 70 70 65 6e 64 20 74 74 20 5b 6d      append tt [m
05f0: 73 67 70 61 63 6b 20 70 61 63 6b 20 66 69 78 5f  sgpack pack fix_
0600: 75 69 6e 74 38 20 31 30 30 5d 0a 7d 20 2d 72 65  uint8 100].} -re
0610: 73 75 6c 74 20 5b 62 69 6e 61 72 79 20 64 65 63  sult [binary dec
0620: 6f 64 65 20 68 65 78 20 64 30 36 34 64 30 39 63  ode hex d064d09c
0630: 63 63 36 34 5d 0a 0a 74 63 6c 74 65 73 74 3a 3a  cc64]..tcltest::
0640: 74 65 73 74 20 66 69 78 5f 69 6e 74 31 36 20 66  test fix_int16 f
0650: 69 78 5f 69 6e 74 31 36 20 2d 62 6f 64 79 20 7b  ix_int16 -body {
0660: 0a 20 20 20 20 73 65 74 20 74 74 20 5b 6d 73 67  .    set tt [msg
0670: 70 61 63 6b 20 70 61 63 6b 20 66 69 78 5f 69 6e  pack pack fix_in
0680: 74 31 36 20 31 30 30 30 5d 0a 20 20 20 20 61 70  t16 1000].    ap
0690: 70 65 6e 64 20 74 74 20 5b 6d 73 67 70 61 63 6b  pend tt [msgpack
06a0: 20 70 61 63 6b 20 66 69 78 5f 69 6e 74 31 36 20   pack fix_int16 
06b0: 2d 31 30 30 30 5d 0a 20 20 20 20 61 70 70 65 6e  -1000].    appen
06c0: 64 20 74 74 20 5b 6d 73 67 70 61 63 6b 20 70 61  d tt [msgpack pa
06d0: 63 6b 20 66 69 78 5f 75 69 6e 74 31 36 20 31 30  ck fix_uint16 10
06e0: 30 30 5d 0a 7d 20 2d 72 65 73 75 6c 74 20 5b 62  00].} -result [b
06f0: 69 6e 61 72 79 20 64 65 63 6f 64 65 20 68 65 78  inary decode hex
0700: 20 64 31 30 33 65 38 64 31 66 63 31 38 63 64 30   d103e8d1fc18cd0
0710: 33 65 38 5d 0a 0a 74 63 6c 74 65 73 74 3a 3a 74  3e8]..tcltest::t
0720: 65 73 74 20 66 69 78 5f 69 6e 74 33 32 20 66 69  est fix_int32 fi
0730: 78 5f 69 6e 74 33 32 20 2d 62 6f 64 79 20 7b 0a  x_int32 -body {.
0740: 20 20 20 20 73 65 74 20 74 74 20 5b 6d 73 67 70      set tt [msgp
0750: 61 63 6b 20 70 61 63 6b 20 66 69 78 5f 69 6e 74  ack pack fix_int
0760: 33 32 20 31 30 30 30 30 30 5d 0a 20 20 20 20 61  32 100000].    a
0770: 70 70 65 6e 64 20 74 74 20 5b 6d 73 67 70 61 63  ppend tt [msgpac
0780: 6b 20 70 61 63 6b 20 66 69 78 5f 69 6e 74 33 32  k pack fix_int32
0790: 20 2d 31 30 30 30 30 30 5d 0a 20 20 20 20 61 70   -100000].    ap
07a0: 70 65 6e 64 20 74 74 20 5b 6d 73 67 70 61 63 6b  pend tt [msgpack
07b0: 20 70 61 63 6b 20 66 69 78 5f 75 69 6e 74 33 32   pack fix_uint32
07c0: 20 31 30 30 30 30 30 5d 0a 7d 20 2d 72 65 73 75   100000].} -resu
07d0: 6c 74 20 5b 62 69 6e 61 72 79 20 64 65 63 6f 64  lt [binary decod
07e0: 65 20 68 65 78 20 64 32 30 30 30 31 38 36 61 30  e hex d2000186a0
07f0: 64 32 66 66 66 65 37 39 36 30 63 65 30 30 30 31  d2fffe7960ce0001
0800: 38 36 61 30 5d 0a 0a 74 63 6c 74 65 73 74 3a 3a  86a0]..tcltest::
0810: 74 65 73 74 20 66 69 78 5f 69 6e 74 36 34 20 66  test fix_int64 f
0820: 69 78 5f 69 6e 74 36 34 20 2d 62 6f 64 79 20 7b  ix_int64 -body {
0830: 0a 20 20 20 20 73 65 74 20 74 74 20 5b 6d 73 67  .    set tt [msg
0840: 70 61 63 6b 20 70 61 63 6b 20 66 69 78 5f 69 6e  pack pack fix_in
0850: 74 36 34 20 31 30 30 30 30 30 30 30 30 30 30 30  t64 100000000000
0860: 30 30 30 30 5d 0a 20 20 20 20 61 70 70 65 6e 64  0000].    append
0870: 20 74 74 20 5b 6d 73 67 70 61 63 6b 20 70 61 63   tt [msgpack pac
0880: 6b 20 66 69 78 5f 69 6e 74 36 34 20 2d 31 30 30  k fix_int64 -100
0890: 30 30 30 30 30 30 30 30 30 30 30 30 30 5d 0a 20  0000000000000]. 
08a0: 20 20 20 61 70 70 65 6e 64 20 74 74 20 5b 6d 73     append tt [ms
08b0: 67 70 61 63 6b 20 70 61 63 6b 20 66 69 78 5f 75  gpack pack fix_u
08c0: 69 6e 74 36 34 20 31 30 30 30 30 30 30 30 30 30  int64 1000000000
08d0: 30 30 30 30 30 30 5d 0a 7d 20 2d 72 65 73 75 6c  000000].} -resul
08e0: 74 20 5b 62 69 6e 61 72 79 20 64 65 63 6f 64 65  t [binary decode
08f0: 20 68 65 78 20 5c 0a 20 20 20 20 64 33 30 30 30   hex \.    d3000
0900: 33 38 64 37 65 61 34 63 36 38 30 30 30 64 33 66  38d7ea4c68000d3f
0910: 66 66 63 37 32 38 31 35 62 33 39 38 30 30 30 63  ffc72815b398000c
0920: 66 30 30 30 33 38 64 37 65 61 34 63 36 38 30 30  f00038d7ea4c6800
0930: 30 20 5c 0a 5d 0a 0a 0a 74 63 6c 74 65 73 74 3a  0 \.]...tcltest:
0940: 3a 74 65 73 74 20 6e 69 6c 2d 74 72 75 65 2d 66  :test nil-true-f
0950: 61 6c 73 65 20 6e 69 6c 2d 74 72 75 65 2d 66 61  alse nil-true-fa
0960: 6c 73 65 20 2d 62 6f 64 79 20 7b 0a 20 20 20 20  lse -body {.    
0970: 73 65 74 20 74 74 20 5b 6d 73 67 70 61 63 6b 20  set tt [msgpack 
0980: 70 61 63 6b 20 6e 69 6c 5d 0a 20 20 20 20 61 70  pack nil].    ap
0990: 70 65 6e 64 20 74 74 20 5b 6d 73 67 70 61 63 6b  pend tt [msgpack
09a0: 20 70 61 63 6b 20 74 72 75 65 5d 0a 20 20 20 20   pack true].    
09b0: 61 70 70 65 6e 64 20 74 74 20 5b 6d 73 67 70 61  append tt [msgpa
09c0: 63 6b 20 70 61 63 6b 20 66 61 6c 73 65 5d 0a 7d  ck pack false].}
09d0: 20 2d 72 65 73 75 6c 74 20 5b 62 69 6e 61 72 79   -result [binary
09e0: 20 64 65 63 6f 64 65 20 68 65 78 20 63 30 63 33   decode hex c0c3
09f0: 63 32 5d 0a 0a 0a 74 63 6c 74 65 73 74 3a 3a 74  c2]...tcltest::t
0a00: 65 73 74 20 66 69 78 6e 75 6d 2d 70 6f 73 2d 6e  est fixnum-pos-n
0a10: 65 67 20 66 69 78 6e 75 6d 2d 70 6f 73 2d 6e 65  eg fixnum-pos-ne
0a20: 67 20 2d 62 6f 64 79 20 7b 0a 20 20 20 20 73 65  g -body {.    se
0a30: 74 20 74 74 20 5b 6d 73 67 70 61 63 6b 20 70 61  t tt [msgpack pa
0a40: 63 6b 20 66 69 78 6e 75 6d 70 6f 73 20 35 5d 0a  ck fixnumpos 5].
0a50: 20 20 20 20 61 70 70 65 6e 64 20 74 74 20 5b 6d      append tt [m
0a60: 73 67 70 61 63 6b 20 70 61 63 6b 20 66 69 78 6e  sgpack pack fixn
0a70: 75 6d 70 6f 73 20 35 30 5d 0a 20 20 20 20 61 70  umpos 50].    ap
0a80: 70 65 6e 64 20 74 74 20 5b 6d 73 67 70 61 63 6b  pend tt [msgpack
0a90: 20 70 61 63 6b 20 66 69 78 6e 75 6d 6e 65 67 20   pack fixnumneg 
0aa0: 2d 31 30 5d 0a 20 20 20 20 61 70 70 65 6e 64 20  -10].    append 
0ab0: 74 74 20 5b 6d 73 67 70 61 63 6b 20 70 61 63 6b  tt [msgpack pack
0ac0: 20 66 69 78 6e 75 6d 6e 65 67 20 2d 33 32 5d 0a   fixnumneg -32].
0ad0: 20 20 20 20 6d 73 67 70 61 63 6b 20 75 6e 70 61      msgpack unpa
0ae0: 63 6b 20 24 74 74 0a 7d 20 2d 72 65 73 75 6c 74  ck $tt.} -result
0af0: 20 7b 7b 69 6e 74 65 67 65 72 20 35 7d 20 7b 69   {{integer 5} {i
0b00: 6e 74 65 67 65 72 20 35 30 7d 20 7b 69 6e 74 65  nteger 50} {inte
0b10: 67 65 72 20 2d 31 30 7d 20 7b 69 6e 74 65 67 65  ger -10} {intege
0b20: 72 20 2d 33 32 7d 7d 0a 0a 0a 74 63 6c 74 65 73  r -32}}...tcltes
0b30: 74 3a 3a 74 65 73 74 20 69 6e 74 38 20 69 6e 74  t::test int8 int
0b40: 38 20 2d 62 6f 64 79 20 7b 0a 20 20 20 20 66 6c  8 -body {.    fl
0b50: 61 74 6d 61 70 20 76 20 7b 31 32 37 20 31 32 38  atmap v {127 128
0b60: 20 31 20 30 20 2d 31 20 2d 33 32 20 2d 33 33 20   1 0 -1 -32 -33 
0b70: 2d 31 32 37 20 2d 31 32 38 7d 20 7b 0a 20 20 20  -127 -128} {.   
0b80: 20 20 20 20 20 20 20 20 20 6d 73 67 70 61 63 6b           msgpack
0b90: 20 70 61 63 6b 20 69 6e 74 38 20 24 76 0a 20 20   pack int8 $v.  
0ba0: 20 20 7d 0a 7d 20 2d 72 65 73 75 6c 74 20 22 5c    }.} -result "\
0bb0: 78 37 66 20 5c 78 64 30 5c 78 38 30 20 5c 78 30  x7f \xd0\x80 \x0
0bc0: 31 20 5c 78 30 30 20 5c 78 66 66 20 5c 78 65 30  1 \x00 \xff \xe0
0bd0: 20 5c 78 64 30 5c 78 64 66 20 5c 78 64 30 5c 78   \xd0\xdf \xd0\x
0be0: 38 31 20 5c 78 64 30 5c 78 38 30 22 0a 0a 74 63  81 \xd0\x80"..tc
0bf0: 6c 74 65 73 74 3a 3a 74 65 73 74 20 75 69 6e 74  ltest::test uint
0c00: 38 20 75 69 6e 74 38 20 2d 62 6f 64 79 20 7b 0a  8 uint8 -body {.
0c10: 20 20 20 20 66 6c 61 74 6d 61 70 20 76 20 7b 31      flatmap v {1
0c20: 32 37 20 31 32 38 20 31 20 30 20 2d 31 20 2d 33  27 128 1 0 -1 -3
0c30: 32 20 2d 33 33 20 2d 31 32 37 20 2d 31 32 38 7d  2 -33 -127 -128}
0c40: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 6d   {.            m
0c50: 73 67 70 61 63 6b 20 70 61 63 6b 20 75 69 6e 74  sgpack pack uint
0c60: 38 20 24 76 0a 20 20 20 20 7d 0a 7d 20 2d 72 65  8 $v.    }.} -re
0c70: 73 75 6c 74 20 22 5c 78 37 66 20 5c 78 63 63 5c  sult "\x7f \xcc\
0c80: 78 38 30 20 5c 78 30 31 20 5c 78 30 30 20 5c 78  x80 \x01 \x00 \x
0c90: 63 63 5c 78 66 66 20 5c 78 63 63 5c 78 65 30 20  cc\xff \xcc\xe0 
0ca0: 5c 78 63 63 5c 78 64 66 20 5c 78 63 63 5c 78 38  \xcc\xdf \xcc\x8
0cb0: 31 5c 0a 20 20 20 20 20 20 20 20 20 20 20 5c 78  1\.           \x
0cc0: 63 63 5c 78 38 30 22 0a 0a 74 63 6c 74 65 73 74  cc\x80"..tcltest
0cd0: 3a 3a 74 65 73 74 20 69 6e 74 31 36 20 69 6e 74  ::test int16 int
0ce0: 31 36 20 2d 62 6f 64 79 20 7b 0a 20 20 20 20 66  16 -body {.    f
0cf0: 6c 61 74 6d 61 70 20 76 20 7b 0a 20 20 20 20 20  latmap v {.     
0d00: 20 20 20 31 20 30 20 2d 31 20 33 32 20 33 33 20     1 0 -1 32 33 
0d10: 2d 33 32 20 2d 33 33 20 31 32 37 20 31 32 38 20  -32 -33 127 128 
0d20: 2d 31 32 37 20 2d 31 32 38 20 32 35 36 20 32 35  -127 -128 256 25
0d30: 37 20 2d 32 35 35 20 2d 32 35 36 20 31 30 30 30  7 -255 -256 1000
0d40: 30 20 2d 31 30 30 30 30 0a 20 20 20 20 7d 20 7b  0 -10000.    } {
0d50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 69 6e  .            bin
0d60: 61 72 79 20 65 6e 63 6f 64 65 20 68 65 78 20 5b  ary encode hex [
0d70: 6d 73 67 70 61 63 6b 20 70 61 63 6b 20 69 6e 74  msgpack pack int
0d80: 31 36 20 24 76 5d 0a 20 20 20 20 7d 0a 7d 20 2d  16 $v].    }.} -
0d90: 72 65 73 75 6c 74 20 7b 30 31 20 30 30 20 66 66  result {01 00 ff
0da0: 20 32 30 20 32 31 20 65 30 20 64 30 64 66 20 37   20 21 e0 d0df 7
0db0: 66 20 63 63 38 30 20 64 30 38 31 20 64 30 38 30  f cc80 d081 d080
0dc0: 20 63 64 30 31 30 30 20 63 64 30 31 30 31 20 64   cd0100 cd0101 d
0dd0: 31 66 66 30 31 5c 0a 20 20 20 20 20 20 20 20 20  1ff01\.         
0de0: 20 20 64 31 66 66 30 30 20 63 64 32 37 31 30 20    d1ff00 cd2710 
0df0: 64 31 64 38 66 30 7d 0a 0a 74 63 6c 74 65 73 74  d1d8f0}..tcltest
0e00: 3a 3a 74 65 73 74 20 75 69 6e 74 31 36 20 75 69  ::test uint16 ui
0e10: 6e 74 31 36 20 2d 62 6f 64 79 20 7b 0a 20 20 20  nt16 -body {.   
0e20: 20 66 6c 61 74 6d 61 70 20 76 20 7b 0a 20 20 20   flatmap v {.   
0e30: 20 20 20 20 20 31 20 30 20 2d 31 20 33 32 20 33       1 0 -1 32 3
0e40: 33 20 2d 33 32 20 2d 33 33 20 31 32 37 20 31 32  3 -32 -33 127 12
0e50: 38 20 2d 31 32 37 20 2d 31 32 38 20 32 35 36 20  8 -127 -128 256 
0e60: 32 35 37 20 2d 32 35 35 20 2d 32 35 36 20 31 30  257 -255 -256 10
0e70: 30 30 30 20 2d 31 30 30 30 30 0a 20 20 20 20 7d  000 -10000.    }
0e80: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 62   {.            b
0e90: 69 6e 61 72 79 20 65 6e 63 6f 64 65 20 68 65 78  inary encode hex
0ea0: 20 5b 6d 73 67 70 61 63 6b 20 70 61 63 6b 20 75   [msgpack pack u
0eb0: 69 6e 74 31 36 20 24 76 5d 0a 20 20 20 20 7d 0a  int16 $v].    }.
0ec0: 7d 20 2d 72 65 73 75 6c 74 20 7b 30 31 20 30 30  } -result {01 00
0ed0: 20 63 64 66 66 66 66 20 32 30 20 32 31 20 63 64   cdffff 20 21 cd
0ee0: 66 66 65 30 20 63 64 66 66 64 66 20 37 66 20 63  ffe0 cdffdf 7f c
0ef0: 63 38 30 20 63 64 66 66 38 31 20 63 64 66 66 38  c80 cdff81 cdff8
0f00: 30 20 63 64 30 31 30 30 5c 0a 20 20 20 20 20 20  0 cd0100\.      
0f10: 20 20 20 20 20 63 64 30 31 30 31 20 63 64 66 66       cd0101 cdff
0f20: 30 31 20 63 64 66 66 30 30 20 63 64 32 37 31 30  01 cdff00 cd2710
0f30: 20 63 64 64 38 66 30 7d 0a 0a 74 63 6c 74 65 73   cdd8f0}..tcltes
0f40: 74 3a 3a 74 65 73 74 20 69 6e 74 33 32 20 69 6e  t::test int32 in
0f50: 74 33 32 20 2d 62 6f 64 79 20 7b 0a 20 20 20 20  t32 -body {.    
0f60: 66 6c 61 74 6d 61 70 20 76 20 7b 0a 20 20 20 20  flatmap v {.    
0f70: 20 20 20 20 31 20 30 20 2d 31 20 33 32 20 33 33      1 0 -1 32 33
0f80: 20 2d 33 32 20 2d 33 33 20 31 32 37 20 31 32 38   -32 -33 127 128
0f90: 20 2d 31 32 37 20 2d 31 32 38 20 32 35 36 20 32   -127 -128 256 2
0fa0: 35 37 20 2d 32 35 35 20 2d 32 35 36 20 33 32 37  57 -255 -256 327
0fb0: 36 37 20 33 32 37 36 38 0a 20 20 20 20 20 20 20  67 32768.       
0fc0: 20 2d 33 32 37 36 37 20 2d 33 32 37 36 38 20 36   -32767 -32768 6
0fd0: 35 35 33 35 20 36 35 35 33 36 20 2d 36 35 35 33  5535 65536 -6553
0fe0: 35 20 2d 36 35 35 33 36 20 31 30 30 30 30 30 30  5 -65536 1000000
0ff0: 30 20 2d 31 30 30 30 30 30 30 30 0a 20 20 20 20  0 -10000000.    
1000: 7d 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  } {.            
1010: 62 69 6e 61 72 79 20 65 6e 63 6f 64 65 20 68 65  binary encode he
1020: 78 20 5b 6d 73 67 70 61 63 6b 20 70 61 63 6b 20  x [msgpack pack 
1030: 69 6e 74 33 32 20 24 76 5d 0a 20 20 20 20 7d 0a  int32 $v].    }.
1040: 7d 20 2d 72 65 73 75 6c 74 20 7b 30 31 20 30 30  } -result {01 00
1050: 20 66 66 20 32 30 20 32 31 20 65 30 20 64 30 64   ff 20 21 e0 d0d
1060: 66 20 37 66 20 63 63 38 30 20 64 30 38 31 20 64  f 7f cc80 d081 d
1070: 30 38 30 20 63 64 30 31 30 30 20 63 64 30 31 30  080 cd0100 cd010
1080: 31 20 64 31 66 66 30 31 5c 0a 20 20 20 20 20 20  1 d1ff01\.      
1090: 20 20 20 20 20 64 31 66 66 30 30 20 63 64 37 66       d1ff00 cd7f
10a0: 66 66 20 63 64 38 30 30 30 20 64 31 38 30 30 31  ff cd8000 d18001
10b0: 20 64 31 38 30 30 30 20 63 64 66 66 66 66 20 63   d18000 cdffff c
10c0: 65 30 30 30 31 30 30 30 30 20 64 32 66 66 66 66  e00010000 d2ffff
10d0: 30 30 30 31 5c 0a 20 20 20 20 20 20 20 20 20 20  0001\.          
10e0: 20 64 32 66 66 66 66 30 30 30 30 20 63 65 30 30   d2ffff0000 ce00
10f0: 39 38 39 36 38 30 20 64 32 66 66 36 37 36 39 38  989680 d2ff67698
1100: 30 7d 0a 0a 74 63 6c 74 65 73 74 3a 3a 74 65 73  0}..tcltest::tes
1110: 74 20 75 69 6e 74 33 32 20 75 69 6e 74 33 32 20  t uint32 uint32 
1120: 2d 62 6f 64 79 20 7b 0a 20 20 20 20 66 6c 61 74  -body {.    flat
1130: 6d 61 70 20 76 20 7b 0a 20 20 20 20 20 20 20 20  map v {.        
1140: 31 20 30 20 2d 31 20 33 32 20 33 33 20 2d 33 32  1 0 -1 32 33 -32
1150: 20 2d 33 33 20 31 32 37 20 31 32 38 20 2d 31 32   -33 127 128 -12
1160: 37 20 2d 31 32 38 20 32 35 36 20 32 35 37 20 2d  7 -128 256 257 -
1170: 32 35 35 20 2d 32 35 36 20 33 32 37 36 37 20 33  255 -256 32767 3
1180: 32 37 36 38 0a 20 20 20 20 20 20 20 20 2d 33 32  2768.        -32
1190: 37 36 37 20 2d 33 32 37 36 38 20 36 35 35 33 35  767 -32768 65535
11a0: 20 36 35 35 33 36 20 2d 36 35 35 33 35 20 2d 36   65536 -65535 -6
11b0: 35 35 33 36 20 31 30 30 30 30 30 30 30 20 2d 31  5536 10000000 -1
11c0: 30 30 30 30 30 30 30 0a 20 20 20 20 7d 20 7b 0a  0000000.    } {.
11d0: 20 20 20 20 20 20 20 20 20 20 20 20 62 69 6e 61              bina
11e0: 72 79 20 65 6e 63 6f 64 65 20 68 65 78 20 5b 6d  ry encode hex [m
11f0: 73 67 70 61 63 6b 20 70 61 63 6b 20 75 69 6e 74  sgpack pack uint
1200: 33 32 20 24 76 5d 0a 20 20 20 20 7d 0a 7d 20 2d  32 $v].    }.} -
1210: 72 65 73 75 6c 74 20 7b 30 31 20 30 30 20 63 65  result {01 00 ce
1220: 66 66 66 66 66 66 66 66 20 32 30 20 32 31 20 63  ffffffff 20 21 c
1230: 65 66 66 66 66 66 66 65 30 20 63 65 66 66 66 66  effffffe0 ceffff
1240: 66 66 64 66 20 37 66 20 63 63 38 30 20 63 65 66  ffdf 7f cc80 cef
1250: 66 66 66 66 66 38 31 5c 0a 20 20 20 20 20 20 20  fffff81\.       
1260: 20 20 20 20 63 65 66 66 66 66 66 66 38 30 20 63      ceffffff80 c
1270: 64 30 31 30 30 20 63 64 30 31 30 31 20 63 65 66  d0100 cd0101 cef
1280: 66 66 66 66 66 30 31 20 63 65 66 66 66 66 66 66  fffff01 ceffffff
1290: 30 30 20 63 64 37 66 66 66 20 63 64 38 30 30 30  00 cd7fff cd8000
12a0: 5c 0a 20 20 20 20 20 20 20 20 20 20 20 63 65 66  \.           cef
12b0: 66 66 66 38 30 30 31 20 63 65 66 66 66 66 38 30  fff8001 ceffff80
12c0: 30 30 20 63 64 66 66 66 66 20 63 65 30 30 30 31  00 cdffff ce0001
12d0: 30 30 30 30 20 63 65 66 66 66 66 30 30 30 31 20  0000 ceffff0001 
12e0: 63 65 66 66 66 66 30 30 30 30 5c 0a 20 20 20 20  ceffff0000\.    
12f0: 20 20 20 20 20 20 20 63 65 30 30 39 38 39 36 38         ce0098968
1300: 30 20 63 65 66 66 36 37 36 39 38 30 7d 0a 0a 74  0 ceff676980}..t
1310: 63 6c 74 65 73 74 3a 3a 74 65 73 74 20 69 6e 74  cltest::test int
1320: 36 34 20 69 6e 74 36 34 20 2d 62 6f 64 79 20 7b  64 int64 -body {
1330: 0a 20 20 20 20 66 6c 61 74 6d 61 70 20 76 20 7b  .    flatmap v {
1340: 0a 20 20 20 20 20 20 20 20 31 20 30 20 2d 31 20  .        1 0 -1 
1350: 33 32 20 33 33 20 2d 33 32 20 2d 33 33 20 31 32  32 33 -32 -33 12
1360: 37 20 31 32 38 20 2d 31 32 37 20 2d 31 32 38 20  7 128 -127 -128 
1370: 32 35 36 20 32 35 37 20 2d 32 35 35 20 2d 32 35  256 257 -255 -25
1380: 36 20 33 32 37 36 37 20 33 32 37 36 38 0a 20 20  6 32767 32768.  
1390: 20 20 20 20 20 20 2d 33 32 37 36 37 20 2d 33 32        -32767 -32
13a0: 37 36 38 20 36 35 35 33 35 20 36 35 35 33 36 20  768 65535 65536 
13b0: 2d 36 35 35 33 35 20 2d 36 35 35 33 36 20 32 31  -65535 -65536 21
13c0: 34 37 34 38 33 36 34 37 20 32 31 34 37 34 38 33  47483647 2147483
13d0: 36 34 38 0a 20 20 20 20 20 20 20 20 2d 32 31 34  648.        -214
13e0: 37 34 38 33 36 34 37 20 2d 32 31 34 37 34 38 33  7483647 -2147483
13f0: 36 34 38 20 34 32 39 34 39 36 37 32 39 35 20 34  648 4294967295 4
1400: 32 39 34 39 36 37 32 39 36 20 2d 34 32 39 34 39  294967296 -42949
1410: 36 37 32 39 35 20 2d 34 32 39 34 39 36 37 32 39  67295 -429496729
1420: 36 0a 20 20 20 20 20 20 20 20 31 30 30 30 30 30  6.        100000
1430: 30 30 30 30 30 30 30 30 30 30 20 2d 31 30 30 30  0000000000 -1000
1440: 30 30 30 30 30 30 30 30 30 30 30 30 0a 20 20 20  000000000000.   
1450: 20 7d 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20   } {.           
1460: 20 62 69 6e 61 72 79 20 65 6e 63 6f 64 65 20 68   binary encode h
1470: 65 78 20 5b 6d 73 67 70 61 63 6b 20 70 61 63 6b  ex [msgpack pack
1480: 20 69 6e 74 36 34 20 24 76 5d 0a 20 20 20 20 7d   int64 $v].    }
1490: 0a 7d 20 2d 72 65 73 75 6c 74 20 7b 30 31 20 30  .} -result {01 0
14a0: 30 20 66 66 20 32 30 20 32 31 20 65 30 20 64 30  0 ff 20 21 e0 d0
14b0: 64 66 20 37 66 20 63 63 38 30 20 64 30 38 31 20  df 7f cc80 d081 
14c0: 64 30 38 30 20 63 64 30 31 30 30 20 63 64 30 31  d080 cd0100 cd01
14d0: 30 31 20 64 31 66 66 30 31 5c 0a 20 20 20 20 20  01 d1ff01\.     
14e0: 20 20 20 20 20 20 64 31 66 66 30 30 20 63 64 37        d1ff00 cd7
14f0: 66 66 66 20 63 64 38 30 30 30 20 64 31 38 30 30  fff cd8000 d1800
1500: 31 20 64 31 38 30 30 30 20 63 64 66 66 66 66 20  1 d18000 cdffff 
1510: 63 65 30 30 30 31 30 30 30 30 20 64 32 66 66 66  ce00010000 d2fff
1520: 66 30 30 30 31 5c 0a 20 20 20 20 20 20 20 20 20  f0001\.         
1530: 20 20 64 32 66 66 66 66 30 30 30 30 20 63 65 37    d2ffff0000 ce7
1540: 66 66 66 66 66 66 66 20 63 65 38 30 30 30 30 30  fffffff ce800000
1550: 30 30 20 64 32 38 30 30 30 30 30 30 31 20 64 32  00 d280000001 d2
1560: 38 30 30 30 30 30 30 30 20 63 65 66 66 66 66 66  80000000 cefffff
1570: 66 66 66 5c 0a 20 20 20 20 20 20 20 20 20 20 20  fff\.           
1580: 63 66 30 30 30 30 30 30 30 31 30 30 30 30 30 30  cf00000001000000
1590: 30 30 20 64 33 66 66 66 66 66 66 66 66 30 30 30  00 d3ffffffff000
15a0: 30 30 30 30 31 20 64 33 66 66 66 66 66 66 66 66  00001 d3ffffffff
15b0: 30 30 30 30 30 30 30 30 5c 0a 20 20 20 20 20 20  00000000\.      
15c0: 20 20 20 20 20 63 66 30 30 30 33 38 64 37 65 61       cf00038d7ea
15d0: 34 63 36 38 30 30 30 20 64 33 66 66 66 63 37 32  4c68000 d3fffc72
15e0: 38 31 35 62 33 39 38 30 30 30 7d 0a 0a 74 63 6c  815b398000}..tcl
15f0: 74 65 73 74 3a 3a 74 65 73 74 20 75 69 6e 74 36  test::test uint6
1600: 34 20 75 69 6e 74 36 34 20 2d 62 6f 64 79 20 7b  4 uint64 -body {
1610: 0a 20 20 20 20 66 6c 61 74 6d 61 70 20 76 20 7b  .    flatmap v {
1620: 0a 20 20 20 20 20 20 20 20 31 20 30 20 2d 31 20  .        1 0 -1 
1630: 33 32 20 33 33 20 2d 33 32 20 2d 33 33 20 31 32  32 33 -32 -33 12
1640: 37 20 31 32 38 20 2d 31 32 37 20 2d 31 32 38 20  7 128 -127 -128 
1650: 32 35 36 20 32 35 37 20 2d 32 35 35 20 2d 32 35  256 257 -255 -25
1660: 36 20 33 32 37 36 37 20 33 32 37 36 38 0a 20 20  6 32767 32768.  
1670: 20 20 20 20 20 20 2d 33 32 37 36 37 20 2d 33 32        -32767 -32
1680: 37 36 38 20 36 35 35 33 35 20 36 35 35 33 36 20  768 65535 65536 
1690: 2d 36 35 35 33 35 20 2d 36 35 35 33 36 20 32 31  -65535 -65536 21
16a0: 34 37 34 38 33 36 34 37 20 32 31 34 37 34 38 33  47483647 2147483
16b0: 36 34 38 0a 20 20 20 20 20 20 20 20 2d 32 31 34  648.        -214
16c0: 37 34 38 33 36 34 37 20 2d 32 31 34 37 34 38 33  7483647 -2147483
16d0: 36 34 38 20 34 32 39 34 39 36 37 32 39 35 20 34  648 4294967295 4
16e0: 32 39 34 39 36 37 32 39 36 20 2d 34 32 39 34 39  294967296 -42949
16f0: 36 37 32 39 35 20 2d 34 32 39 34 39 36 37 32 39  67295 -429496729
1700: 36 0a 20 20 20 20 20 20 20 20 31 30 30 30 30 30  6.        100000
1710: 30 30 30 30 30 30 30 30 30 30 20 2d 31 30 30 30  0000000000 -1000
1720: 30 30 30 30 30 30 30 30 30 30 30 30 0a 20 20 20  000000000000.   
1730: 20 7d 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20   } {.           
1740: 20 62 69 6e 61 72 79 20 65 6e 63 6f 64 65 20 68   binary encode h
1750: 65 78 20 5b 6d 73 67 70 61 63 6b 20 70 61 63 6b  ex [msgpack pack
1760: 20 75 69 6e 74 36 34 20 24 76 5d 0a 20 20 20 20   uint64 $v].    
1770: 7d 0a 7d 20 2d 72 65 73 75 6c 74 20 7b 30 31 20  }.} -result {01 
1780: 30 30 20 63 66 66 66 66 66 66 66 66 66 66 66 66  00 cffffffffffff
1790: 66 66 66 66 66 20 32 30 20 32 31 20 63 66 66 66  fffff 20 21 cfff
17a0: 66 66 66 66 66 66 66 66 66 66 66 66 65 30 5c 0a  ffffffffffffe0\.
17b0: 20 20 20 20 20 20 20 20 20 20 20 63 66 66 66 66             cffff
17c0: 66 66 66 66 66 66 66 66 66 66 66 64 66 20 37 66  fffffffffffdf 7f
17d0: 20 63 63 38 30 20 63 66 66 66 66 66 66 66 66 66   cc80 cfffffffff
17e0: 66 66 66 66 66 66 38 31 20 63 66 66 66 66 66 66  ffffff81 cffffff
17f0: 66 66 66 66 66 66 66 66 66 38 30 5c 0a 20 20 20  fffffffff80\.   
1800: 20 20 20 20 20 20 20 20 63 64 30 31 30 30 20 63          cd0100 c
1810: 64 30 31 30 31 20 63 66 66 66 66 66 66 66 66 66  d0101 cfffffffff
1820: 66 66 66 66 66 66 30 31 20 63 66 66 66 66 66 66  ffffff01 cffffff
1830: 66 66 66 66 66 66 66 66 66 30 30 20 63 64 37 66  fffffffff00 cd7f
1840: 66 66 20 63 64 38 30 30 30 5c 0a 20 20 20 20 20  ff cd8000\.     
1850: 20 20 20 20 20 20 63 66 66 66 66 66 66 66 66 66        cfffffffff
1860: 66 66 66 66 38 30 30 31 20 63 66 66 66 66 66 66  ffff8001 cffffff
1870: 66 66 66 66 66 66 66 38 30 30 30 20 63 64 66 66  fffffff8000 cdff
1880: 66 66 20 63 65 30 30 30 31 30 30 30 30 5c 0a 20  ff ce00010000\. 
1890: 20 20 20 20 20 20 20 20 20 20 63 66 66 66 66 66            cfffff
18a0: 66 66 66 66 66 66 66 66 30 30 30 31 20 63 66 66  ffffffff0001 cff
18b0: 66 66 66 66 66 66 66 66 66 66 66 30 30 30 30 20  fffffffffff0000 
18c0: 63 65 37 66 66 66 66 66 66 66 20 63 65 38 30 30  ce7fffffff ce800
18d0: 30 30 30 30 30 5c 0a 20 20 20 20 20 20 20 20 20  00000\.         
18e0: 20 20 63 66 66 66 66 66 66 66 66 66 38 30 30 30    cfffffffff8000
18f0: 30 30 30 31 20 63 66 66 66 66 66 66 66 66 66 38  0001 cfffffffff8
1900: 30 30 30 30 30 30 30 20 63 65 66 66 66 66 66 66  0000000 ceffffff
1910: 66 66 20 63 66 30 30 30 30 30 30 30 31 30 30 30  ff cf00000001000
1920: 30 30 30 30 30 5c 0a 20 20 20 20 20 20 20 20 20  00000\.         
1930: 20 20 63 66 66 66 66 66 66 66 66 66 30 30 30 30    cfffffffff0000
1940: 30 30 30 31 20 63 66 66 66 66 66 66 66 66 66 30  0001 cfffffffff0
1950: 30 30 30 30 30 30 30 20 63 66 30 30 30 33 38 64  0000000 cf00038d
1960: 37 65 61 34 63 36 38 30 30 30 5c 0a 20 20 20 20  7ea4c68000\.    
1970: 20 20 20 20 20 20 20 63 66 66 66 66 63 37 32 38         cffffc728
1980: 31 35 62 33 39 38 30 30 30 7d 0a 0a 0a 74 63 6c  15b398000}...tcl
1990: 74 65 73 74 3a 3a 74 65 73 74 20 66 6c 6f 61 74  test::test float
19a0: 33 32 20 66 6c 6f 61 74 33 32 20 2d 62 6f 64 79  32 float32 -body
19b0: 20 7b 0a 20 20 20 20 66 6c 61 74 6d 61 70 20 76   {.    flatmap v
19c0: 20 7b 31 20 32 20 33 2e 31 34 31 35 20 31 32 33   {1 2 3.1415 123
19d0: 34 35 36 36 37 38 20 36 2e 35 34 65 33 7d 20 7b  456678 6.54e3} {
19e0: 0a 20 20 20 20 20 20 20 20 62 69 6e 61 72 79 20  .        binary 
19f0: 65 6e 63 6f 64 65 20 68 65 78 20 5b 6d 73 67 70  encode hex [msgp
1a00: 61 63 6b 20 70 61 63 6b 20 66 6c 6f 61 74 33 32  ack pack float32
1a10: 20 24 76 5d 0a 20 20 20 20 7d 0a 7d 20 2d 72 65   $v].    }.} -re
1a20: 73 75 6c 74 20 7b 63 61 33 66 38 30 30 30 30 30  sult {ca3f800000
1a30: 20 63 61 34 30 30 30 30 30 30 30 20 63 61 34 30   ca40000000 ca40
1a40: 34 39 30 65 35 36 20 63 61 34 63 65 62 37 39 39  490e56 ca4ceb799
1a50: 35 20 63 61 34 35 63 63 36 30 30 30 7d 0a 0a 74  5 ca45cc6000}..t
1a60: 63 6c 74 65 73 74 3a 3a 74 65 73 74 20 66 6c 6f  cltest::test flo
1a70: 61 74 36 34 20 66 6c 6f 61 74 36 34 20 2d 62 6f  at64 float64 -bo
1a80: 64 79 20 7b 0a 20 20 20 20 66 6c 61 74 6d 61 70  dy {.    flatmap
1a90: 20 76 20 7b 31 20 32 20 33 2e 31 34 31 35 20 31   v {1 2 3.1415 1
1aa0: 32 33 34 35 36 36 37 38 20 36 2e 35 34 65 33 7d  23456678 6.54e3}
1ab0: 20 7b 0a 20 20 20 20 20 20 20 20 62 69 6e 61 72   {.        binar
1ac0: 79 20 65 6e 63 6f 64 65 20 68 65 78 20 5b 6d 73  y encode hex [ms
1ad0: 67 70 61 63 6b 20 70 61 63 6b 20 66 6c 6f 61 74  gpack pack float
1ae0: 36 34 20 24 76 5d 0a 20 20 20 20 7d 0a 7d 20 2d  64 $v].    }.} -
1af0: 72 65 73 75 6c 74 20 7b 63 62 33 66 66 30 30 30  result {cb3ff000
1b00: 30 30 30 30 30 30 30 30 30 30 20 63 62 34 30 30  0000000000 cb400
1b10: 30 30 30 30 30 30 30 30 30 30 30 30 30 20 63 62  0000000000000 cb
1b20: 34 30 30 39 32 31 63 61 63 30 38 33 31 32 36 66  400921cac083126f
1b30: 5c 0a 20 20 20 20 20 20 20 20 20 20 20 63 62 34  \.           cb4
1b40: 31 39 64 36 66 33 32 39 38 30 30 30 30 30 30 20  19d6f3298000000 
1b50: 63 62 34 30 62 39 38 63 30 30 30 30 30 30 30 30  cb40b98c00000000
1b60: 30 30 7d 0a 0a 0a 23 20 4f 6e 65 20 63 61 6e 27  00}...# One can'
1b70: 74 20 75 73 65 20 2d 6d 61 74 63 68 20 72 65 67  t use -match reg
1b80: 65 78 70 20 68 65 72 65 20 62 65 63 61 75 73 65  exp here because
1b90: 20 69 74 20 69 73 20 6c 69 6d 69 74 65 64 20 74   it is limited t
1ba0: 6f 20 32 35 35 20 72 65 70 65 74 69 74 69 6f 6e  o 255 repetition
1bb0: 73 2e 0a 23 20 57 65 20 77 65 65 70 20 66 6f 72  s..# We weep for
1bc0: 20 79 6f 75 72 20 74 65 72 6d 69 6e 61 6c 20 69   your terminal i
1bd0: 66 20 74 68 69 73 20 74 65 73 74 20 66 61 69 6c  f this test fail
1be0: 73 2e 0a 74 63 6c 74 65 73 74 3a 3a 74 65 73 74  s..tcltest::test
1bf0: 20 62 69 6e 20 62 69 6e 20 2d 62 6f 64 79 20 7b   bin bin -body {
1c00: 0a 20 20 20 20 66 6c 61 74 6d 61 70 20 76 20 5b  .    flatmap v [
1c10: 6c 69 73 74 20 5c 0a 20 20 20 20 20 20 20 20 7b  list \.        {
1c20: 7d 20 61 20 62 62 20 63 63 63 20 64 64 64 64 20  } a bb ccc dddd 
1c30: 5b 73 74 72 69 6e 67 20 72 65 70 65 61 74 20 65  [string repeat e
1c40: 20 32 35 35 5d 20 5b 73 74 72 69 6e 67 20 72 65   255] [string re
1c50: 70 65 61 74 20 65 20 32 35 36 5d 20 5c 0a 20 20  peat e 256] \.  
1c60: 20 20 20 20 20 20 5b 73 74 72 69 6e 67 20 72 65        [string re
1c70: 70 65 61 74 20 66 20 32 35 37 5d 20 5b 73 74 72  peat f 257] [str
1c80: 69 6e 67 20 72 65 70 65 61 74 20 67 20 36 35 35  ing repeat g 655
1c90: 33 35 5d 20 5b 73 74 72 69 6e 67 20 72 65 70 65  35] [string repe
1ca0: 61 74 20 68 20 36 35 35 33 36 5d 20 5c 0a 20 20  at h 65536] \.  
1cb0: 20 20 20 20 20 20 5b 73 74 72 69 6e 67 20 72 65        [string re
1cc0: 70 65 61 74 20 69 20 31 30 30 30 30 30 5d 20 5c  peat i 100000] \
1cd0: 0a 20 20 20 20 5d 20 7b 0a 20 20 20 20 20 20 20  .    ] {.       
1ce0: 20 20 20 20 20 62 69 6e 61 72 79 20 65 6e 63 6f       binary enco
1cf0: 64 65 20 68 65 78 20 5b 6d 73 67 70 61 63 6b 20  de hex [msgpack 
1d00: 70 61 63 6b 20 62 69 6e 20 24 76 5d 0a 20 20 20  pack bin $v].   
1d10: 20 7d 0a 7d 20 2d 72 65 73 75 6c 74 20 5b 6c 69   }.} -result [li
1d20: 73 74 20 5c 0a 20 20 20 20 63 34 30 30 20 5c 0a  st \.    c400 \.
1d30: 20 20 20 20 63 34 30 31 36 31 20 5c 0a 20 20 20      c40161 \.   
1d40: 20 63 34 30 32 36 32 36 32 20 5c 0a 20 20 20 20   c4026262 \.    
1d50: 63 34 30 33 36 33 36 33 36 33 20 5c 0a 20 20 20  c403636363 \.   
1d60: 20 63 34 30 34 36 34 36 34 36 34 36 34 20 5c 0a   c40464646464 \.
1d70: 20 20 20 20 63 34 66 66 5b 73 74 72 69 6e 67 20      c4ff[string 
1d80: 72 65 70 65 61 74 20 36 35 20 32 35 35 5d 20 5c  repeat 65 255] \
1d90: 0a 20 20 20 20 63 35 30 31 30 30 5b 73 74 72 69  .    c50100[stri
1da0: 6e 67 20 72 65 70 65 61 74 20 36 35 20 32 35 36  ng repeat 65 256
1db0: 5d 20 5c 0a 20 20 20 20 63 35 30 31 30 31 5b 73  ] \.    c50101[s
1dc0: 74 72 69 6e 67 20 72 65 70 65 61 74 20 36 36 20  tring repeat 66 
1dd0: 32 35 37 5d 20 5c 0a 20 20 20 20 63 35 66 66 66  257] \.    c5fff
1de0: 66 5b 73 74 72 69 6e 67 20 72 65 70 65 61 74 20  f[string repeat 
1df0: 36 37 20 36 35 35 33 35 5d 20 5c 0a 20 20 20 20  67 65535] \.    
1e00: 63 36 30 30 30 31 30 30 30 30 5b 73 74 72 69 6e  c600010000[strin
1e10: 67 20 72 65 70 65 61 74 20 36 38 20 36 35 35 33  g repeat 68 6553
1e20: 36 5d 20 5c 0a 20 20 20 20 63 36 30 30 30 31 38  6] \.    c600018
1e30: 36 61 30 5b 73 74 72 69 6e 67 20 72 65 70 65 61  6a0[string repea
1e40: 74 20 36 39 20 31 30 30 30 30 30 5d 20 5c 0a 5d  t 69 100000] \.]
1e50: 0a 0a 74 63 6c 74 65 73 74 3a 3a 74 65 73 74 20  ..tcltest::test 
1e60: 62 69 6e 2d 75 6e 70 61 63 6b 2d 38 20 62 69 6e  bin-unpack-8 bin
1e70: 20 2d 62 6f 64 79 20 7b 0a 20 20 20 20 6d 73 67   -body {.    msg
1e80: 70 61 63 6b 20 75 6e 70 61 63 6b 20 5b 6d 73 67  pack unpack [msg
1e90: 70 61 63 6b 20 70 61 63 6b 20 62 69 6e 20 68 65  pack pack bin he
1ea0: 6c 6c 6f 5d 0a 7d 20 2d 72 65 73 75 6c 74 20 7b  llo].} -result {
1eb0: 7b 62 69 6e 20 68 65 6c 6c 6f 7d 7d 0a 0a 74 63  {bin hello}}..tc
1ec0: 6c 74 65 73 74 3a 3a 74 65 73 74 20 62 69 6e 2d  ltest::test bin-
1ed0: 75 6e 70 61 63 6b 2d 31 36 20 62 69 6e 20 2d 62  unpack-16 bin -b
1ee0: 6f 64 79 20 7b 0a 20 20 20 20 6d 73 67 70 61 63  ody {.    msgpac
1ef0: 6b 20 75 6e 70 61 63 6b 20 5b 6d 73 67 70 61 63  k unpack [msgpac
1f00: 6b 20 70 61 63 6b 20 62 69 6e 20 68 65 6c 6c 5b  k pack bin hell[
1f10: 73 74 72 69 6e 67 20 72 65 70 65 61 74 20 6f 20  string repeat o 
1f20: 33 30 30 5d 5d 0a 7d 20 2d 6d 61 74 63 68 20 72  300]].} -match r
1f30: 65 67 65 78 70 20 2d 72 65 73 75 6c 74 20 7b 7b  egexp -result {{
1f40: 62 69 6e 20 68 65 6c 6c 6f 7b 31 35 30 7d 6f 7b  bin hello{150}o{
1f50: 31 35 30 7d 7d 7d 0a 0a 74 63 6c 74 65 73 74 3a  150}}}..tcltest:
1f60: 3a 74 65 73 74 20 62 69 6e 2d 75 6e 70 61 63 6b  :test bin-unpack
1f70: 2d 33 32 20 62 69 6e 20 2d 62 6f 64 79 20 7b 0a  -32 bin -body {.
1f80: 20 20 20 20 6d 73 67 70 61 63 6b 20 75 6e 70 61      msgpack unpa
1f90: 63 6b 20 5b 6d 73 67 70 61 63 6b 20 70 61 63 6b  ck [msgpack pack
1fa0: 20 62 69 6e 20 68 65 6c 6c 5b 73 74 72 69 6e 67   bin hell[string
1fb0: 20 72 65 70 65 61 74 20 6f 20 31 30 30 30 30 30   repeat o 100000
1fc0: 5d 5d 0a 7d 20 2d 6d 61 74 63 68 20 72 65 67 65  ]].} -match rege
1fd0: 78 70 20 2d 72 65 73 75 6c 74 20 7b 7b 62 69 6e  xp -result {{bin
1fe0: 20 68 65 6c 6c 6f 2b 7d 7d 0a 0a 0a 74 63 6c 74   hello+}}...tclt
1ff0: 65 73 74 3a 3a 74 65 73 74 20 73 74 72 20 73 74  est::test str st
2000: 72 20 2d 62 6f 64 79 20 7b 0a 20 20 20 20 66 6c  r -body {.    fl
2010: 61 74 6d 61 70 20 76 20 5b 6c 69 73 74 20 5c 0a  atmap v [list \.
2020: 20 20 20 20 20 20 20 20 7b 7d 20 61 20 62 62 20          {} a bb 
2030: 63 63 63 20 64 64 64 64 20 5b 73 74 72 69 6e 67  ccc dddd [string
2040: 20 72 65 70 65 61 74 20 65 20 33 31 5d 20 5b 73   repeat e 31] [s
2050: 74 72 69 6e 67 20 72 65 70 65 61 74 20 65 20 33  tring repeat e 3
2060: 32 5d 20 5c 0a 20 20 20 20 20 20 20 20 5b 73 74  2] \.        [st
2070: 72 69 6e 67 20 72 65 70 65 61 74 20 66 20 33 33  ring repeat f 33
2080: 5d 20 5b 73 74 72 69 6e 67 20 72 65 70 65 61 74  ] [string repeat
2090: 20 67 20 36 35 35 33 35 5d 20 5b 73 74 72 69 6e   g 65535] [strin
20a0: 67 20 72 65 70 65 61 74 20 68 20 36 35 35 33 36  g repeat h 65536
20b0: 5d 20 5c 0a 20 20 20 20 20 20 20 20 5b 73 74 72  ] \.        [str
20c0: 69 6e 67 20 72 65 70 65 61 74 20 69 20 31 30 30  ing repeat i 100
20d0: 30 30 30 5d 20 5c 0a 20 20 20 20 5d 20 7b 0a 20  000] \.    ] {. 
20e0: 20 20 20 20 20 20 20 20 20 20 20 62 69 6e 61 72             binar
20f0: 79 20 65 6e 63 6f 64 65 20 68 65 78 20 5b 6d 73  y encode hex [ms
2100: 67 70 61 63 6b 20 70 61 63 6b 20 73 74 72 20 24  gpack pack str $
2110: 76 5d 0a 20 20 20 20 7d 0a 7d 20 2d 72 65 73 75  v].    }.} -resu
2120: 6c 74 20 5b 6c 69 73 74 20 5c 0a 20 20 20 20 61  lt [list \.    a
2130: 30 20 5c 0a 20 20 20 20 61 31 36 31 20 5c 0a 20  0 \.    a161 \. 
2140: 20 20 20 61 32 36 32 36 32 20 5c 0a 20 20 20 20     a26262 \.    
2150: 61 33 36 33 36 33 36 33 20 5c 0a 20 20 20 20 61  a3636363 \.    a
2160: 34 36 34 36 34 36 34 36 34 20 5c 0a 20 20 20 20  464646464 \.    
2170: 62 66 5b 73 74 72 69 6e 67 20 72 65 70 65 61 74  bf[string repeat
2180: 20 36 35 20 33 31 5d 20 5c 0a 20 20 20 20 64 39   65 31] \.    d9
2190: 32 30 5b 73 74 72 69 6e 67 20 72 65 70 65 61 74  20[string repeat
21a0: 20 36 35 20 33 32 5d 20 5c 0a 20 20 20 20 64 39   65 32] \.    d9
21b0: 32 31 5b 73 74 72 69 6e 67 20 72 65 70 65 61 74  21[string repeat
21c0: 20 36 36 20 33 33 5d 20 5c 0a 20 20 20 20 64 61   66 33] \.    da
21d0: 66 66 66 66 5b 73 74 72 69 6e 67 20 72 65 70 65  ffff[string repe
21e0: 61 74 20 36 37 20 36 35 35 33 35 5d 20 5c 0a 20  at 67 65535] \. 
21f0: 20 20 20 64 62 30 30 30 31 30 30 30 30 5b 73 74     db00010000[st
2200: 72 69 6e 67 20 72 65 70 65 61 74 20 36 38 20 36  ring repeat 68 6
2210: 35 35 33 36 5d 20 5c 0a 20 20 20 20 64 62 30 30  5536] \.    db00
2220: 30 31 38 36 61 30 5b 73 74 72 69 6e 67 20 72 65  0186a0[string re
2230: 70 65 61 74 20 36 39 20 31 30 30 30 30 30 5d 20  peat 69 100000] 
2240: 5c 0a 5d 0a 0a 74 63 6c 74 65 73 74 3a 3a 74 65  \.]..tcltest::te
2250: 73 74 20 73 74 72 2d 75 6e 70 61 63 6b 2d 38 20  st str-unpack-8 
2260: 73 74 72 20 2d 62 6f 64 79 20 7b 0a 20 20 20 20  str -body {.    
2270: 6d 73 67 70 61 63 6b 20 75 6e 70 61 63 6b 20 5b  msgpack unpack [
2280: 6d 73 67 70 61 63 6b 20 70 61 63 6b 20 73 74 72  msgpack pack str
2290: 20 68 65 6c 6c 6f 5d 0a 7d 20 2d 72 65 73 75 6c   hello].} -resul
22a0: 74 20 7b 7b 73 74 72 20 68 65 6c 6c 6f 7d 7d 0a  t {{str hello}}.
22b0: 0a 74 63 6c 74 65 73 74 3a 3a 74 65 73 74 20 73  .tcltest::test s
22c0: 74 72 2d 75 6e 70 61 63 6b 2d 31 36 20 73 74 72  tr-unpack-16 str
22d0: 20 2d 62 6f 64 79 20 7b 0a 20 20 20 20 6d 73 67   -body {.    msg
22e0: 70 61 63 6b 20 75 6e 70 61 63 6b 20 5b 6d 73 67  pack unpack [msg
22f0: 70 61 63 6b 20 70 61 63 6b 20 73 74 72 20 68 65  pack pack str he
2300: 6c 6c 5b 73 74 72 69 6e 67 20 72 65 70 65 61 74  ll[string repeat
2310: 20 6f 20 33 30 30 5d 5d 0a 7d 20 2d 6d 61 74 63   o 300]].} -matc
2320: 68 20 72 65 67 65 78 70 20 2d 72 65 73 75 6c 74  h regexp -result
2330: 20 7b 7b 73 74 72 20 68 65 6c 6c 6f 7b 31 35 30   {{str hello{150
2340: 7d 6f 7b 31 35 30 7d 7d 7d 0a 0a 74 63 6c 74 65  }o{150}}}..tclte
2350: 73 74 3a 3a 74 65 73 74 20 73 74 72 2d 75 6e 70  st::test str-unp
2360: 61 63 6b 2d 33 32 20 73 74 72 20 2d 62 6f 64 79  ack-32 str -body
2370: 20 7b 0a 20 20 20 20 6d 73 67 70 61 63 6b 20 75   {.    msgpack u
2380: 6e 70 61 63 6b 20 5b 6d 73 67 70 61 63 6b 20 70  npack [msgpack p
2390: 61 63 6b 20 73 74 72 20 68 65 6c 6c 5b 73 74 72  ack str hell[str
23a0: 69 6e 67 20 72 65 70 65 61 74 20 6f 20 31 30 30  ing repeat o 100
23b0: 30 30 30 5d 5d 0a 7d 20 2d 6d 61 74 63 68 20 72  000]].} -match r
23c0: 65 67 65 78 70 20 2d 72 65 73 75 6c 74 20 7b 7b  egexp -result {{
23d0: 73 74 72 20 68 65 6c 6c 6f 2b 7d 7d 0a 0a 0a 74  str hello+}}...t
23e0: 63 6c 74 65 73 74 3a 3a 74 65 73 74 20 61 72 72  cltest::test arr
23f0: 61 79 2d 6c 69 73 74 20 61 72 72 61 79 2d 6c 69  ay-list array-li
2400: 73 74 20 2d 62 6f 64 79 20 7b 0a 20 20 20 20 73  st -body {.    s
2410: 65 74 20 6e 20 31 30 0a 20 20 20 20 73 65 74 20  et n 10.    set 
2420: 74 74 20 7b 7d 0a 0a 20 20 20 20 61 70 70 65 6e  tt {}..    appen
2430: 64 20 74 74 20 5b 6d 73 67 70 61 63 6b 20 70 61  d tt [msgpack pa
2440: 63 6b 20 61 72 72 61 79 20 24 6e 5d 0a 0a 20 20  ck array $n]..  
2450: 20 20 73 65 74 20 6c 20 7b 7d 0a 20 20 20 20 66    set l {}.    f
2460: 6f 72 20 7b 73 65 74 20 69 20 30 7d 20 7b 24 69  or {set i 0} {$i
2470: 20 3c 20 24 6e 7d 20 7b 69 6e 63 72 20 69 7d 20   < $n} {incr i} 
2480: 7b 0a 20 20 20 20 20 20 20 20 73 65 74 20 76 20  {.        set v 
2490: 5b 65 78 70 72 20 7b 69 6e 74 28 65 78 70 28 24  [expr {int(exp($
24a0: 69 20 2b 20 24 6e 29 29 20 25 20 31 30 30 30 30  i + $n)) % 10000
24b0: 30 7d 5d 0a 20 20 20 20 20 20 20 20 6c 61 70 70  0}].        lapp
24c0: 65 6e 64 20 6c 20 24 76 0a 20 20 20 20 20 20 20  end l $v.       
24d0: 20 61 70 70 65 6e 64 20 74 74 20 5b 6d 73 67 70   append tt [msgp
24e0: 61 63 6b 20 70 61 63 6b 20 69 6e 74 20 24 76 5d  ack pack int $v]
24f0: 0a 20 20 20 20 7d 0a 20 20 20 20 61 70 70 65 6e  .    }.    appen
2500: 64 20 74 74 20 5b 6d 73 67 70 61 63 6b 20 70 61  d tt [msgpack pa
2510: 63 6b 20 74 72 75 65 5d 0a 0a 20 20 20 20 23 20  ck true]..    # 
2520: 54 65 73 74 20 6c 69 73 74 0a 20 20 20 20 73 65  Test list.    se
2530: 74 20 74 74 32 20 5b 6d 73 67 70 61 63 6b 20 70  t tt2 [msgpack p
2540: 61 63 6b 20 6c 69 73 74 20 69 6e 74 20 24 6c 5d  ack list int $l]
2550: 0a 20 20 20 20 61 70 70 65 6e 64 20 74 74 32 20  .    append tt2 
2560: 5b 6d 73 67 70 61 63 6b 20 70 61 63 6b 20 74 72  [msgpack pack tr
2570: 75 65 5d 0a 0a 20 20 20 20 6c 69 73 74 20 5b 73  ue]..    list [s
2580: 74 72 69 6e 67 20 65 71 75 61 6c 20 24 74 74 20  tring equal $tt 
2590: 24 74 74 32 5d 20 5b 62 69 6e 61 72 79 20 65 6e  $tt2] [binary en
25a0: 63 6f 64 65 20 68 65 78 20 24 74 74 5d 0a 7d 20  code hex $tt].} 
25b0: 2d 72 65 73 75 6c 74 20 7b 31 20 39 61 63 64 35  -result {1 9acd5
25c0: 36 30 61 63 64 65 39 65 32 63 64 66 35 32 32 63  60acde9e2cdf522c
25d0: 64 61 35 61 64 63 64 30 61 32 63 63 65 30 30 30  da5adcd0a2cce000
25e0: 31 30 64 39 39 63 65 30 30 30 31 35 30 35 65 63  10d99ce0001505ec
25f0: 64 64 36 61 38 63 64 65 61 34 31 63 65 30 30 30  dd6a8cdea41ce000
2600: 31 34 31 37 63 63 33 7d 0a 0a 0a 74 63 6c 74 65  1417cc3}...tclte
2610: 73 74 3a 3a 74 65 73 74 20 6d 61 70 2d 64 69 63  st::test map-dic
2620: 74 2d 74 63 6c 5f 61 72 72 61 79 2d 31 30 2d 33  t-tcl_array-10-3
2630: 31 2d 33 32 20 6d 61 70 2d 64 69 63 74 2d 74 63  1-32 map-dict-tc
2640: 6c 5f 61 72 72 61 79 2d 31 30 2d 33 31 2d 33 32  l_array-10-31-32
2650: 20 2d 62 6f 64 79 20 7b 0a 20 20 20 20 66 6c 61   -body {.    fla
2660: 74 6d 61 70 20 6e 20 7b 31 30 20 33 31 20 33 32  tmap n {10 31 32
2670: 7d 20 7b 0a 20 20 20 20 20 20 20 20 6c 61 73 73  } {.        lass
2680: 69 67 6e 20 5b 74 65 73 74 5f 6d 61 70 20 24 6e  ign [test_map $n
2690: 5d 20 65 71 31 20 65 71 32 20 74 74 0a 20 20 20  ] eq1 eq2 tt.   
26a0: 20 20 20 20 20 6c 69 73 74 20 24 65 71 31 20 24       list $eq1 $
26b0: 65 71 32 20 5b 62 69 6e 61 72 79 20 65 6e 63 6f  eq2 [binary enco
26c0: 64 65 20 68 65 78 20 24 74 74 5d 0a 20 20 20 20  de hex $tt].    
26d0: 7d 0a 7d 20 2d 72 65 73 75 6c 74 20 5b 6c 69 73  }.} -result [lis
26e0: 74 20 5c 0a 20 20 20 20 31 20 31 20 38 61 64 32  t \.    1 1 8ad2
26f0: 66 66 64 35 35 64 35 36 64 32 66 66 66 66 32 62  ffd55d56d2ffff2b
2700: 37 65 64 32 66 66 38 63 38 35 36 38 64 32 66 66  7ed2ff8c8568d2ff
2710: 66 66 32 62 37 65 64 32 66 66 36 64 61 65 30 36  ff2b7ed2ff6dae06
2720: 64 32 66 66 66 66 32 62 37 65 30 30 64 32 66 66  d2ffff2b7e00d2ff
2730: 66 66 32 62 37 65 63 65 30 30 31 35 38 38 38 30  ff2b7ece00158880
2740: 64 32 66 66 66 66 32 62 37 65 63 65 30 30 33 65  d2ffff2b7ece003e
2750: 65 32 36 30 64 32 66 66 66 66 32 62 37 65 63 65  e260d2ffff2b7ece
2760: 30 30 36 34 33 66 38 39 64 32 66 66 66 66 32 62  00643f89d2ffff2b
2770: 37 65 63 65 30 30 38 30 36 35 66 35 64 32 66 66  7ece008065f5d2ff
2780: 66 66 32 62 37 65 63 65 30 30 38 61 62 66 36 65  ff2b7ece008abf6e
2790: 64 32 66 66 66 66 32 62 37 65 63 65 30 30 39 36  d2ffff2b7ece0096
27a0: 66 36 63 65 64 32 66 66 66 66 32 62 37 65 63 33  f6ced2ffff2b7ec3
27b0: 20 5c 0a 20 20 20 20 31 20 31 20 64 65 30 30 31   \.    1 1 de001
27c0: 66 64 32 66 66 66 65 61 36 33 66 64 32 66 66 66  fd2fffea63fd2fff
27d0: 66 36 32 32 64 64 32 66 66 65 62 63 65 30 33 64  f622dd2ffebce03d
27e0: 32 66 66 66 66 36 32 32 64 64 32 66 66 64 35 35  2ffff622dd2ffd55
27f0: 64 35 36 64 32 66 66 66 66 36 32 32 64 64 32 66  d56d2ffff622dd2f
2800: 66 64 34 31 31 63 37 64 32 66 66 66 66 36 32 32  fd411c7d2ffff622
2810: 64 64 32 66 66 61 65 32 30 31 66 64 32 66 66 66  dd2ffae201fd2fff
2820: 66 36 32 32 64 64 32 66 66 61 63 66 64 32 64 64  f622dd2ffacfd2dd
2830: 32 66 66 66 66 36 32 32 64 64 32 66 66 39 61 62  2ffff622dd2ff9ab
2840: 63 63 65 64 32 66 66 66 66 36 32 32 64 64 32 66  cced2ffff622dd2f
2850: 66 38 64 36 38 39 30 64 32 66 66 66 66 36 32 32  f8d6890d2ffff622
2860: 64 64 32 66 66 38 63 38 35 36 38 64 32 66 66 66  dd2ff8c8568d2fff
2870: 66 36 32 32 64 64 32 66 66 37 65 65 30 38 34 64  f622dd2ff7ee084d
2880: 32 66 66 66 66 36 32 32 64 64 32 66 66 37 35 64  2ffff622dd2ff75d
2890: 31 64 39 64 32 66 66 66 66 36 32 32 64 64 32 66  1d9d2ffff622dd2f
28a0: 66 36 64 61 65 30 36 64 32 66 66 66 66 36 32 32  f6dae06d2ffff622
28b0: 64 64 32 66 66 36 64 34 64 36 61 64 32 66 66 66  dd2ff6d4d6ad2fff
28c0: 66 36 32 32 64 64 32 66 66 36 39 33 64 30 34 64  f622dd2ff693d04d
28d0: 32 66 66 66 66 36 32 32 64 64 32 66 66 36 37 36  2ffff622dd2ff676
28e0: 39 65 32 64 32 66 66 66 66 36 32 32 64 30 30 64  9e2d2ffff622d00d
28f0: 32 66 66 66 66 36 32 32 64 63 65 30 30 31 35 38  2ffff622dce00158
2900: 38 38 30 64 32 66 66 66 66 36 32 32 64 63 65 30  880d2ffff622dce0
2910: 30 31 36 64 65 39 34 64 32 66 66 66 66 36 32 32  016de94d2ffff622
2920: 64 63 65 30 30 32 39 35 36 34 31 64 32 66 66 66  dce00295641d2fff
2930: 66 36 32 32 64 63 65 30 30 33 65 65 32 36 30 64  f622dce003ee260d
2940: 32 66 66 66 66 36 32 32 64 63 65 30 30 34 30 31  2ffff622dce00401
2950: 63 63 36 64 32 66 66 66 66 36 32 32 64 63 65 30  cc6d2ffff622dce0
2960: 30 36 33 33 39 64 65 64 32 66 66 66 66 36 32 32  06339ded2ffff622
2970: 64 63 65 30 30 36 34 33 66 38 39 64 32 66 66 66  dce00643f89d2fff
2980: 66 36 32 32 64 63 65 30 30 37 34 35 62 37 30 64  f622dce00745b70d
2990: 32 66 66 66 66 36 32 32 64 63 65 30 30 37 66 61  2ffff622dce007fa
29a0: 39 64 63 64 32 66 66 66 66 36 32 32 64 63 65 30  9dcd2ffff622dce0
29b0: 30 38 30 36 35 66 35 64 32 66 66 66 66 36 32 32  08065f5d2ffff622
29c0: 64 63 65 30 30 38 61 62 66 36 65 64 32 66 66 66  dce008abf6ed2fff
29d0: 66 36 32 32 64 63 65 30 30 38 62 34 64 65 63 64  f622dce008b4decd
29e0: 32 66 66 66 66 36 32 32 64 63 65 30 30 39 31 65  2ffff622dce0091e
29f0: 65 36 66 64 32 66 66 66 66 36 32 32 64 63 65 30  e6fd2ffff622dce0
2a00: 30 39 36 66 36 63 65 64 32 66 66 66 66 36 32 32  096f6ced2ffff622
2a10: 64 63 65 30 30 39 37 32 37 39 39 64 32 66 66 66  dce00972799d2fff
2a20: 66 36 32 32 64 63 33 20 5c 0a 20 20 20 20 31 20  f622dc3 \.    1 
2a30: 31 20 64 65 30 30 32 30 64 32 66 66 66 65 61 36  1 de0020d2fffea6
2a40: 33 66 63 64 64 37 36 36 64 32 66 66 65 62 63 65  3fcdd766d2ffebce
2a50: 30 33 63 64 64 37 36 36 64 32 66 66 64 35 35 64  03cdd766d2ffd55d
2a60: 35 36 63 64 64 37 36 36 64 32 66 66 64 34 31 31  56cdd766d2ffd411
2a70: 63 37 63 64 64 37 36 36 64 32 66 66 63 32 35 39  c7cdd766d2ffc259
2a80: 34 38 63 64 64 37 36 36 64 32 66 66 61 65 32 30  48cdd766d2ffae20
2a90: 31 66 63 64 64 37 36 36 64 32 66 66 61 63 66 64  1fcdd766d2ffacfd
2aa0: 32 64 63 64 64 37 36 36 64 32 66 66 39 61 62 63  2dcdd766d2ff9abc
2ab0: 63 65 63 64 64 37 36 36 64 32 66 66 38 64 36 38  cecdd766d2ff8d68
2ac0: 39 30 63 64 64 37 36 36 64 32 66 66 38 63 38 35  90cdd766d2ff8c85
2ad0: 36 38 63 64 64 37 36 36 64 32 66 66 37 65 65 30  68cdd766d2ff7ee0
2ae0: 38 34 63 64 64 37 36 36 64 32 66 66 37 35 64 31  84cdd766d2ff75d1
2af0: 64 39 63 64 64 37 36 36 64 32 66 66 36 64 61 65  d9cdd766d2ff6dae
2b00: 30 36 63 64 64 37 36 36 64 32 66 66 36 64 34 64  06cdd766d2ff6d4d
2b10: 36 61 63 64 64 37 36 36 64 32 66 66 36 39 33 64  6acdd766d2ff693d
2b20: 30 34 63 64 64 37 36 36 64 32 66 66 36 37 36 39  04cdd766d2ff6769
2b30: 65 32 63 64 64 37 36 36 30 30 63 64 64 37 36 36  e2cdd76600cdd766
2b40: 63 65 30 30 31 35 38 38 38 30 63 64 64 37 36 36  ce00158880cdd766
2b50: 63 65 30 30 31 36 64 65 39 34 63 64 64 37 36 36  ce0016de94cdd766
2b60: 63 65 30 30 32 39 35 36 34 31 63 64 64 37 36 36  ce00295641cdd766
2b70: 63 65 30 30 33 65 65 32 36 30 63 64 64 37 36 36  ce003ee260cdd766
2b80: 63 65 30 30 34 30 31 63 63 36 63 64 64 37 36 36  ce00401cc6cdd766
2b90: 63 65 30 30 36 33 33 39 64 65 63 64 64 37 36 36  ce006339decdd766
2ba0: 63 65 30 30 36 34 33 66 38 39 63 64 64 37 36 36  ce00643f89cdd766
2bb0: 63 65 30 30 37 34 35 62 37 30 63 64 64 37 36 36  ce00745b70cdd766
2bc0: 63 65 30 30 37 66 61 39 64 63 63 64 64 37 36 36  ce007fa9dccdd766
2bd0: 63 65 30 30 38 30 36 35 66 35 63 64 64 37 36 36  ce008065f5cdd766
2be0: 63 65 30 30 38 61 62 66 36 65 63 64 64 37 36 36  ce008abf6ecdd766
2bf0: 63 65 30 30 38 62 34 64 65 63 63 64 64 37 36 36  ce008b4deccdd766
2c00: 63 65 30 30 39 31 65 65 36 66 63 64 64 37 36 36  ce0091ee6fcdd766
2c10: 63 65 30 30 39 36 66 36 63 65 63 64 64 37 36 36  ce0096f6cecdd766
2c20: 63 65 30 30 39 37 32 37 39 39 63 64 64 37 36 36  ce00972799cdd766
2c30: 63 33 20 5c 0a 5d 0a 0a 74 63 6c 74 65 73 74 3a  c3 \.]..tcltest:
2c40: 3a 74 65 73 74 20 6d 61 70 2d 64 69 63 74 2d 74  :test map-dict-t
2c50: 63 6c 5f 61 72 72 61 79 2d 36 35 35 33 35 20 6d  cl_array-65535 m
2c60: 61 70 2d 64 69 63 74 2d 74 63 6c 5f 61 72 72 61  ap-dict-tcl_arra
2c70: 79 2d 36 35 35 33 35 20 2d 62 6f 64 79 20 7b 0a  y-65535 -body {.
2c80: 20 20 20 20 6c 72 61 6e 67 65 20 5b 74 65 73 74      lrange [test
2c90: 5f 6d 61 70 20 36 35 35 33 35 5d 20 30 20 31 0a  _map 65535] 0 1.
2ca0: 7d 20 2d 72 65 73 75 6c 74 20 7b 31 20 31 7d 20  } -result {1 1} 
2cb0: 2d 63 6f 6e 73 74 72 61 69 6e 74 73 20 73 6c 6f  -constraints slo
2cc0: 77 54 65 73 74 73 0a 0a 74 63 6c 74 65 73 74 3a  wTests..tcltest:
2cd0: 3a 74 65 73 74 20 6d 61 70 2d 64 69 63 74 2d 74  :test map-dict-t
2ce0: 63 6c 5f 61 72 72 61 79 2d 36 35 35 33 36 20 6d  cl_array-65536 m
2cf0: 61 70 2d 64 69 63 74 2d 74 63 6c 5f 61 72 72 61  ap-dict-tcl_arra
2d00: 79 2d 36 35 35 33 36 7d 20 2d 62 6f 64 79 20 7b  y-65536} -body {
2d10: 0a 20 20 20 20 6c 72 61 6e 67 65 20 5b 74 65 73  .    lrange [tes
2d20: 74 5f 6d 61 70 20 36 35 35 33 36 5d 20 30 20 31  t_map 65536] 0 1
2d30: 0a 7d 20 2d 72 65 73 75 6c 74 20 7b 31 20 31 7d  .} -result {1 1}
2d40: 20 2d 63 6f 6e 73 74 72 61 69 6e 74 73 20 73 6c   -constraints sl
2d50: 6f 77 54 65 73 74 73 0a 0a 0a 74 63 6c 74 65 73  owTests...tcltes
2d60: 74 3a 3a 74 65 73 74 20 6e 65 73 74 65 64 2d 31  t::test nested-1
2d70: 20 6e 65 73 74 65 64 20 2d 62 6f 64 79 20 7b 0a   nested -body {.
2d80: 20 20 20 20 73 65 74 20 74 74 20 7b 7d 0a 20 20      set tt {}.  
2d90: 20 20 61 70 70 65 6e 64 20 74 74 20 5b 6d 73 67    append tt [msg
2da0: 70 61 63 6b 20 70 61 63 6b 20 61 72 72 61 79 20  pack pack array 
2db0: 36 5d 0a 20 20 20 20 61 70 70 65 6e 64 20 74 74  6].    append tt
2dc0: 20 5b 6d 73 67 70 61 63 6b 20 70 61 63 6b 20 69   [msgpack pack i
2dd0: 6e 74 20 35 5d 0a 20 20 20 20 61 70 70 65 6e 64  nt 5].    append
2de0: 20 74 74 20 5b 6d 73 67 70 61 63 6b 20 70 61 63   tt [msgpack pac
2df0: 6b 20 73 74 72 20 76 69 6a 66 5d 0a 20 20 20 20  k str vijf].    
2e00: 61 70 70 65 6e 64 20 74 74 20 5b 6d 73 67 70 61  append tt [msgpa
2e10: 63 6b 20 70 61 63 6b 20 69 6e 74 20 36 5d 0a 20  ck pack int 6]. 
2e20: 20 20 20 61 70 70 65 6e 64 20 74 74 20 5b 6d 73     append tt [ms
2e30: 67 70 61 63 6b 20 70 61 63 6b 20 64 69 63 74 20  gpack pack dict 
2e40: 69 6e 74 20 73 74 72 20 7b 31 20 74 77 65 65 20  int str {1 twee 
2e50: 33 20 76 69 65 72 7d 5d 0a 20 20 20 20 61 70 70  3 vier}].    app
2e60: 65 6e 64 20 74 74 20 5b 6d 73 67 70 61 63 6b 20  end tt [msgpack 
2e70: 70 61 63 6b 20 69 6e 74 20 37 5d 0a 20 20 20 20  pack int 7].    
2e80: 61 70 70 65 6e 64 20 74 74 20 5b 6d 73 67 70 61  append tt [msgpa
2e90: 63 6b 20 70 61 63 6b 20 73 74 72 20 7a 65 76 65  ck pack str zeve
2ea0: 6e 5d 0a 0a 20 20 20 20 6d 73 67 70 61 63 6b 20  n]..    msgpack 
2eb0: 75 6e 70 61 63 6b 20 24 74 74 0a 7d 20 2d 72 65  unpack $tt.} -re
2ec0: 73 75 6c 74 20 7b 7b 61 72 72 61 79 20 7b 7b 69  sult {{array {{i
2ed0: 6e 74 65 67 65 72 20 35 7d 20 7b 73 74 72 20 76  nteger 5} {str v
2ee0: 69 6a 66 7d 20 7b 69 6e 74 65 67 65 72 20 36 7d  ijf} {integer 6}
2ef0: 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 6d  \.            {m
2f00: 61 70 20 7b 7b 69 6e 74 65 67 65 72 20 31 7d 20  ap {{integer 1} 
2f10: 7b 73 74 72 20 74 77 65 65 7d 20 7b 69 6e 74 65  {str twee} {inte
2f20: 67 65 72 20 33 7d 20 7b 73 74 72 20 76 69 65 72  ger 3} {str vier
2f30: 7d 7d 7d 5c 0a 20 20 20 20 20 20 20 20 20 20 20  }}}\.           
2f40: 20 7b 69 6e 74 65 67 65 72 20 37 7d 20 7b 73 74   {integer 7} {st
2f50: 72 20 7a 65 76 65 6e 7d 7d 7d 7d 0a 0a 74 63 6c  r zeven}}}}..tcl
2f60: 74 65 73 74 3a 3a 74 65 73 74 20 6e 65 73 74 65  test::test neste
2f70: 64 2d 32 20 6e 65 73 74 65 64 20 2d 62 6f 64 79  d-2 nested -body
2f80: 20 7b 0a 20 20 20 20 6d 73 67 70 61 63 6b 20 75   {.    msgpack u
2f90: 6e 70 61 63 6b 20 5b 62 69 6e 61 72 79 20 64 65  npack [binary de
2fa0: 63 6f 64 65 20 68 65 78 20 38 32 61 37 36 33 36  code hex 82a7636
2fb0: 63 36 39 36 35 36 65 37 34 37 33 38 32 61 34 36  c69656e747382a46
2fc0: 34 36 31 37 34 36 31 39 34 63 34 30 35 36 37 36  461746194c405676
2fd0: 31 36 64 36 64 36 31 63 34 30 35 36 34 36 35 36  16d6d61c40564656
2fe0: 63 37 34 36 31 30 31 30 32 61 35 36 38 36 66 37  c74610102a5686f7
2ff0: 33 37 34 37 33 39 32 63 34 30 35 36 31 36 63 37  3747392c405616c7
3000: 30 36 38 36 31 63 34 30 35 36 66 36 64 36 35 36  06861c4056f6d656
3010: 37 36 31 61 38 36 34 36 31 37 34 36 31 36 32 36  761a864617461626
3020: 31 37 33 36 35 38 33 61 65 36 33 36 66 36 65 36  1736583ae636f6e6
3030: 65 36 35 36 33 37 34 36 39 36 66 36 65 35 66 36  e656374696f6e5f6
3040: 64 36 31 37 38 63 64 31 33 38 38 61 37 36 35 36  d6178cd1388a7656
3050: 65 36 31 36 32 36 63 36 35 36 34 63 33 61 35 37  e61626c6564c3a57
3060: 30 36 66 37 32 37 34 37 33 39 33 63 64 31 66 34  06f72747393cd1f4
3070: 31 63 64 31 66 34 31 63 64 31 66 34 32 5d 0a 7d  1cd1f41cd1f42].}
3080: 20 2d 72 65 73 75 6c 74 20 7b 7b 6d 61 70 20 7b   -result {{map {
3090: 7b 73 74 72 20 63 6c 69 65 6e 74 73 7d 20 7b 6d  {str clients} {m
30a0: 61 70 20 7b 7b 73 74 72 20 64 61 74 61 7d 20 7b  ap {{str data} {
30b0: 61 72 72 61 79 20 7b 7b 62 69 6e 20 67 61 6d 6d  array {{bin gamm
30c0: 61 7d 20 7b 62 69 6e 20 64 65 6c 74 61 7d 20 7b  a} {bin delta} {
30d0: 69 6e 74 65 67 65 72 20 31 7d 20 7b 69 6e 74 65  integer 1} {inte
30e0: 67 65 72 20 32 7d 7d 7d 20 7b 73 74 72 20 68 6f  ger 2}}} {str ho
30f0: 73 74 73 7d 20 7b 61 72 72 61 79 20 7b 7b 62 69  sts} {array {{bi
3100: 6e 20 61 6c 70 68 61 7d 20 7b 62 69 6e 20 6f 6d  n alpha} {bin om
3110: 65 67 61 7d 7d 7d 7d 7d 20 7b 73 74 72 20 64 61  ega}}}}} {str da
3120: 74 61 62 61 73 65 7d 20 7b 6d 61 70 20 7b 7b 73  tabase} {map {{s
3130: 74 72 20 63 6f 6e 6e 65 63 74 69 6f 6e 5f 6d 61  tr connection_ma
3140: 78 7d 20 7b 69 6e 74 65 67 65 72 20 35 30 30 30  x} {integer 5000
3150: 7d 20 7b 73 74 72 20 65 6e 61 62 6c 65 64 7d 20  } {str enabled} 
3160: 7b 62 6f 6f 6c 65 61 6e 20 31 7d 20 7b 73 74 72  {boolean 1} {str
3170: 20 70 6f 72 74 73 7d 20 7b 61 72 72 61 79 20 7b   ports} {array {
3180: 7b 69 6e 74 65 67 65 72 20 38 30 30 31 7d 20 7b  {integer 8001} {
3190: 69 6e 74 65 67 65 72 20 38 30 30 31 7d 20 7b 69  integer 8001} {i
31a0: 6e 74 65 67 65 72 20 38 30 30 32 7d 7d 7d 7d 7d  nteger 8002}}}}}
31b0: 7d 7d 7d 0a 0a 0a 74 63 6c 74 65 73 74 3a 3a 74  }}}...tcltest::t
31c0: 65 73 74 20 66 69 78 5f 65 78 74 31 20 66 69 78  est fix_ext1 fix
31d0: 5f 65 78 74 31 20 2d 62 6f 64 79 20 7b 0a 20 20  _ext1 -body {.  
31e0: 20 20 73 65 74 20 65 6e 63 20 7b 7d 0a 20 20 20    set enc {}.   
31f0: 20 6c 61 70 70 65 6e 64 20 65 6e 63 20 5b 6d 73   lappend enc [ms
3200: 67 70 61 63 6b 20 70 61 63 6b 20 66 69 78 5f 65  gpack pack fix_e
3210: 78 74 31 20 34 32 20 21 5d 0a 20 20 20 20 6c 61  xt1 42 !].    la
3220: 70 70 65 6e 64 20 65 6e 63 20 5b 6d 73 67 70 61  ppend enc [msgpa
3230: 63 6b 20 70 61 63 6b 20 66 69 78 5f 65 78 74 31  ck pack fix_ext1
3240: 20 2d 35 20 5c 78 46 46 5d 0a 0a 20 20 20 20 73   -5 \xFF]..    s
3250: 65 74 20 64 65 63 20 5b 6c 6d 61 70 20 78 20 24  et dec [lmap x $
3260: 65 6e 63 20 7b 6d 73 67 70 61 63 6b 20 75 6e 70  enc {msgpack unp
3270: 61 63 6b 20 24 78 7d 5d 0a 0a 20 20 20 20 63 6f  ack $x}]..    co
3280: 6e 63 61 74 20 5b 6c 6d 61 70 20 78 20 24 65 6e  ncat [lmap x $en
3290: 63 20 7b 62 69 6e 61 72 79 20 65 6e 63 6f 64 65  c {binary encode
32a0: 20 68 65 78 20 24 78 7d 5d 20 24 64 65 63 0a 7d   hex $x}] $dec.}
32b0: 20 2d 72 65 73 75 6c 74 20 22 64 34 32 61 32 31   -result "d42a21
32c0: 20 64 34 66 62 66 66 20 7b 7b 65 78 74 20 34 32   d4fbff {{ext 42
32d0: 20 21 7d 7d 20 7b 7b 65 78 74 20 2d 35 20 5c 78   !}} {{ext -5 \x
32e0: 46 46 7d 7d 22 0a 0a 74 63 6c 74 65 73 74 3a 3a  FF}}"..tcltest::
32f0: 74 65 73 74 20 66 69 78 5f 65 78 74 32 20 66 69  test fix_ext2 fi
3300: 78 5f 65 78 74 32 20 2d 62 6f 64 79 20 7b 0a 20  x_ext2 -body {. 
3310: 20 20 20 73 65 74 20 65 6e 63 20 7b 7d 0a 20 20     set enc {}.  
3320: 20 20 6c 61 70 70 65 6e 64 20 65 6e 63 20 5b 6d    lappend enc [m
3330: 73 67 70 61 63 6b 20 70 61 63 6b 20 66 69 78 5f  sgpack pack fix_
3340: 65 78 74 32 20 34 32 20 21 5d 0a 20 20 20 20 6c  ext2 42 !].    l
3350: 61 70 70 65 6e 64 20 65 6e 63 20 5b 6d 73 67 70  append enc [msgp
3360: 61 63 6b 20 70 61 63 6b 20 66 69 78 5f 65 78 74  ack pack fix_ext
3370: 32 20 33 20 5c 78 43 41 5c 78 46 45 5d 0a 0a 20  2 3 \xCA\xFE].. 
3380: 20 20 20 73 65 74 20 64 65 63 20 5b 6c 6d 61 70     set dec [lmap
3390: 20 78 20 24 65 6e 63 20 7b 6d 73 67 70 61 63 6b   x $enc {msgpack
33a0: 20 75 6e 70 61 63 6b 20 24 78 7d 5d 0a 0a 20 20   unpack $x}]..  
33b0: 20 20 63 6f 6e 63 61 74 20 5b 6c 6d 61 70 20 78    concat [lmap x
33c0: 20 24 65 6e 63 20 7b 62 69 6e 61 72 79 20 65 6e   $enc {binary en
33d0: 63 6f 64 65 20 68 65 78 20 24 78 7d 5d 20 24 64  code hex $x}] $d
33e0: 65 63 0a 7d 20 2d 72 65 73 75 6c 74 20 22 64 35  ec.} -result "d5
33f0: 32 61 32 31 30 30 20 64 35 30 33 63 61 66 65 20  2a2100 d503cafe 
3400: 7b 7b 65 78 74 20 34 32 20 21 5c 78 30 30 7d 7d  {{ext 42 !\x00}}
3410: 20 7b 7b 65 78 74 20 33 20 5c 78 43 41 5c 78 46   {{ext 3 \xCA\xF
3420: 45 7d 7d 22 0a 0a 74 63 6c 74 65 73 74 3a 3a 74  E}}"..tcltest::t
3430: 65 73 74 20 66 69 78 5f 65 78 74 34 20 66 69 78  est fix_ext4 fix
3440: 5f 65 78 74 34 20 2d 62 6f 64 79 20 7b 0a 20 20  _ext4 -body {.  
3450: 20 20 73 65 74 20 65 6e 63 20 7b 7d 0a 20 20 20    set enc {}.   
3460: 20 6c 61 70 70 65 6e 64 20 65 6e 63 20 5b 6d 73   lappend enc [ms
3470: 67 70 61 63 6b 20 70 61 63 6b 20 66 69 78 5f 65  gpack pack fix_e
3480: 78 74 34 20 34 32 20 21 5d 0a 20 20 20 20 6c 61  xt4 42 !].    la
3490: 70 70 65 6e 64 20 65 6e 63 20 5b 6d 73 67 70 61  ppend enc [msgpa
34a0: 63 6b 20 70 61 63 6b 20 66 69 78 5f 65 78 74 34  ck pack fix_ext4
34b0: 20 33 20 5c 78 43 41 5c 78 46 45 5d 0a 20 20 20   3 \xCA\xFE].   
34c0: 20 6c 61 70 70 65 6e 64 20 65 6e 63 20 5b 6d 73   lappend enc [ms
34d0: 67 70 61 63 6b 20 70 61 63 6b 20 66 69 78 5f 65  gpack pack fix_e
34e0: 78 74 34 20 31 30 20 5c 78 31 32 5c 78 33 34 5c  xt4 10 \x12\x34\
34f0: 78 35 36 5c 78 37 38 5d 0a 0a 20 20 20 20 73 65  x56\x78]..    se
3500: 74 20 64 65 63 20 5b 6c 6d 61 70 20 78 20 24 65  t dec [lmap x $e
3510: 6e 63 20 7b 6d 73 67 70 61 63 6b 20 75 6e 70 61  nc {msgpack unpa
3520: 63 6b 20 24 78 7d 5d 0a 0a 20 20 20 20 63 6f 6e  ck $x}]..    con
3530: 63 61 74 20 5b 6c 6d 61 70 20 78 20 24 65 6e 63  cat [lmap x $enc
3540: 20 7b 62 69 6e 61 72 79 20 65 6e 63 6f 64 65 20   {binary encode 
3550: 68 65 78 20 24 78 7d 5d 20 24 64 65 63 0a 7d 20  hex $x}] $dec.} 
3560: 2d 72 65 73 75 6c 74 20 22 64 36 32 61 32 31 30  -result "d62a210
3570: 30 30 30 30 30 20 64 36 30 33 63 61 66 65 30 30  00000 d603cafe00
3580: 30 30 20 64 36 30 61 31 32 33 34 35 36 37 38 5c  00 d60a12345678\
3590: 0a 20 20 20 20 20 20 20 20 20 20 20 7b 7b 65 78  .           {{ex
35a0: 74 20 34 32 20 21 5c 78 30 30 5c 78 30 30 5c 78  t 42 !\x00\x00\x
35b0: 30 30 7d 7d 20 7b 7b 65 78 74 20 33 20 5c 78 43  00}} {{ext 3 \xC
35c0: 41 5c 78 46 45 5c 78 30 30 5c 78 30 30 7d 7d 5c  A\xFE\x00\x00}}\
35d0: 0a 20 20 20 20 20 20 20 20 20 20 20 7b 7b 65 78  .           {{ex
35e0: 74 20 31 30 20 5c 78 31 32 5c 78 33 34 5c 78 35  t 10 \x12\x34\x5
35f0: 36 5c 78 37 38 7d 7d 22 0a 0a 74 63 6c 74 65 73  6\x78}}"..tcltes
3600: 74 3a 3a 74 65 73 74 20 66 69 78 5f 65 78 74 38  t::test fix_ext8
3610: 20 66 69 78 5f 65 78 74 38 20 2d 62 6f 64 79 20   fix_ext8 -body 
3620: 7b 0a 20 20 20 20 73 65 74 20 65 6e 63 20 7b 7d  {.    set enc {}
3630: 0a 20 20 20 20 6c 61 70 70 65 6e 64 20 65 6e 63  .    lappend enc
3640: 20 5b 6d 73 67 70 61 63 6b 20 70 61 63 6b 20 66   [msgpack pack f
3650: 69 78 5f 65 78 74 38 20 33 20 5c 78 43 41 5c 78  ix_ext8 3 \xCA\x
3660: 46 45 5d 0a 20 20 20 20 6c 61 70 70 65 6e 64 20  FE].    lappend 
3670: 65 6e 63 20 5b 6d 73 67 70 61 63 6b 20 70 61 63  enc [msgpack pac
3680: 6b 20 66 69 78 5f 65 78 74 38 20 31 30 20 5c 78  k fix_ext8 10 \x
3690: 30 31 5c 78 32 33 5c 78 34 35 5c 78 36 37 5c 78  01\x23\x45\x67\x
36a0: 38 39 5c 78 41 42 5c 78 43 44 5c 78 45 46 5d 0a  89\xAB\xCD\xEF].
36b0: 0a 20 20 20 20 73 65 74 20 64 65 63 20 5b 6c 6d  .    set dec [lm
36c0: 61 70 20 78 20 24 65 6e 63 20 7b 6d 73 67 70 61  ap x $enc {msgpa
36d0: 63 6b 20 75 6e 70 61 63 6b 20 24 78 7d 5d 0a 0a  ck unpack $x}]..
36e0: 20 20 20 20 63 6f 6e 63 61 74 20 5b 6c 6d 61 70      concat [lmap
36f0: 20 78 20 24 65 6e 63 20 7b 62 69 6e 61 72 79 20   x $enc {binary 
3700: 65 6e 63 6f 64 65 20 68 65 78 20 24 78 7d 5d 20  encode hex $x}] 
3710: 24 64 65 63 0a 7d 20 2d 72 65 73 75 6c 74 20 22  $dec.} -result "
3720: 64 37 30 33 63 61 66 65 30 30 30 30 30 30 30 30  d703cafe00000000
3730: 30 30 30 30 20 64 37 30 61 30 31 32 33 34 35 36  0000 d70a0123456
3740: 37 38 39 61 62 63 64 65 66 5c 0a 20 20 20 20 20  789abcdef\.     
3750: 20 20 20 20 20 20 7b 7b 65 78 74 20 33 20 5c 78        {{ext 3 \x
3760: 43 41 5c 78 46 45 5c 30 5c 30 5c 30 5c 30 5c 30  CA\xFE\0\0\0\0\0
3770: 5c 30 7d 7d 5c 0a 20 20 20 20 20 20 20 20 20 20  \0}}\.          
3780: 20 7b 7b 65 78 74 20 31 30 20 5c 78 30 31 5c 78   {{ext 10 \x01\x
3790: 32 33 5c 78 34 35 5c 78 36 37 5c 78 38 39 5c 78  23\x45\x67\x89\x
37a0: 41 42 5c 78 43 44 5c 78 45 46 7d 7d 22 0a 0a 74  AB\xCD\xEF}}"..t
37b0: 63 6c 74 65 73 74 3a 3a 74 65 73 74 20 66 69 78  cltest::test fix
37c0: 5f 65 78 74 31 36 20 66 69 78 5f 65 78 74 31 36  _ext16 fix_ext16
37d0: 20 2d 62 6f 64 79 20 7b 0a 20 20 20 20 73 65 74   -body {.    set
37e0: 20 65 6e 63 20 7b 7d 0a 20 20 20 20 6c 61 70 70   enc {}.    lapp
37f0: 65 6e 64 20 65 6e 63 20 5b 6d 73 67 70 61 63 6b  end enc [msgpack
3800: 20 70 61 63 6b 20 66 69 78 5f 65 78 74 31 36 20   pack fix_ext16 
3810: 33 20 5c 78 43 41 5c 78 46 45 5d 0a 20 20 20 20  3 \xCA\xFE].    
3820: 6c 61 70 70 65 6e 64 20 65 6e 63 20 5b 6d 73 67  lappend enc [msg
3830: 70 61 63 6b 20 70 61 63 6b 20 66 69 78 5f 65 78  pack pack fix_ex
3840: 74 31 36 20 31 31 20 5b 73 74 72 69 6e 67 20 72  t16 11 [string r
3850: 65 70 65 61 74 20 41 42 20 31 36 5d 5d 0a 0a 20  epeat AB 16]].. 
3860: 20 20 20 73 65 74 20 64 65 63 20 5b 6c 6d 61 70     set dec [lmap
3870: 20 78 20 24 65 6e 63 20 7b 6d 73 67 70 61 63 6b   x $enc {msgpack
3880: 20 75 6e 70 61 63 6b 20 24 78 7d 5d 0a 0a 20 20   unpack $x}]..  
3890: 20 20 63 6f 6e 63 61 74 20 5b 6c 6d 61 70 20 78    concat [lmap x
38a0: 20 24 65 6e 63 20 7b 62 69 6e 61 72 79 20 65 6e   $enc {binary en
38b0: 63 6f 64 65 20 68 65 78 20 24 78 7d 5d 20 24 64  code hex $x}] $d
38c0: 65 63 0a 7d 20 2d 72 65 73 75 6c 74 20 22 64 38  ec.} -result "d8
38d0: 30 33 63 61 66 65 30 30 30 30 30 30 30 30 30 30  03cafe0000000000
38e0: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30  0000000000000000
38f0: 30 30 5c 0a 20 20 20 20 20 20 20 20 20 20 20 64  00\.           d
3900: 38 30 62 34 31 34 32 34 31 34 32 34 31 34 32 34  80b4142414241424
3910: 31 34 32 34 31 34 32 34 31 34 32 34 31 34 32 34  1424142414241424
3920: 31 34 32 5c 0a 20 20 20 20 20 20 20 20 20 20 20  142\.           
3930: 7b 7b 65 78 74 20 33 20 5c 78 43 41 5c 78 46 45  {{ext 3 \xCA\xFE
3940: 5c 30 5c 30 5c 30 5c 30 5c 30 5c 30 5c 30 5c 30  \0\0\0\0\0\0\0\0
3950: 5c 30 5c 30 5c 30 5c 30 5c 30 5c 30 7d 7d 5c 0a  \0\0\0\0\0\0}}\.
3960: 20 20 20 20 20 20 20 20 20 20 20 7b 7b 65 78 74             {{ext
3970: 20 31 31 20 41 42 41 42 41 42 41 42 41 42 41 42   11 ABABABABABAB
3980: 41 42 41 42 7d 7d 22 0a 0a 0a 74 63 6c 74 65 73  ABAB}}"...tcltes
3990: 74 3a 3a 74 65 73 74 20 65 78 74 20 65 78 74 20  t::test ext ext 
39a0: 2d 62 6f 64 79 20 7b 0a 20 20 20 20 66 6c 61 74  -body {.    flat
39b0: 6d 61 70 20 76 20 5b 6c 69 73 74 20 5c 0a 20 20  map v [list \.  
39c0: 20 20 20 20 20 20 7b 7d 20 61 20 62 62 20 63 63        {} a bb cc
39d0: 63 20 64 64 64 64 20 5b 73 74 72 69 6e 67 20 72  c dddd [string r
39e0: 65 70 65 61 74 20 65 20 32 35 35 5d 20 5b 73 74  epeat e 255] [st
39f0: 72 69 6e 67 20 72 65 70 65 61 74 20 65 20 32 35  ring repeat e 25
3a00: 36 5d 20 5c 0a 20 20 20 20 20 20 20 20 5b 73 74  6] \.        [st
3a10: 72 69 6e 67 20 72 65 70 65 61 74 20 66 20 32 35  ring repeat f 25
3a20: 37 5d 20 5b 73 74 72 69 6e 67 20 72 65 70 65 61  7] [string repea
3a30: 74 20 67 20 36 35 35 33 35 5d 20 5b 73 74 72 69  t g 65535] [stri
3a40: 6e 67 20 72 65 70 65 61 74 20 68 20 36 35 35 33  ng repeat h 6553
3a50: 36 5d 20 5c 0a 20 20 20 20 20 20 20 20 5b 73 74  6] \.        [st
3a60: 72 69 6e 67 20 72 65 70 65 61 74 20 69 20 31 30  ring repeat i 10
3a70: 30 30 30 30 5d 20 5c 0a 20 20 20 20 5d 20 7b 0a  0000] \.    ] {.
3a80: 20 20 20 20 20 20 20 20 62 69 6e 61 72 79 20 65          binary e
3a90: 6e 63 6f 64 65 20 68 65 78 20 5b 6d 73 67 70 61  ncode hex [msgpa
3aa0: 63 6b 20 70 61 63 6b 20 65 78 74 20 31 32 37 20  ck pack ext 127 
3ab0: 24 76 5d 0a 20 20 20 20 7d 0a 7d 20 2d 72 65 73  $v].    }.} -res
3ac0: 75 6c 74 20 5b 6c 69 73 74 20 5c 0a 20 20 20 20  ult [list \.    
3ad0: 63 37 30 30 37 66 20 5c 0a 20 20 20 20 63 37 30  c7007f \.    c70
3ae0: 31 37 66 36 31 20 5c 0a 20 20 20 20 63 37 30 32  17f61 \.    c702
3af0: 37 66 36 32 36 32 20 5c 0a 20 20 20 20 63 37 30  7f6262 \.    c70
3b00: 33 37 66 36 33 36 33 36 33 20 5c 0a 20 20 20 20  37f636363 \.    
3b10: 63 37 30 34 37 66 36 34 36 34 36 34 36 34 20 5c  c7047f64646464 \
3b20: 0a 20 20 20 20 63 37 66 66 37 66 5b 73 74 72 69  .    c7ff7f[stri
3b30: 6e 67 20 72 65 70 65 61 74 20 36 35 20 32 35 35  ng repeat 65 255
3b40: 5d 20 5c 0a 20 20 20 20 63 38 30 31 30 30 37 66  ] \.    c801007f
3b50: 5b 73 74 72 69 6e 67 20 72 65 70 65 61 74 20 36  [string repeat 6
3b60: 35 20 32 35 36 5d 20 5c 0a 20 20 20 20 63 38 30  5 256] \.    c80
3b70: 31 30 31 37 66 5b 73 74 72 69 6e 67 20 72 65 70  1017f[string rep
3b80: 65 61 74 20 36 36 20 32 35 37 5d 20 5c 0a 20 20  eat 66 257] \.  
3b90: 20 20 63 38 66 66 66 66 37 66 5b 73 74 72 69 6e    c8ffff7f[strin
3ba0: 67 20 72 65 70 65 61 74 20 36 37 20 36 35 35 33  g repeat 67 6553
3bb0: 35 5d 20 5c 0a 20 20 20 20 63 39 30 30 30 31 30  5] \.    c900010
3bc0: 30 30 30 37 66 5b 73 74 72 69 6e 67 20 72 65 70  0007f[string rep
3bd0: 65 61 74 20 36 38 20 36 35 35 33 36 5d 20 5c 0a  eat 68 65536] \.
3be0: 20 20 20 20 63 39 30 30 30 31 38 36 61 30 37 66      c9000186a07f
3bf0: 5b 73 74 72 69 6e 67 20 72 65 70 65 61 74 20 36  [string repeat 6
3c00: 39 20 31 30 30 30 30 30 5d 20 5c 0a 5d 0a 0a 0a  9 100000] \.]...
3c10: 74 63 6c 74 65 73 74 3a 3a 74 65 73 74 20 65 78  tcltest::test ex
3c20: 74 2d 74 69 6d 65 73 74 61 6d 70 2d 31 20 74 69  t-timestamp-1 ti
3c30: 6d 65 73 74 61 6d 70 33 32 20 2d 62 6f 64 79 20  mestamp32 -body 
3c40: 7b 0a 20 20 20 20 6d 73 67 70 61 63 6b 20 75 6e  {.    msgpack un
3c50: 70 61 63 6b 20 5b 62 69 6e 61 72 79 20 64 65 63  pack [binary dec
3c60: 6f 64 65 20 68 65 78 20 38 31 61 35 36 35 37 36  ode hex 81a56576
3c70: 36 35 36 65 37 34 38 32 61 35 36 63 36 31 36 32  656e7482a56c6162
3c80: 36 35 36 63 61 61 37 34 36 39 36 64 36 35 32 30  656caa74696d6520
3c90: 36 32 36 35 36 37 36 31 36 65 61 34 36 34 36 31  626567616ea46461
3ca0: 37 34 36 35 64 36 66 66 30 30 30 30 30 30 30 30  7465d6ff00000000
3cb0: 5d 0a 7d 20 2d 72 65 73 75 6c 74 20 7b 7b 6d 61  ].} -result {{ma
3cc0: 70 20 7b 7b 73 74 72 20 65 76 65 6e 74 7d 20 7b  p {{str event} {
3cd0: 6d 61 70 20 7b 7b 73 74 72 20 6c 61 62 65 6c 7d  map {{str label}
3ce0: 20 7b 73 74 72 20 7b 74 69 6d 65 20 62 65 67 61   {str {time bega
3cf0: 6e 7d 7d 5c 0a 20 20 20 20 20 20 20 20 20 20 20  n}}\.           
3d00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3d10: 20 20 20 20 20 20 20 20 7b 73 74 72 20 64 61 74          {str dat
3d20: 65 7d 20 7b 74 69 6d 65 73 74 61 6d 70 20 30 20  e} {timestamp 0 
3d30: 30 7d 7d 7d 7d 7d 7d 0a 0a 74 63 6c 74 65 73 74  0}}}}}}..tcltest
3d40: 3a 3a 74 65 73 74 20 65 78 74 2d 74 69 6d 65 73  ::test ext-times
3d50: 74 61 6d 70 2d 32 20 74 69 6d 65 73 74 61 6d 70  tamp-2 timestamp
3d60: 33 32 20 2d 62 6f 64 79 20 7b 0a 20 20 20 20 73  32 -body {.    s
3d70: 65 74 20 65 6e 63 20 5b 6d 73 67 70 61 63 6b 20  et enc [msgpack 
3d80: 70 61 63 6b 20 74 69 6d 65 73 74 61 6d 70 33 32  pack timestamp32
3d90: 20 31 35 39 38 34 35 39 38 33 31 5d 0a 20 20 20   1598459831].   
3da0: 20 6c 69 73 74 20 5b 62 69 6e 61 72 79 20 65 6e   list [binary en
3db0: 63 6f 64 65 20 68 65 78 20 24 65 6e 63 5d 20 5b  code hex $enc] [
3dc0: 6d 73 67 70 61 63 6b 20 75 6e 70 61 63 6b 20 24  msgpack unpack $
3dd0: 65 6e 63 5d 0a 7d 20 2d 72 65 73 75 6c 74 20 7b  enc].} -result {
3de0: 64 36 66 66 35 66 34 36 38 66 62 37 20 7b 7b 74  d6ff5f468fb7 {{t
3df0: 69 6d 65 73 74 61 6d 70 20 31 35 39 38 34 35 39  imestamp 1598459
3e00: 38 33 31 20 30 7d 7d 7d 0a 0a 74 63 6c 74 65 73  831 0}}}..tcltes
3e10: 74 3a 3a 74 65 73 74 20 65 78 74 2d 74 69 6d 65  t::test ext-time
3e20: 73 74 61 6d 70 2d 33 20 74 69 6d 65 73 74 61 6d  stamp-3 timestam
3e30: 70 36 34 20 2d 62 6f 64 79 20 7b 0a 20 20 20 20  p64 -body {.    
3e40: 73 65 74 20 65 6e 63 20 7b 7d 0a 20 20 20 20 6c  set enc {}.    l
3e50: 61 70 70 65 6e 64 20 65 6e 63 20 5b 6d 73 67 70  append enc [msgp
3e60: 61 63 6b 20 70 61 63 6b 20 74 69 6d 65 73 74 61  ack pack timesta
3e70: 6d 70 36 34 20 31 35 39 38 34 35 39 38 33 31 20  mp64 1598459831 
3e80: 30 5d 0a 20 20 20 20 6c 61 70 70 65 6e 64 20 65  0].    lappend e
3e90: 6e 63 20 5b 6d 73 67 70 61 63 6b 20 70 61 63 6b  nc [msgpack pack
3ea0: 20 74 69 6d 65 73 74 61 6d 70 36 34 20 31 35 39   timestamp64 159
3eb0: 38 34 35 39 38 33 31 20 31 32 33 34 35 36 37 38  8459831 12345678
3ec0: 39 5d 0a 20 20 20 20 6c 61 70 70 65 6e 64 20 65  9].    lappend e
3ed0: 6e 63 20 5b 6d 73 67 70 61 63 6b 20 70 61 63 6b  nc [msgpack pack
3ee0: 20 74 69 6d 65 73 74 61 6d 70 36 34 20 31 35 39   timestamp64 159
3ef0: 38 34 35 39 38 33 31 20 39 39 39 39 39 39 39 39  8459831 99999999
3f00: 39 5d 0a 0a 20 20 20 20 66 6c 61 74 6d 61 70 20  9]..    flatmap 
3f10: 78 20 24 65 6e 63 20 7b 0a 20 20 20 20 20 20 20  x $enc {.       
3f20: 20 6c 69 73 74 20 5b 62 69 6e 61 72 79 20 65 6e   list [binary en
3f30: 63 6f 64 65 20 68 65 78 20 24 78 5d 20 5b 6d 73  code hex $x] [ms
3f40: 67 70 61 63 6b 20 75 6e 70 61 63 6b 20 24 78 5d  gpack unpack $x]
3f50: 0a 20 20 20 20 7d 0a 7d 20 2d 72 65 73 75 6c 74  .    }.} -result
3f60: 20 7b 64 37 66 66 30 30 30 30 30 30 30 30 35 66   {d7ff000000005f
3f70: 34 36 38 66 62 37 20 7b 7b 74 69 6d 65 73 74 61  468fb7 {{timesta
3f80: 6d 70 20 31 35 39 38 34 35 39 38 33 31 20 30 7d  mp 1598459831 0}
3f90: 7d 5c 0a 20 20 20 20 20 20 20 20 20 20 20 64 37  }\.           d7
3fa0: 66 66 31 64 36 66 33 34 35 34 35 66 34 36 38 66  ff1d6f34545f468f
3fb0: 62 37 20 7b 7b 74 69 6d 65 73 74 61 6d 70 20 31  b7 {{timestamp 1
3fc0: 35 39 38 34 35 39 38 33 31 20 31 32 33 34 35 36  598459831 123456
3fd0: 37 38 39 7d 7d 5c 0a 20 20 20 20 20 20 20 20 20  789}}\.         
3fe0: 20 20 64 37 66 66 65 65 36 62 32 37 66 63 35 66    d7ffee6b27fc5f
3ff0: 34 36 38 66 62 37 20 7b 7b 74 69 6d 65 73 74 61  468fb7 {{timesta
4000: 6d 70 20 31 35 39 38 34 35 39 38 33 31 20 39 39  mp 1598459831 99
4010: 39 39 39 39 39 39 39 7d 7d 7d 0a 0a 74 63 6c 74  9999999}}}..tclt
4020: 65 73 74 3a 3a 74 65 73 74 20 65 78 74 2d 74 69  est::test ext-ti
4030: 6d 65 73 74 61 6d 70 2d 34 20 74 69 6d 65 73 74  mestamp-4 timest
4040: 61 6d 70 39 36 20 2d 62 6f 64 79 20 7b 0a 20 20  amp96 -body {.  
4050: 20 20 73 65 74 20 65 6e 63 20 7b 7d 0a 20 20 20    set enc {}.   
4060: 20 6c 61 70 70 65 6e 64 20 65 6e 63 20 5b 6d 73   lappend enc [ms
4070: 67 70 61 63 6b 20 70 61 63 6b 20 74 69 6d 65 73  gpack pack times
4080: 74 61 6d 70 39 36 20 31 35 39 38 34 35 39 38 33  tamp96 159845983
4090: 31 20 30 5d 0a 20 20 20 20 6c 61 70 70 65 6e 64  1 0].    lappend
40a0: 20 65 6e 63 20 5b 6d 73 67 70 61 63 6b 20 70 61   enc [msgpack pa
40b0: 63 6b 20 74 69 6d 65 73 74 61 6d 70 39 36 20 31  ck timestamp96 1
40c0: 35 39 38 34 35 39 38 33 31 20 31 32 33 34 35 36  598459831 123456
40d0: 37 38 39 5d 0a 20 20 20 20 6c 61 70 70 65 6e 64  789].    lappend
40e0: 20 65 6e 63 20 5b 6d 73 67 70 61 63 6b 20 70 61   enc [msgpack pa
40f0: 63 6b 20 74 69 6d 65 73 74 61 6d 70 39 36 20 31  ck timestamp96 1
4100: 35 39 38 34 35 39 38 33 31 20 39 39 39 39 39 39  598459831 999999
4110: 39 39 39 5d 0a 0a 20 20 20 20 73 65 74 20 74 74  999]..    set tt
4120: 20 7b 7d 0a 20 20 20 20 66 6c 61 74 6d 61 70 20   {}.    flatmap 
4130: 78 20 24 65 6e 63 20 7b 0a 20 20 20 20 20 20 20  x $enc {.       
4140: 20 6c 69 73 74 20 5b 62 69 6e 61 72 79 20 65 6e   list [binary en
4150: 63 6f 64 65 20 68 65 78 20 24 78 5d 20 5b 6d 73  code hex $x] [ms
4160: 67 70 61 63 6b 20 75 6e 70 61 63 6b 20 24 78 5d  gpack unpack $x]
4170: 0a 20 20 20 20 7d 0a 7d 20 2d 72 65 73 75 6c 74  .    }.} -result
4180: 20 7b 63 37 30 63 66 66 30 30 30 30 30 30 30 30   {c70cff00000000
4190: 30 30 30 30 30 30 30 30 35 66 34 36 38 66 62 37  000000005f468fb7
41a0: 20 7b 7b 74 69 6d 65 73 74 61 6d 70 20 31 35 39   {{timestamp 159
41b0: 38 34 35 39 38 33 31 20 30 7d 7d 5c 0a 20 20 20  8459831 0}}\.   
41c0: 20 20 20 20 20 20 20 20 63 37 30 63 66 66 30 37          c70cff07
41d0: 35 62 63 64 31 35 30 30 30 30 30 30 30 30 35 66  5bcd15000000005f
41e0: 34 36 38 66 62 37 20 7b 7b 74 69 6d 65 73 74 61  468fb7 {{timesta
41f0: 6d 70 20 31 35 39 38 34 35 39 38 33 31 20 31 32  mp 1598459831 12
4200: 33 34 35 36 37 38 39 7d 7d 5c 0a 20 20 20 20 20  3456789}}\.     
4210: 20 20 20 20 20 20 63 37 30 63 66 66 33 62 39 61        c70cff3b9a
4220: 63 39 66 66 30 30 30 30 30 30 30 30 35 66 34 36  c9ff000000005f46
4230: 38 66 62 37 20 7b 7b 74 69 6d 65 73 74 61 6d 70  8fb7 {{timestamp
4240: 20 31 35 39 38 34 35 39 38 33 31 20 39 39 39 39   1598459831 9999
4250: 39 39 39 39 39 7d 7d 7d 0a 0a 74 63 6c 74 65 73  99999}}}..tcltes
4260: 74 3a 3a 74 65 73 74 20 65 78 74 2d 74 69 6d 65  t::test ext-time
4270: 73 74 61 6d 70 2d 35 20 7b 6d 69 6c 6c 69 73 65  stamp-5 {millise
4280: 63 6f 6e 64 73 20 61 6e 64 20 6d 69 63 72 6f 73  conds and micros
4290: 65 63 6f 6e 64 73 7d 20 2d 62 6f 64 79 20 7b 0a  econds} -body {.
42a0: 20 20 20 20 73 65 74 20 65 6e 63 20 7b 7d 0a 20      set enc {}. 
42b0: 20 20 20 6c 61 70 70 65 6e 64 20 65 6e 63 20 5b     lappend enc [
42c0: 6d 73 67 70 61 63 6b 20 70 61 63 6b 20 6d 69 6c  msgpack pack mil
42d0: 6c 69 73 65 63 6f 6e 64 73 20 31 35 39 38 34 36  liseconds 159846
42e0: 33 33 30 38 37 36 38 5d 0a 20 20 20 20 6c 61 70  3308768].    lap
42f0: 70 65 6e 64 20 65 6e 63 20 5b 6d 73 67 70 61 63  pend enc [msgpac
4300: 6b 20 70 61 63 6b 20 6d 69 63 72 6f 73 65 63 6f  k pack microseco
4310: 6e 64 73 20 31 35 39 38 34 36 33 33 30 30 36 34  nds 159846330064
4320: 32 34 36 38 5d 0a 0a 20 20 20 20 66 6c 61 74 6d  2468]..    flatm
4330: 61 70 20 78 20 24 65 6e 63 20 7b 0a 20 20 20 20  ap x $enc {.    
4340: 20 20 20 20 6c 69 73 74 20 5b 62 69 6e 61 72 79      list [binary
4350: 20 65 6e 63 6f 64 65 20 68 65 78 20 24 78 5d 20   encode hex $x] 
4360: 5b 6d 73 67 70 61 63 6b 20 75 6e 70 61 63 6b 20  [msgpack unpack 
4370: 24 78 5d 0a 20 20 20 20 7d 0a 7d 20 2d 72 65 73  $x].    }.} -res
4380: 75 6c 74 20 7b 63 37 30 63 66 66 32 64 63 36 63  ult {c70cff2dc6c
4390: 30 30 30 30 30 30 30 30 30 30 30 35 66 34 36 39  000000000005f469
43a0: 64 34 63 5c 0a 20 20 20 20 20 20 20 20 20 20 20  d4c\.           
43b0: 7b 7b 74 69 6d 65 73 74 61 6d 70 20 31 35 39 38  {{timestamp 1598
43c0: 34 36 33 33 30 38 20 37 36 38 30 30 30 30 30 30  463308 768000000
43d0: 7d 7d 5c 0a 20 20 20 20 20 20 20 20 20 20 20 63  }}\.           c
43e0: 37 30 63 66 66 32 36 34 62 34 38 61 30 30 30 30  70cff264b48a0000
43f0: 30 30 30 30 30 35 66 34 36 39 64 34 34 5c 0a 20  000005f469d44\. 
4400: 20 20 20 20 20 20 20 20 20 20 7b 7b 74 69 6d 65            {{time
4410: 73 74 61 6d 70 20 31 35 39 38 34 36 33 33 30 30  stamp 1598463300
4420: 20 36 34 32 34 36 38 30 30 30 7d 7d 7d 0a 0a 0a   642468000}}}...
4430: 74 63 6c 74 65 73 74 3a 3a 74 65 73 74 20 65 78  tcltest::test ex
4440: 74 2d 75 6e 70 61 63 6b 65 72 2d 31 20 7b 41 64  t-unpacker-1 {Ad
4450: 64 20 63 75 73 74 6f 6d 20 75 6e 70 61 63 6b 65  d custom unpacke
4460: 72 7d 20 2d 73 65 74 75 70 20 7b 0a 20 20 20 20  r} -setup {.    
4470: 73 65 74 20 75 70 20 5b 6d 73 67 70 61 63 6b 3a  set up [msgpack:
4480: 3a 75 6e 70 61 63 6b 65 72 20 6e 65 77 5d 0a 7d  :unpacker new].}
4490: 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 20 20 20 20   -cleanup {.    
44a0: 63 61 74 63 68 20 7b 20 24 75 70 20 64 65 73 74  catch { $up dest
44b0: 72 6f 79 20 7d 0a 20 20 20 20 72 65 6e 61 6d 65  roy }.    rename
44c0: 20 3a 3a 78 6f 72 20 7b 7d 0a 7d 20 2d 62 6f 64   ::xor {}.} -bod
44d0: 79 20 7b 0a 20 20 20 20 70 72 6f 63 20 3a 3a 78  y {.    proc ::x
44e0: 6f 72 20 7b 6e 20 74 79 70 65 20 64 61 74 61 7d  or {n type data}
44f0: 20 7b 0a 20 20 20 20 20 20 20 20 69 66 20 7b 24   {.        if {$
4500: 74 79 70 65 20 21 3d 20 31 30 30 7d 20 7b 20 65  type != 100} { e
4510: 72 72 6f 72 20 5b 6c 69 73 74 20 77 72 6f 6e 67  rror [list wrong
4520: 20 74 79 70 65 3a 20 24 74 79 70 65 5d 20 7d 0a   type: $type] }.
4530: 0a 20 20 20 20 20 20 20 20 73 65 74 20 72 65 73  .        set res
4540: 20 7b 7d 0a 20 20 20 20 20 20 20 20 66 6f 72 65   {}.        fore
4550: 61 63 68 20 62 20 5b 73 70 6c 69 74 20 24 64 61  ach b [split $da
4560: 74 61 20 7b 7d 5d 20 7b 0a 20 20 20 20 20 20 20  ta {}] {.       
4570: 20 20 20 20 20 73 65 74 20 63 6f 64 65 20 5b 73       set code [s
4580: 63 61 6e 20 24 62 20 25 63 5d 0a 20 20 20 20 20  can $b %c].     
4590: 20 20 20 20 20 20 20 61 70 70 65 6e 64 20 72 65         append re
45a0: 73 20 5b 66 6f 72 6d 61 74 20 25 63 20 5b 65 78  s [format %c [ex
45b0: 70 72 20 7b 20 24 63 6f 64 65 20 5e 20 24 6e 20  pr { $code ^ $n 
45c0: 7d 5d 5d 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20  }]].        }.. 
45d0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 5b 6c         return [l
45e0: 69 73 74 20 65 6e 63 72 79 70 74 65 64 20 24 72  ist encrypted $r
45f0: 65 73 5d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 24  es].    }..    $
4600: 75 70 20 73 65 74 5f 65 78 74 5f 75 6e 70 61 63  up set_ext_unpac
4610: 6b 65 72 20 39 39 20 7b 3a 3a 78 6f 72 20 34 32  ker 99 {::xor 42
4620: 7d 0a 20 20 20 20 24 75 70 20 73 65 74 5f 65 78  }.    $up set_ex
4630: 74 5f 75 6e 70 61 63 6b 65 72 20 31 30 30 20 7b  t_unpacker 100 {
4640: 3a 3a 78 6f 72 20 35 7d 0a 20 20 20 20 24 75 70  ::xor 5}.    $up
4650: 20 73 65 74 5f 65 78 74 5f 75 6e 70 61 63 6b 65   set_ext_unpacke
4660: 72 20 31 30 30 30 20 7b 3a 3a 78 6f 72 20 30 7d  r 1000 {::xor 0}
4670: 0a 0a 20 20 20 20 24 75 70 20 75 6e 70 61 63 6b  ..    $up unpack
4680: 5f 73 74 72 69 6e 67 20 5b 6d 73 67 70 61 63 6b  _string [msgpack
4690: 20 70 61 63 6b 20 65 78 74 20 31 30 30 20 4d 60   pack ext 100 M`
46a0: 69 69 6a 24 5d 0a 7d 20 2d 72 65 73 75 6c 74 20  iij$].} -result 
46b0: 7b 7b 65 6e 63 72 79 70 74 65 64 20 48 65 6c 6c  {{encrypted Hell
46c0: 6f 21 7d 7d 0a 0a 74 63 6c 74 65 73 74 3a 3a 74  o!}}..tcltest::t
46d0: 65 73 74 20 65 78 74 2d 75 6e 70 61 63 6b 65 72  est ext-unpacker
46e0: 2d 32 20 7b 52 65 6d 6f 76 65 20 74 69 6d 65 73  -2 {Remove times
46f0: 74 61 6d 70 20 75 6e 70 61 63 6b 65 72 7d 20 2d  tamp unpacker} -
4700: 73 65 74 75 70 20 7b 0a 20 20 20 20 73 65 74 20  setup {.    set 
4710: 75 70 20 5b 6d 73 67 70 61 63 6b 3a 3a 75 6e 70  up [msgpack::unp
4720: 61 63 6b 65 72 20 6e 65 77 5d 0a 7d 20 2d 63 6c  acker new].} -cl
4730: 65 61 6e 75 70 20 7b 0a 20 20 20 20 63 61 74 63  eanup {.    catc
4740: 68 20 7b 20 24 75 70 20 64 65 73 74 72 6f 79 20  h { $up destroy 
4750: 7d 0a 7d 20 2d 62 6f 64 79 20 7b 0a 20 20 20 20  }.} -body {.    
4760: 24 75 70 20 73 65 74 5f 65 78 74 5f 75 6e 70 61  $up set_ext_unpa
4770: 63 6b 65 72 20 2d 31 20 7b 7d 0a 20 20 20 20 24  cker -1 {}.    $
4780: 75 70 20 75 6e 70 61 63 6b 5f 73 74 72 69 6e 67  up unpack_string
4790: 20 5b 6d 73 67 70 61 63 6b 20 70 61 63 6b 20 74   [msgpack pack t
47a0: 69 6d 65 73 74 61 6d 70 33 32 20 31 35 39 38 34  imestamp32 15984
47b0: 35 39 38 33 31 5d 0a 7d 20 2d 72 65 73 75 6c 74  59831].} -result
47c0: 20 22 7b 65 78 74 20 2d 31 20 5c 78 35 66 5c 78   "{ext -1 \x5f\x
47d0: 34 36 5c 78 38 66 5c 78 62 37 7d 22 0a 0a 74 63  46\x8f\xb7}"..tc
47e0: 6c 74 65 73 74 3a 3a 74 65 73 74 20 65 78 74 2d  ltest::test ext-
47f0: 75 6e 70 61 63 6b 65 72 2d 33 20 7b 47 65 74 20  unpacker-3 {Get 
4800: 65 78 74 20 75 6e 70 61 63 6b 65 72 73 7d 20 2d  ext unpackers} -
4810: 73 65 74 75 70 20 7b 0a 20 20 20 20 73 65 74 20  setup {.    set 
4820: 75 70 20 5b 6d 73 67 70 61 63 6b 3a 3a 75 6e 70  up [msgpack::unp
4830: 61 63 6b 65 72 20 6e 65 77 5d 0a 7d 20 2d 63 6c  acker new].} -cl
4840: 65 61 6e 75 70 20 7b 0a 20 20 20 20 63 61 74 63  eanup {.    catc
4850: 68 20 7b 20 24 75 70 20 64 65 73 74 72 6f 79 20  h { $up destroy 
4860: 7d 0a 7d 20 2d 62 6f 64 79 20 7b 0a 20 20 20 20  }.} -body {.    
4870: 73 65 74 20 74 74 20 7b 7d 0a 20 20 20 20 6c 61  set tt {}.    la
4880: 70 70 65 6e 64 20 74 74 20 5b 24 75 70 20 73 65  ppend tt [$up se
4890: 74 5f 65 78 74 5f 75 6e 70 61 63 6b 65 72 5d 0a  t_ext_unpacker].
48a0: 20 20 20 20 6c 61 70 70 65 6e 64 20 74 74 20 5b      lappend tt [
48b0: 24 75 70 20 73 65 74 5f 65 78 74 5f 75 6e 70 61  $up set_ext_unpa
48c0: 63 6b 65 72 20 2d 31 5d 0a 7d 20 2d 6d 61 74 63  cker -1].} -matc
48d0: 68 20 72 65 67 65 78 70 20 2d 72 65 73 75 6c 74  h regexp -result
48e0: 20 7b 5c 73 2a 2d 31 20 5c 7b 61 70 70 6c 79 20   {\s*-1 \{apply 
48f0: 5c 7b 5c 7b 74 79 70 65 20 64 61 74 61 5c 7d 2e  \{\{type data\}.
4900: 2a 61 70 70 6c 79 7d 0a 0a 0a 74 63 6c 74 65 73  *apply}...tcltes
4910: 74 3a 3a 74 65 73 74 20 70 61 63 6b 2d 75 6e 6b  t::test pack-unk
4920: 6e 6f 77 6e 2d 74 79 70 65 20 70 61 63 6b 2d 75  nown-type pack-u
4930: 6e 6b 6e 6f 77 6e 2d 74 79 70 65 20 2d 62 6f 64  nknown-type -bod
4940: 79 20 7b 0a 20 20 20 20 6d 73 67 70 61 63 6b 20  y {.    msgpack 
4950: 70 61 63 6b 20 66 6f 6f 20 39 39 0a 7d 20 2d 72  pack foo 99.} -r
4960: 65 74 75 72 6e 43 6f 64 65 73 20 65 72 72 6f 72  eturnCodes error
4970: 20 2d 72 65 73 75 6c 74 20 7b 75 6e 6b 6e 6f 77   -result {unknow
4980: 6e 20 74 79 70 65 3a 20 66 6f 6f 7d 0a 0a 0a 0a  n type: foo}....
4990: 74 63 6c 74 65 73 74 3a 3a 74 65 73 74 20 75 6e  tcltest::test un
49a0: 70 61 63 6b 2d 6e 6f 74 2d 6c 6f 6e 67 2d 65 6e  pack-not-long-en
49b0: 6f 75 67 68 2d 61 72 72 61 79 20 75 6e 70 61 63  ough-array unpac
49c0: 6b 2d 6e 6f 74 2d 6c 6f 6e 67 2d 65 6e 6f 75 67  k-not-long-enoug
49d0: 68 20 2d 62 6f 64 79 20 7b 0a 20 20 20 20 6d 73  h -body {.    ms
49e0: 67 70 61 63 6b 20 75 6e 70 61 63 6b 20 5c 78 44  gpack unpack \xD
49f0: 43 5c 78 30 30 5c 78 30 35 5c 78 46 46 0a 7d 20  C\x00\x05\xFF.} 
4a00: 2d 6d 61 74 63 68 20 67 6c 6f 62 20 2d 72 65 74  -match glob -ret
4a10: 75 72 6e 43 6f 64 65 73 20 65 72 72 6f 72 20 2d  urnCodes error -
4a20: 72 65 73 75 6c 74 20 7b 69 6e 70 75 74 20 73 74  result {input st
4a30: 72 69 6e 67 20 6e 6f 74 20 6c 6f 6e 67 20 65 6e  ring not long en
4a40: 6f 75 67 68 2a 7d 0a 0a 74 63 6c 74 65 73 74 3a  ough*}..tcltest:
4a50: 3a 74 65 73 74 20 75 6e 70 61 63 6b 2d 6e 6f 74  :test unpack-not
4a60: 2d 6c 6f 6e 67 2d 65 6e 6f 75 67 68 2d 62 69 6e  -long-enough-bin
4a70: 20 75 6e 70 61 63 6b 2d 6e 6f 74 2d 6c 6f 6e 67   unpack-not-long
4a80: 2d 65 6e 6f 75 67 68 20 2d 62 6f 64 79 20 7b 0a  -enough -body {.
4a90: 20 20 20 20 6d 73 67 70 61 63 6b 20 75 6e 70 61      msgpack unpa
4aa0: 63 6b 20 5c 78 43 34 5c 78 30 35 5c 78 46 46 0a  ck \xC4\x05\xFF.
4ab0: 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 65  } -returnCodes e
4ac0: 72 72 6f 72 20 2d 72 65 73 75 6c 74 20 7b 69 6e  rror -result {in
4ad0: 70 75 74 20 73 74 72 69 6e 67 20 6e 6f 74 20 6c  put string not l
4ae0: 6f 6e 67 20 65 6e 6f 75 67 68 2c 5c 0a 20 20 20  ong enough,\.   
4af0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4b00: 20 20 20 20 20 20 20 20 20 20 20 6e 65 65 64 20             need 
4b10: 35 20 62 79 74 65 28 73 29 2c 20 6f 6e 6c 79 20  5 byte(s), only 
4b20: 31 20 6c 65 66 74 7d 0a 0a 74 63 6c 74 65 73 74  1 left}..tcltest
4b30: 3a 3a 74 65 73 74 20 75 6e 70 61 63 6b 2d 6e 6f  ::test unpack-no
4b40: 74 2d 6c 6f 6e 67 2d 65 6e 6f 75 67 68 2d 65 78  t-long-enough-ex
4b50: 74 20 75 6e 70 61 63 6b 2d 6e 6f 74 2d 6c 6f 6e  t unpack-not-lon
4b60: 67 2d 65 6e 6f 75 67 68 20 2d 62 6f 64 79 20 7b  g-enough -body {
4b70: 0a 20 20 20 20 6d 73 67 70 61 63 6b 20 75 6e 70  .    msgpack unp
4b80: 61 63 6b 20 5c 78 43 37 5c 78 30 35 5c 78 30 31  ack \xC7\x05\x01
4b90: 5c 78 46 46 0a 7d 20 2d 72 65 74 75 72 6e 43 6f  \xFF.} -returnCo
4ba0: 64 65 73 20 65 72 72 6f 72 20 2d 72 65 73 75 6c  des error -resul
4bb0: 74 20 7b 69 6e 70 75 74 20 73 74 72 69 6e 67 20  t {input string 
4bc0: 6e 6f 74 20 6c 6f 6e 67 20 65 6e 6f 75 67 68 2c  not long enough,
4bd0: 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  \.              
4be0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4bf0: 6e 65 65 64 20 35 20 62 79 74 65 28 73 29 2c 20  need 5 byte(s), 
4c00: 6f 6e 6c 79 20 31 20 6c 65 66 74 7d 0a 0a 74 63  only 1 left}..tc
4c10: 6c 74 65 73 74 3a 3a 74 65 73 74 20 75 6e 70 61  ltest::test unpa
4c20: 63 6b 2d 6e 6f 74 2d 6c 6f 6e 67 2d 65 6e 6f 75  ck-not-long-enou
4c30: 67 68 2d 73 74 72 20 75 6e 70 61 63 6b 2d 6e 6f  gh-str unpack-no
4c40: 74 2d 6c 6f 6e 67 2d 65 6e 6f 75 67 68 20 2d 62  t-long-enough -b
4c50: 6f 64 79 20 7b 0a 20 20 20 20 6d 73 67 70 61 63  ody {.    msgpac
4c60: 6b 20 75 6e 70 61 63 6b 20 5c 78 44 39 5c 78 30  k unpack \xD9\x0
4c70: 35 5c 78 46 46 0a 7d 20 2d 72 65 74 75 72 6e 43  5\xFF.} -returnC
4c80: 6f 64 65 73 20 65 72 72 6f 72 20 2d 72 65 73 75  odes error -resu
4c90: 6c 74 20 7b 69 6e 70 75 74 20 73 74 72 69 6e 67  lt {input string
4ca0: 20 6e 6f 74 20 6c 6f 6e 67 20 65 6e 6f 75 67 68   not long enough
4cb0: 2c 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,\.             
4cc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4cd0: 20 6e 65 65 64 20 35 20 62 79 74 65 28 73 29 2c   need 5 byte(s),
4ce0: 20 6f 6e 6c 79 20 31 20 6c 65 66 74 7d 0a 0a 70   only 1 left}..p
4cf0: 72 6f 63 20 6d 74 73 5f 75 6e 68 65 78 20 68 65  roc mts_unhex he
4d00: 78 20 7b 0a 20 20 20 20 62 69 6e 61 72 79 20 64  x {.    binary d
4d10: 65 63 6f 64 65 20 68 65 78 20 5b 73 74 72 69 6e  ecode hex [strin
4d20: 67 20 6d 61 70 20 7b 2d 20 7b 7d 7d 20 24 68 65  g map {- {}} $he
4d30: 78 5d 0a 7d 0a 0a 70 72 6f 63 20 6d 74 73 5f 74  x].}..proc mts_t
4d40: 65 73 74 5f 66 69 6c 65 20 66 69 6c 65 6e 61 6d  est_file filenam
4d50: 65 20 7b 0a 20 20 20 20 73 65 74 20 63 68 20 5b  e {.    set ch [
4d60: 6f 70 65 6e 20 5b 66 69 6c 65 20 6a 6f 69 6e 20  open [file join 
4d70: 24 3a 3a 6d 74 73 50 61 74 68 20 24 66 69 6c 65  $::mtsPath $file
4d80: 6e 61 6d 65 5d 20 72 5d 0a 20 20 20 20 63 68 61  name] r].    cha
4d90: 6e 20 63 6f 6e 66 69 67 75 72 65 20 24 63 68 20  n configure $ch 
4da0: 2d 65 6e 63 6f 64 69 6e 67 20 75 74 66 2d 38 0a  -encoding utf-8.
4db0: 20 20 20 20 73 65 74 20 79 61 6d 6c 20 5b 72 65      set yaml [re
4dc0: 61 64 20 24 63 68 5d 0a 20 20 20 20 63 6c 6f 73  ad $ch].    clos
4dd0: 65 20 24 63 68 0a 0a 20 20 20 20 72 65 74 75 72  e $ch..    retur
4de0: 6e 20 24 79 61 6d 6c 0a 7d 0a 0a 70 72 6f 63 20  n $yaml.}..proc 
4df0: 6d 74 73 5f 74 65 73 74 20 7b 66 69 6c 65 6e 61  mts_test {filena
4e00: 6d 65 20 7b 6b 65 79 20 25 41 55 54 4f 25 7d 7d  me {key %AUTO%}}
4e10: 20 7b 0a 20 20 20 20 73 65 74 20 74 65 73 74 73   {.    set tests
4e20: 20 5b 79 61 6d 6c 3a 3a 79 61 6d 6c 32 64 69 63   [yaml::yaml2dic
4e30: 74 20 5b 6d 74 73 5f 74 65 73 74 5f 66 69 6c 65  t [mts_test_file
4e40: 20 24 66 69 6c 65 6e 61 6d 65 5d 5d 0a 0a 20 20   $filename]]..  
4e50: 20 20 66 6c 61 74 6d 61 70 20 74 65 73 74 20 24    flatmap test $
4e60: 74 65 73 74 73 20 7b 0a 20 20 20 20 20 20 20 20  tests {.        
4e70: 73 65 74 20 72 65 66 20 5b 64 69 63 74 20 67 65  set ref [dict ge
4e80: 74 20 24 74 65 73 74 20 5b 69 66 20 7b 24 6b 65  t $test [if {$ke
4e90: 79 20 65 71 20 7b 25 41 55 54 4f 25 7d 7d 20 7b  y eq {%AUTO%}} {
4ea0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 73 65  .            lse
4eb0: 61 72 63 68 20 2d 69 6e 6c 69 6e 65 20 2d 6e 6f  arch -inline -no
4ec0: 74 20 5b 64 69 63 74 20 6b 65 79 73 20 24 74 65  t [dict keys $te
4ed0: 73 74 5d 20 6d 73 67 70 61 63 6b 0a 20 20 20 20  st] msgpack.    
4ee0: 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20      } else {.   
4ef0: 20 20 20 20 20 20 20 20 20 6c 69 6e 64 65 78 20           lindex 
4f00: 24 6b 65 79 0a 20 20 20 20 20 20 20 20 7d 5d 5d  $key.        }]]
4f10: 0a 0a 20 20 20 20 20 20 20 20 73 65 74 20 75 6e  ..        set un
4f20: 70 61 63 6b 65 64 20 5b 66 6c 61 74 6d 61 70 20  packed [flatmap 
4f30: 78 20 5b 64 69 63 74 20 67 65 74 20 24 74 65 73  x [dict get $tes
4f40: 74 20 6d 73 67 70 61 63 6b 5d 20 7b 0a 20 20 20  t msgpack] {.   
4f50: 20 20 20 20 20 20 20 20 20 73 65 74 20 70 61 63           set pac
4f60: 6b 65 64 20 5b 6d 74 73 5f 75 6e 68 65 78 20 24  ked [mts_unhex $
4f70: 78 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6d  x].            m
4f80: 73 67 70 61 63 6b 20 75 6e 70 61 63 6b 20 24 70  sgpack unpack $p
4f90: 61 63 6b 65 64 0a 20 20 20 20 20 20 20 20 7d 5d  acked.        }]
4fa0: 0a 0a 20 20 20 20 20 20 20 20 6c 69 73 74 20 24  ..        list $
4fb0: 72 65 66 20 24 75 6e 70 61 63 6b 65 64 0a 20 20  ref $unpacked.  
4fc0: 20 20 7d 0a 7d 0a 0a 74 63 6c 74 65 73 74 3a 3a    }.}..tcltest::
4fd0: 74 65 73 74 20 6d 73 67 70 61 63 6b 2d 74 65 73  test msgpack-tes
4fe0: 74 2d 73 75 69 74 65 2d 61 72 72 61 79 20 7b 7d  t-suite-array {}
4ff0: 20 2d 62 6f 64 79 20 7b 0a 20 20 20 20 73 65 74   -body {.    set
5000: 20 66 69 6c 65 6e 61 6d 65 20 34 30 2e 61 72 72   filename 40.arr
5010: 61 79 2e 79 61 6d 6c 0a 0a 20 20 20 20 66 6f 72  ay.yaml..    for
5020: 65 61 63 68 20 7b 72 65 66 20 76 61 6c 75 65 73  each {ref values
5030: 7d 20 5b 6d 74 73 5f 74 65 73 74 20 24 66 69 6c  } [mts_test $fil
5040: 65 6e 61 6d 65 5d 20 7b 0a 20 20 20 20 20 20 20  ename] {.       
5050: 20 66 6f 72 65 61 63 68 20 76 61 6c 75 65 20 24   foreach value $
5060: 76 61 6c 75 65 73 20 7b 0a 20 20 20 20 20 20 20  values {.       
5070: 20 20 20 20 20 73 65 74 20 61 20 5b 6c 6d 61 70       set a [lmap
5080: 20 78 20 5b 6c 69 6e 64 65 78 20 24 76 61 6c 75   x [lindex $valu
5090: 65 20 31 5d 20 7b 20 6c 69 6e 64 65 78 20 24 78  e 1] { lindex $x
50a0: 20 31 20 7d 5d 0a 20 20 20 20 20 20 20 20 20 20   1 }].          
50b0: 20 20 69 66 20 7b 24 61 20 6e 65 20 24 72 65 66    if {$a ne $ref
50c0: 7d 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  } {.            
50d0: 20 20 20 20 65 72 72 6f 72 20 5b 6c 69 73 74 20      error [list 
50e0: 75 6e 70 61 63 6b 65 64 20 61 72 72 61 79 20 24  unpacked array $
50f0: 61 20 6e 65 20 24 72 65 66 20 69 6e 20 24 66 69  a ne $ref in $fi
5100: 6c 65 6e 61 6d 65 5d 0a 20 20 20 20 20 20 20 20  lename].        
5110: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 7d 0a      }.        }.
5120: 20 20 20 20 7d 0a 7d 20 2d 72 65 73 75 6c 74 20      }.} -result 
5130: 7b 7d 20 2d 63 6f 6e 73 74 72 61 69 6e 74 73 20  {} -constraints 
5140: 79 61 6d 6c 0a 0a 74 63 6c 74 65 73 74 3a 3a 74  yaml..tcltest::t
5150: 65 73 74 20 6d 73 67 70 61 63 6b 2d 74 65 73 74  est msgpack-test
5160: 2d 73 75 69 74 65 2d 62 69 6e 61 72 79 20 7b 7d  -suite-binary {}
5170: 20 2d 62 6f 64 79 20 7b 0a 20 20 20 20 73 65 74   -body {.    set
5180: 20 66 69 6c 65 6e 61 6d 65 20 31 32 2e 62 69 6e   filename 12.bin
5190: 61 72 79 2e 79 61 6d 6c 0a 0a 20 20 20 20 66 6f  ary.yaml..    fo
51a0: 72 65 61 63 68 20 7b 72 65 66 20 76 61 6c 75 65  reach {ref value
51b0: 73 7d 20 5b 6d 74 73 5f 74 65 73 74 20 24 66 69  s} [mts_test $fi
51c0: 6c 65 6e 61 6d 65 5d 20 7b 0a 20 20 20 20 20 20  lename] {.      
51d0: 20 20 73 65 74 20 72 65 66 20 5b 6d 74 73 5f 75    set ref [mts_u
51e0: 6e 68 65 78 20 24 72 65 66 5d 0a 20 20 20 20 20  nhex $ref].     
51f0: 20 20 20 66 6f 72 65 61 63 68 20 76 61 6c 75 65     foreach value
5200: 20 24 76 61 6c 75 65 73 20 7b 0a 20 20 20 20 20   $values {.     
5210: 20 20 20 20 20 20 20 73 65 74 20 62 20 5b 6c 69         set b [li
5220: 6e 64 65 78 20 24 76 61 6c 75 65 20 31 5d 0a 20  ndex $value 1]. 
5230: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 7b 24             if {$
5240: 62 20 6e 65 20 24 72 65 66 7d 20 7b 0a 20 20 20  b ne $ref} {.   
5250: 20 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72               err
5260: 6f 72 20 5b 6c 69 73 74 20 75 6e 70 61 63 6b 65  or [list unpacke
5270: 64 20 62 69 6e 61 72 79 20 24 62 20 6e 65 20 24  d binary $b ne $
5280: 72 65 66 20 69 6e 20 24 66 69 6c 65 6e 61 6d 65  ref in $filename
5290: 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a  ].            }.
52a0: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a          }.    }.
52b0: 7d 20 2d 72 65 73 75 6c 74 20 7b 7d 20 2d 63 6f  } -result {} -co
52c0: 6e 73 74 72 61 69 6e 74 73 20 79 61 6d 6c 0a 0a  nstraints yaml..
52d0: 74 63 6c 74 65 73 74 3a 3a 74 65 73 74 20 6d 73  tcltest::test ms
52e0: 67 70 61 63 6b 2d 74 65 73 74 2d 73 75 69 74 65  gpack-test-suite
52f0: 2d 65 78 74 20 7b 7d 20 2d 62 6f 64 79 20 7b 0a  -ext {} -body {.
5300: 20 20 20 20 73 65 74 20 66 69 6c 65 6e 61 6d 65      set filename
5310: 20 36 30 2e 65 78 74 2e 79 61 6d 6c 0a 0a 20 20   60.ext.yaml..  
5320: 20 20 66 6f 72 65 61 63 68 20 7b 72 65 66 20 76    foreach {ref v
5330: 61 6c 75 65 73 7d 20 5b 6d 74 73 5f 74 65 73 74  alues} [mts_test
5340: 20 24 66 69 6c 65 6e 61 6d 65 5d 20 7b 0a 20 20   $filename] {.  
5350: 20 20 20 20 20 20 6c 73 65 74 20 72 65 66 20 31        lset ref 1
5360: 20 5b 6d 74 73 5f 75 6e 68 65 78 20 5b 6c 69 6e   [mts_unhex [lin
5370: 64 65 78 20 24 72 65 66 20 31 5d 5d 0a 20 20 20  dex $ref 1]].   
5380: 20 20 20 20 20 66 6f 72 65 61 63 68 20 76 61 6c       foreach val
5390: 75 65 20 24 76 61 6c 75 65 73 20 7b 0a 20 20 20  ue $values {.   
53a0: 20 20 20 20 20 20 20 20 20 73 65 74 20 65 20 5b           set e [
53b0: 6c 72 61 6e 67 65 20 24 76 61 6c 75 65 20 31 20  lrange $value 1 
53c0: 65 6e 64 5d 0a 20 20 20 20 20 20 20 20 20 20 20  end].           
53d0: 20 69 66 20 7b 24 65 20 6e 65 20 24 72 65 66 7d   if {$e ne $ref}
53e0: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   {.             
53f0: 20 20 20 65 72 72 6f 72 20 5b 6c 69 73 74 20 75     error [list u
5400: 6e 70 61 63 6b 65 64 20 62 69 6e 61 72 79 20 24  npacked binary $
5410: 65 20 6e 65 20 24 72 65 66 20 69 6e 20 24 66 69  e ne $ref in $fi
5420: 6c 65 6e 61 6d 65 5d 0a 20 20 20 20 20 20 20 20  lename].        
5430: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 7d 0a      }.        }.
5440: 20 20 20 20 7d 0a 7d 20 2d 72 65 73 75 6c 74 20      }.} -result 
5450: 7b 7d 20 2d 63 6f 6e 73 74 72 61 69 6e 74 73 20  {} -constraints 
5460: 79 61 6d 6c 0a 0a 74 63 6c 74 65 73 74 3a 3a 74  yaml..tcltest::t
5470: 65 73 74 20 6d 73 67 70 61 63 6b 2d 74 65 73 74  est msgpack-test
5480: 2d 73 75 69 74 65 2d 6e 65 73 74 65 64 20 7b 7d  -suite-nested {}
5490: 20 2d 62 6f 64 79 20 7b 0a 20 20 20 20 73 65 74   -body {.    set
54a0: 20 66 69 6c 65 6e 61 6d 65 20 34 32 2e 6e 65 73   filename 42.nes
54b0: 74 65 64 2e 79 61 6d 6c 0a 0a 20 20 20 20 66 6f  ted.yaml..    fo
54c0: 72 65 61 63 68 20 7b 72 65 66 20 76 61 6c 75 65  reach {ref value
54d0: 73 7d 20 5b 6d 74 73 5f 74 65 73 74 20 24 66 69  s} [mts_test $fi
54e0: 6c 65 6e 61 6d 65 5d 20 7b 0a 20 20 20 20 20 20  lename] {.      
54f0: 20 20 66 6f 72 65 61 63 68 20 76 61 6c 75 65 20    foreach value 
5500: 24 76 61 6c 75 65 73 20 7b 0a 20 20 20 20 20 20  $values {.      
5510: 20 20 20 20 20 20 73 65 74 20 6d 20 5b 6c 6d 61        set m [lma
5520: 70 20 78 20 5b 6c 69 6e 64 65 78 20 24 76 61 6c  p x [lindex $val
5530: 75 65 20 31 5d 20 7b 20 6c 69 6e 64 65 78 20 24  ue 1] { lindex $
5540: 78 20 31 20 7d 5d 0a 20 20 20 20 20 20 20 20 20  x 1 }].         
5550: 20 20 20 69 66 20 7b 24 6d 20 6e 65 20 24 72 65     if {$m ne $re
5560: 66 7d 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  f} {.           
5570: 20 20 20 20 20 65 72 72 6f 72 20 5b 6c 69 73 74       error [list
5580: 20 75 6e 70 61 63 6b 65 64 20 61 72 72 61 79 20   unpacked array 
5590: 24 6d 20 6e 65 20 24 72 65 66 20 69 6e 20 24 66  $m ne $ref in $f
55a0: 69 6c 65 6e 61 6d 65 5d 0a 20 20 20 20 20 20 20  ilename].       
55b0: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 7d       }.        }
55c0: 0a 20 20 20 20 7d 0a 7d 20 2d 72 65 73 75 6c 74  .    }.} -result
55d0: 20 7b 7d 20 2d 63 6f 6e 73 74 72 61 69 6e 74 73   {} -constraints
55e0: 20 79 61 6d 6c 0a 0a 74 63 6c 74 65 73 74 3a 3a   yaml..tcltest::
55f0: 74 65 73 74 20 6d 73 67 70 61 63 6b 2d 74 65 73  test msgpack-tes
5600: 74 2d 73 75 69 74 65 2d 6e 75 6d 62 65 72 20 7b  t-suite-number {
5610: 7d 20 2d 62 6f 64 79 20 7b 0a 20 20 20 20 66 6f  } -body {.    fo
5620: 72 65 61 63 68 20 66 69 6c 65 6e 61 6d 65 20 7b  reach filename {
5630: 0a 20 20 20 20 20 20 20 20 32 30 2e 6e 75 6d 62  .        20.numb
5640: 65 72 2d 70 6f 73 69 74 69 76 65 2e 79 61 6d 6c  er-positive.yaml
5650: 0a 20 20 20 20 20 20 20 20 32 31 2e 6e 75 6d 62  .        21.numb
5660: 65 72 2d 6e 65 67 61 74 69 76 65 2e 79 61 6d 6c  er-negative.yaml
5670: 0a 20 20 20 20 20 20 20 20 32 32 2e 6e 75 6d 62  .        22.numb
5680: 65 72 2d 66 6c 6f 61 74 2e 79 61 6d 6c 0a 20 20  er-float.yaml.  
5690: 20 20 20 20 20 20 32 33 2e 6e 75 6d 62 65 72 2d        23.number-
56a0: 62 69 67 6e 75 6d 2e 79 61 6d 6c 0a 20 20 20 20  bignum.yaml.    
56b0: 7d 20 7b 0a 20 20 20 20 20 20 20 20 66 6f 72 65  } {.        fore
56c0: 61 63 68 20 7b 72 65 66 20 76 61 6c 75 65 73 7d  ach {ref values}
56d0: 20 5b 6d 74 73 5f 74 65 73 74 20 24 66 69 6c 65   [mts_test $file
56e0: 6e 61 6d 65 5d 20 7b 0a 20 20 20 20 20 20 20 20  name] {.        
56f0: 20 20 20 20 66 6f 72 65 61 63 68 20 76 61 6c 75      foreach valu
5700: 65 20 24 76 61 6c 75 65 73 20 7b 0a 20 20 20 20  e $values {.    
5710: 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20              set 
5720: 6e 20 5b 6c 69 6e 64 65 78 20 24 76 61 6c 75 65  n [lindex $value
5730: 20 31 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20   1].            
5740: 20 20 20 20 69 66 20 7b 24 6e 20 21 3d 20 24 72      if {$n != $r
5750: 65 66 7d 20 7b 0a 20 20 20 20 20 20 20 20 20 20  ef} {.          
5760: 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 20            error 
5770: 5b 6c 69 73 74 20 75 6e 70 61 63 6b 65 64 20 6e  [list unpacked n
5780: 75 6d 62 65 72 20 24 6e 20 21 3d 20 24 72 65 66  umber $n != $ref
5790: 20 69 6e 20 24 66 69 6c 65 6e 61 6d 65 5d 0a 20   in $filename]. 
57a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
57b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20  .            }. 
57c0: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 7d         }.    }.}
57d0: 20 2d 72 65 73 75 6c 74 20 7b 7d 20 2d 63 6f 6e   -result {} -con
57e0: 73 74 72 61 69 6e 74 73 20 79 61 6d 6c 0a 0a 74  straints yaml..t
57f0: 63 6c 74 65 73 74 3a 3a 74 65 73 74 20 6d 73 67  cltest::test msg
5800: 70 61 63 6b 2d 74 65 73 74 2d 73 75 69 74 65 2d  pack-test-suite-
5810: 73 74 72 69 6e 67 20 7b 7d 20 2d 62 6f 64 79 20  string {} -body 
5820: 7b 0a 20 20 20 20 66 6f 72 65 61 63 68 20 66 69  {.    foreach fi
5830: 6c 65 6e 61 6d 65 20 7b 0a 20 20 20 20 20 20 20  lename {.       
5840: 20 33 30 2e 73 74 72 69 6e 67 2d 61 73 63 69 69   30.string-ascii
5850: 2e 79 61 6d 6c 0a 20 20 20 20 20 20 20 20 33 31  .yaml.        31
5860: 2e 73 74 72 69 6e 67 2d 75 74 66 38 2e 79 61 6d  .string-utf8.yam
5870: 6c 0a 20 20 20 20 20 20 20 20 33 32 2e 73 74 72  l.        32.str
5880: 69 6e 67 2d 65 6d 6f 6a 69 2e 79 61 6d 6c 0a 20  ing-emoji.yaml. 
5890: 20 20 20 7d 20 7b 0a 20 20 20 20 20 20 20 20 66     } {.        f
58a0: 6f 72 65 61 63 68 20 7b 72 65 66 20 76 61 6c 75  oreach {ref valu
58b0: 65 73 7d 20 5b 6d 74 73 5f 74 65 73 74 20 24 66  es} [mts_test $f
58c0: 69 6c 65 6e 61 6d 65 5d 20 7b 0a 20 20 20 20 20  ilename] {.     
58d0: 20 20 20 20 20 20 20 66 6f 72 65 61 63 68 20 76         foreach v
58e0: 61 6c 75 65 20 24 76 61 6c 75 65 73 20 7b 0a 20  alue $values {. 
58f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
5900: 65 74 20 73 20 5b 6c 69 6e 64 65 78 20 24 76 61  et s [lindex $va
5910: 6c 75 65 20 31 5d 0a 20 20 20 20 20 20 20 20 20  lue 1].         
5920: 20 20 20 20 20 20 20 69 66 20 7b 24 73 20 6e 65         if {$s ne
5930: 20 24 72 65 66 7d 20 7b 0a 20 20 20 20 20 20 20   $ref} {.       
5940: 20 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72               err
5950: 6f 72 20 5b 6c 69 73 74 20 75 6e 70 61 63 6b 65  or [list unpacke
5960: 64 20 73 74 72 69 6e 67 20 24 73 20 6e 65 20 24  d string $s ne $
5970: 72 65 66 20 69 6e 20 24 66 69 6c 65 6e 61 6d 65  ref in $filename
5980: 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ].              
5990: 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20    }.            
59a0: 7d 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20  }.        }.    
59b0: 7d 0a 7d 20 2d 72 65 73 75 6c 74 20 7b 7d 20 2d  }.} -result {} -
59c0: 63 6f 6e 73 74 72 61 69 6e 74 73 20 79 61 6d 6c  constraints yaml
59d0: 0a 0a 74 63 6c 74 65 73 74 3a 3a 74 65 73 74 20  ..tcltest::test 
59e0: 6d 73 67 70 61 63 6b 2d 74 65 73 74 2d 73 75 69  msgpack-test-sui
59f0: 74 65 2d 74 69 6d 65 73 74 61 6d 70 20 7b 7d 20  te-timestamp {} 
5a00: 2d 62 6f 64 79 20 7b 0a 20 20 20 20 73 65 74 20  -body {.    set 
5a10: 66 69 6c 65 6e 61 6d 65 20 35 30 2e 74 69 6d 65  filename 50.time
5a20: 73 74 61 6d 70 2e 79 61 6d 6c 0a 0a 20 20 20 20  stamp.yaml..    
5a30: 66 6f 72 65 61 63 68 20 7b 72 65 66 20 76 61 6c  foreach {ref val
5a40: 75 65 73 7d 20 5b 6d 74 73 5f 74 65 73 74 20 24  ues} [mts_test $
5a50: 66 69 6c 65 6e 61 6d 65 5d 20 7b 0a 20 20 20 20  filename] {.    
5a60: 20 20 20 20 66 6f 72 65 61 63 68 20 76 61 6c 75      foreach valu
5a70: 65 20 24 76 61 6c 75 65 73 20 7b 0a 20 20 20 20  e $values {.    
5a80: 20 20 20 20 20 20 20 20 73 65 74 20 74 20 5b 6c          set t [l
5a90: 72 61 6e 67 65 20 24 76 61 6c 75 65 20 31 20 32  range $value 1 2
5aa0: 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ].            if
5ab0: 20 7b 24 74 20 6e 65 20 24 72 65 66 7d 20 7b 0a   {$t ne $ref} {.
5ac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5ad0: 65 72 72 6f 72 20 5b 6c 69 73 74 20 75 6e 70 61  error [list unpa
5ae0: 63 6b 65 64 20 74 69 6d 65 73 74 61 6d 70 20 24  cked timestamp $
5af0: 74 20 6e 65 20 24 72 65 66 20 69 6e 20 24 66 69  t ne $ref in $fi
5b00: 6c 65 6e 61 6d 65 5d 0a 20 20 20 20 20 20 20 20  lename].        
5b10: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 7d 0a      }.        }.
5b20: 20 20 20 20 7d 0a 7d 20 2d 72 65 73 75 6c 74 20      }.} -result 
5b30: 7b 7d 20 2d 63 6f 6e 73 74 72 61 69 6e 74 73 20  {} -constraints 
5b40: 79 61 6d 6c 0a 0a 74 63 6c 74 65 73 74 3a 3a 74  yaml..tcltest::t
5b50: 65 73 74 20 6d 73 67 70 61 63 6b 2d 74 65 73 74  est msgpack-test
5b60: 2d 73 75 69 74 65 2d 70 61 63 6b 2d 75 74 66 38  -suite-pack-utf8
5b70: 20 7b 7d 20 2d 62 6f 64 79 20 7b 0a 20 20 20 20   {} -body {.    
5b80: 73 65 74 20 74 65 73 74 73 20 5b 79 61 6d 6c 3a  set tests [yaml:
5b90: 3a 79 61 6d 6c 32 64 69 63 74 20 5b 6d 74 73 5f  :yaml2dict [mts_
5ba0: 74 65 73 74 5f 66 69 6c 65 20 33 31 2e 73 74 72  test_file 31.str
5bb0: 69 6e 67 2d 75 74 66 38 2e 79 61 6d 6c 5d 5d 0a  ing-utf8.yaml]].
5bc0: 0a 20 20 20 20 66 6c 61 74 6d 61 70 20 74 65 73  .    flatmap tes
5bd0: 74 20 24 74 65 73 74 73 20 7b 0a 20 20 20 20 20  t $tests {.     
5be0: 20 20 20 73 65 74 20 72 65 66 20 5b 64 69 63 74     set ref [dict
5bf0: 20 67 65 74 20 24 74 65 73 74 20 73 74 72 69 6e   get $test strin
5c00: 67 5d 0a 20 20 20 20 20 20 20 20 73 65 74 20 68  g].        set h
5c10: 65 78 20 5b 66 6c 61 74 6d 61 70 20 78 20 5b 64  ex [flatmap x [d
5c20: 69 63 74 20 67 65 74 20 24 74 65 73 74 20 6d 73  ict get $test ms
5c30: 67 70 61 63 6b 5d 20 7b 0a 20 20 20 20 20 20 20  gpack] {.       
5c40: 20 20 20 20 20 73 74 72 69 6e 67 20 6d 61 70 20       string map 
5c50: 7b 2d 20 7b 7d 7d 20 24 78 0a 20 20 20 20 20 20  {- {}} $x.      
5c60: 20 20 7d 5d 0a 20 20 20 20 20 20 20 20 73 65 74    }].        set
5c70: 20 68 65 78 50 61 63 6b 65 64 20 5b 62 69 6e 61   hexPacked [bina
5c80: 72 79 20 65 6e 63 6f 64 65 20 68 65 78 20 5b 6d  ry encode hex [m
5c90: 73 67 70 61 63 6b 20 70 61 63 6b 20 73 74 72 20  sgpack pack str 
5ca0: 24 72 65 66 5d 5d 0a 0a 20 20 20 20 20 20 20 20  $ref]]..        
5cb0: 69 66 20 7b 24 68 65 78 50 61 63 6b 65 64 20 6e  if {$hexPacked n
5cc0: 69 20 24 68 65 78 7d 20 7b 0a 20 20 20 20 20 20  i $hex} {.      
5cd0: 20 20 20 20 20 20 65 72 72 6f 72 20 5b 6c 69 73        error [lis
5ce0: 74 20 70 61 63 6b 65 64 20 24 72 65 66 20 65 71  t packed $ref eq
5cf0: 20 24 68 65 78 50 61 63 6b 65 64 20 6e 6f 74 20   $hexPacked not 
5d00: 69 6e 20 6c 69 73 74 20 24 68 65 78 5d 0a 20 20  in list $hex].  
5d10: 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 7d 20        }.    }.} 
5d20: 2d 72 65 73 75 6c 74 20 7b 7d 20 2d 63 6f 6e 73  -result {} -cons
5d30: 74 72 61 69 6e 74 73 20 79 61 6d 6c 0a 0a 0a 23  traints yaml...#
5d40: 20 45 78 69 74 20 77 69 74 68 20 61 20 6e 6f 6e   Exit with a non
5d50: 7a 65 72 6f 20 73 74 61 74 75 73 20 69 66 20 74  zero status if t
5d60: 68 65 72 65 20 61 72 65 20 66 61 69 6c 65 64 20  here are failed 
5d70: 74 65 73 74 73 2e 0a 73 65 74 20 66 61 69 6c 65  tests..set faile
5d80: 64 20 5b 65 78 70 72 20 7b 24 74 63 6c 74 65 73  d [expr {$tcltes
5d90: 74 3a 3a 6e 75 6d 54 65 73 74 73 28 46 61 69 6c  t::numTests(Fail
5da0: 65 64 29 20 3e 20 30 7d 5d 0a 0a 74 63 6c 74 65  ed) > 0}]..tclte
5db0: 73 74 3a 3a 63 6c 65 61 6e 75 70 54 65 73 74 73  st::cleanupTests
5dc0: 0a 69 66 20 7b 24 66 61 69 6c 65 64 7d 20 7b 20  .if {$failed} { 
5dd0: 65 78 69 74 20 31 20 7d 0a                       exit 1 }.