Tcl Library Source Code

Hex Artifact Content
Login

Artifact ffc7a5f59cb714728eec96e160fc3b8d089c5216:


0000: 23 20 2d 2a 2d 20 74 63 6c 20 2d 2a 2d 0a 23 20  # -*- tcl -*-.# 
0010: 47 65 6e 65 72 61 6c 20 73 65 74 20 6f 66 20 65  General set of e
0020: 72 72 6f 72 20 63 61 73 65 73 20 72 65 67 61 72  rror cases regar
0030: 64 69 6e 67 20 74 68 65 20 6e 75 6d 62 65 72 20  ding the number 
0040: 6f 66 20 61 72 67 75 6d 65 6e 74 73 2e 0a 0a 74  of arguments...t
0050: 65 73 74 20 70 74 2d 70 65 67 2d 74 6f 2d 70 65  est pt-peg-to-pe
0060: 67 2d 73 65 74 3a 24 7b 73 65 74 69 6d 70 6c 7d  g-set:${setimpl}
0070: 2d 31 2e 30 20 7b 63 6f 6e 76 65 72 74 2c 20 77  -1.0 {convert, w
0080: 72 6f 6e 67 23 61 72 67 73 7d 20 2d 62 6f 64 79  rong#args} -body
0090: 20 7b 0a 20 20 20 20 70 74 3a 3a 70 65 67 3a 3a   {.    pt::peg::
00a0: 74 6f 3a 3a 70 65 67 20 63 6f 6e 76 65 72 74 0a  to::peg convert.
00b0: 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 65  } -returnCodes e
00c0: 72 72 6f 72 20 2d 72 65 73 75 6c 74 20 7b 77 72  rror -result {wr
00d0: 6f 6e 67 20 23 20 61 72 67 73 3a 20 73 68 6f 75  ong # args: shou
00e0: 6c 64 20 62 65 20 22 70 74 3a 3a 70 65 67 3a 3a  ld be "pt::peg::
00f0: 74 6f 3a 3a 70 65 67 20 63 6f 6e 76 65 72 74 20  to::peg convert 
0100: 73 65 72 69 61 6c 22 7d 0a 0a 74 65 73 74 20 70  serial"}..test p
0110: 74 2d 70 65 67 2d 74 6f 2d 70 65 67 2d 73 65 74  t-peg-to-peg-set
0120: 3a 24 7b 73 65 74 69 6d 70 6c 7d 2d 31 2e 31 20  :${setimpl}-1.1 
0130: 7b 63 6f 6e 76 65 72 74 2c 20 77 72 6f 6e 67 23  {convert, wrong#
0140: 61 72 67 73 7d 20 2d 62 6f 64 79 20 7b 0a 20 20  args} -body {.  
0150: 20 20 70 74 3a 3a 70 65 67 3a 3a 74 6f 3a 3a 70    pt::peg::to::p
0160: 65 67 20 63 6f 6e 76 65 72 74 20 53 20 58 58 58  eg convert S XXX
0170: 0a 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20  .} -returnCodes 
0180: 65 72 72 6f 72 20 2d 72 65 73 75 6c 74 20 7b 77  error -result {w
0190: 72 6f 6e 67 20 23 20 61 72 67 73 3a 20 73 68 6f  rong # args: sho
01a0: 75 6c 64 20 62 65 20 22 70 74 3a 3a 70 65 67 3a  uld be "pt::peg:
01b0: 3a 74 6f 3a 3a 70 65 67 20 63 6f 6e 76 65 72 74  :to::peg convert
01c0: 20 73 65 72 69 61 6c 22 7d 0a 0a 74 65 73 74 20   serial"}..test 
01d0: 70 74 2d 70 65 67 2d 74 6f 2d 70 65 67 2d 73 65  pt-peg-to-peg-se
01e0: 74 3a 24 7b 73 65 74 69 6d 70 6c 7d 2d 32 2e 30  t:${setimpl}-2.0
01f0: 20 7b 72 65 73 65 74 2c 20 77 72 6f 6e 67 23 61   {reset, wrong#a
0200: 72 67 73 7d 20 2d 62 6f 64 79 20 7b 0a 20 20 20  rgs} -body {.   
0210: 20 70 74 3a 3a 70 65 67 3a 3a 74 6f 3a 3a 70 65   pt::peg::to::pe
0220: 67 20 72 65 73 65 74 20 58 58 58 0a 7d 20 2d 72  g reset XXX.} -r
0230: 65 74 75 72 6e 43 6f 64 65 73 20 65 72 72 6f 72  eturnCodes error
0240: 20 2d 72 65 73 75 6c 74 20 7b 77 72 6f 6e 67 20   -result {wrong 
0250: 23 20 61 72 67 73 3a 20 73 68 6f 75 6c 64 20 62  # args: should b
0260: 65 20 22 70 74 3a 3a 70 65 67 3a 3a 74 6f 3a 3a  e "pt::peg::to::
0270: 70 65 67 20 72 65 73 65 74 22 7d 0a 0a 23 20 2d  peg reset"}..# -
0280: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0290: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
02a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
02b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
02c0: 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 23 20 54 4f 44 4f  --------..# TODO
02d0: 20 3a 3a 20 54 65 73 74 73 20 6d 69 73 73 69 6e   :: Tests missin
02e0: 67 20 66 6f 72 3a 20 63 6f 6e 66 69 67 75 72 65  g for: configure
02f0: 2f 63 67 65 74 2c 20 72 65 73 65 74 0a 0a 23 20  /cget, reset..# 
0300: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0310: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0320: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0330: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0340: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 23 20 54 65 73  ---------..# Tes
0350: 74 69 6e 67 20 74 68 65 20 67 65 6e 65 72 61 74  ting the generat
0360: 69 6f 6e 20 6f 66 20 70 65 67 20 6f 75 74 70 75  ion of peg outpu
0370: 74 2c 20 66 72 6f 6d 20 67 72 61 6d 6d 61 72 20  t, from grammar 
0380: 73 65 72 69 61 6c 69 7a 61 74 69 6f 6e 2c 0a 23  serialization,.#
0390: 20 66 6f 72 20 61 6c 6c 20 70 6f 73 73 69 62 6c   for all possibl
03a0: 65 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 73  e configurations
03b0: 20 6f 66 20 74 68 69 73 20 70 6c 75 67 69 6e 2e   of this plugin.
03c0: 0a 0a 66 6f 72 65 61 63 68 20 7b 6b 20 66 75 73  ..foreach {k fus
03d0: 65 64 20 73 65 63 74 69 6f 6e 7d 20 7b 0a 20 20  ed section} {.  
03e0: 20 20 30 20 30 20 7b 7d 0a 20 20 20 20 31 20 31    0 0 {}.    1 1
03f0: 20 2d 66 75 73 65 64 0a 7d 20 7b 0a 20 20 20 20   -fused.} {.    
0400: 54 65 73 74 46 69 6c 65 73 50 72 6f 63 65 73 73  TestFilesProcess
0410: 20 24 6d 79 74 65 73 74 64 69 72 20 6f 6b 20 70   $mytestdir ok p
0420: 65 67 5f 73 65 72 69 61 6c 2d 63 61 6e 6f 6e 69  eg_serial-canoni
0430: 63 61 6c 20 70 65 67 5f 70 65 67 24 73 65 63 74  cal peg_peg$sect
0440: 69 6f 6e 20 2d 3e 20 6e 20 6c 61 62 65 6c 20 69  ion -> n label i
0450: 6e 70 75 74 20 64 61 74 61 20 65 78 70 65 63 74  nput data expect
0460: 65 64 20 7b 0a 09 74 65 73 74 20 70 74 2d 70 65  ed {..test pt-pe
0470: 67 2d 74 6f 2d 70 65 67 2d 73 65 74 3a 24 7b 73  g-to-peg-set:${s
0480: 65 74 69 6d 70 6c 7d 2d 33 2e 24 6b 2e 24 6e 20  etimpl}-3.$k.$n 
0490: 22 70 74 3a 3a 70 65 67 3a 3a 74 6f 3a 3a 70 65  "pt::peg::to::pe
04a0: 67 2c 20 24 6c 61 62 65 6c 24 73 65 63 74 69 6f  g, $label$sectio
04b0: 6e 2c 20 6f 6b 22 20 2d 73 65 74 75 70 20 7b 0a  n, ok" -setup {.
04c0: 09 20 20 20 20 70 74 3a 3a 70 65 67 3a 3a 74 6f  .    pt::peg::to
04d0: 3a 3a 70 65 67 20 72 65 73 65 74 0a 09 20 20 20  ::peg reset..   
04e0: 20 70 74 3a 3a 70 65 67 3a 3a 74 6f 3a 3a 70 65   pt::peg::to::pe
04f0: 67 20 63 6f 6e 66 69 67 75 72 65 20 2d 66 75 73  g configure -fus
0500: 65 64 20 24 66 75 73 65 64 0a 09 7d 20 2d 62 6f  ed $fused..} -bo
0510: 64 79 20 7b 0a 09 20 20 20 20 70 74 3a 3a 70 65  dy {..    pt::pe
0520: 67 3a 3a 74 6f 3a 3a 70 65 67 20 63 6f 6e 76 65  g::to::peg conve
0530: 72 74 20 24 64 61 74 61 0a 09 7d 20 2d 63 6c 65  rt $data..} -cle
0540: 61 6e 75 70 20 7b 0a 09 20 20 20 20 70 74 3a 3a  anup {..    pt::
0550: 70 65 67 3a 3a 74 6f 3a 3a 70 65 67 20 72 65 73  peg::to::peg res
0560: 65 74 0a 09 7d 20 2d 72 65 73 75 6c 74 20 24 65  et..} -result $e
0570: 78 70 65 63 74 65 64 0a 20 20 20 20 7d 0a 0a 20  xpected.    }.. 
0580: 20 20 20 54 65 73 74 46 69 6c 65 73 50 72 6f 63     TestFilesProc
0590: 65 73 73 20 24 6d 79 74 65 73 74 64 69 72 20 6f  ess $mytestdir o
05a0: 6b 20 70 65 67 5f 73 65 72 69 61 6c 2d 63 61 6e  k peg_serial-can
05b0: 6f 6e 69 63 61 6c 20 70 65 67 5f 70 65 67 2d 74  onical peg_peg-t
05c0: 65 6d 70 6c 61 74 65 64 24 73 65 63 74 69 6f 6e  emplated$section
05d0: 20 2d 3e 20 6e 20 6c 61 62 65 6c 20 69 6e 70 75   -> n label inpu
05e0: 74 20 64 61 74 61 20 65 78 70 65 63 74 65 64 20  t data expected 
05f0: 7b 0a 09 74 65 73 74 20 70 74 2d 70 65 67 2d 74  {..test pt-peg-t
0600: 6f 2d 70 65 67 2d 73 65 74 3a 24 7b 73 65 74 69  o-peg-set:${seti
0610: 6d 70 6c 7d 2d 34 2e 24 6b 2e 24 6e 20 22 70 74  mpl}-4.$k.$n "pt
0620: 3a 3a 70 65 67 3a 3a 74 6f 3a 3a 70 65 67 2c 20  ::peg::to::peg, 
0630: 24 6c 61 62 65 6c 24 73 65 63 74 69 6f 6e 2c 20  $label$section, 
0640: 6f 6b 22 20 2d 73 65 74 75 70 20 7b 0a 0a 09 20  ok" -setup {... 
0650: 20 20 20 74 65 78 74 3a 3a 77 72 69 74 65 20 72     text::write r
0660: 65 73 65 74 0a 09 20 20 20 20 74 65 78 74 3a 3a  eset..    text::
0670: 77 72 69 74 65 20 66 69 65 6c 64 20 20 20 23 20  write field   # 
0680: 2d 2a 2d 20 74 65 78 74 20 2d 2a 2d 20 20 20 20  -*- text -*-    
0690: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
06a0: 20 20 20 20 20 20 20 20 20 20 3b 20 74 65 78 74            ; text
06b0: 3a 3a 77 72 69 74 65 20 2f 6c 69 6e 65 0a 09 20  ::write /line.. 
06c0: 20 20 20 74 65 78 74 3a 3a 77 72 69 74 65 20 66     text::write f
06d0: 69 65 6c 64 20 20 20 23 20 50 61 72 73 69 6e 67  ield   # Parsing
06e0: 20 45 78 70 72 65 73 73 69 6f 6e 20 47 72 61 6d   Expression Gram
06f0: 6d 61 72 20 27 40 6e 61 6d 65 40 27 2e 20 20 20  mar '@name@'.   
0700: 20 20 20 3b 20 74 65 78 74 3a 3a 77 72 69 74 65     ; text::write
0710: 20 2f 6c 69 6e 65 0a 09 20 20 20 20 74 65 78 74   /line..    text
0720: 3a 3a 77 72 69 74 65 20 66 69 65 6c 64 20 20 20  ::write field   
0730: 23 20 47 65 6e 65 72 61 74 65 64 20 66 6f 72 20  # Generated for 
0740: 40 75 73 65 72 40 2c 20 66 72 6f 6d 20 66 69 6c  @user@, from fil
0750: 65 20 27 40 66 69 6c 65 40 27 20 20 3b 20 74 65  e '@file@'  ; te
0760: 78 74 3a 3a 77 72 69 74 65 20 2f 6c 69 6e 65 0a  xt::write /line.
0770: 09 20 20 20 20 74 65 78 74 3a 3a 77 72 69 74 65  .    text::write
0780: 20 2f 6c 69 6e 65 0a 09 20 20 20 20 74 65 78 74   /line..    text
0790: 3a 3a 77 72 69 74 65 20 66 69 65 6c 64 20 20 20  ::write field   
07a0: 40 63 6f 64 65 40 20 20 20 20 20 20 20 20 20 20  @code@          
07b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
07c0: 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 74 65              ; te
07d0: 78 74 3a 3a 77 72 69 74 65 20 2f 6c 69 6e 65 0a  xt::write /line.
07e0: 09 20 20 20 20 74 65 78 74 3a 3a 77 72 69 74 65  .    text::write
07f0: 20 2f 6c 69 6e 65 0a 09 20 20 20 20 74 65 78 74   /line..    text
0800: 3a 3a 77 72 69 74 65 20 66 69 65 6c 64 20 20 20  ::write field   
0810: 23 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  #               
0820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0830: 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 74 65              ; te
0840: 78 74 3a 3a 77 72 69 74 65 20 2f 6c 69 6e 65 0a  xt::write /line.
0850: 09 20 20 20 20 74 65 78 74 3a 3a 77 72 69 74 65  .    text::write
0860: 20 66 69 65 6c 64 20 20 20 23 20 20 20 20 20 20   field   #      
0870: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0880: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0890: 20 20 20 20 20 3b 20 74 65 78 74 3a 3a 77 72 69       ; text::wri
08a0: 74 65 20 2f 6c 69 6e 65 0a 0a 09 20 20 20 20 70  te /line...    p
08b0: 74 3a 3a 70 65 67 3a 3a 74 6f 3a 3a 70 65 67 20  t::peg::to::peg 
08c0: 72 65 73 65 74 0a 09 20 20 20 20 70 74 3a 3a 70  reset..    pt::p
08d0: 65 67 3a 3a 74 6f 3a 3a 70 65 67 20 63 6f 6e 66  eg::to::peg conf
08e0: 69 67 75 72 65 20 2d 66 75 73 65 64 20 20 20 20  igure -fused    
08f0: 24 66 75 73 65 64 0a 09 20 20 20 20 70 74 3a 3a  $fused..    pt::
0900: 70 65 67 3a 3a 74 6f 3a 3a 70 65 67 20 63 6f 6e  peg::to::peg con
0910: 66 69 67 75 72 65 20 2d 6e 61 6d 65 20 20 20 20  figure -name    
0920: 20 54 45 4d 50 4c 41 54 45 0a 09 20 20 20 20 70   TEMPLATE..    p
0930: 74 3a 3a 70 65 67 3a 3a 74 6f 3a 3a 70 65 67 20  t::peg::to::peg 
0940: 63 6f 6e 66 69 67 75 72 65 20 2d 66 69 6c 65 20  configure -file 
0950: 20 20 20 20 54 45 53 54 0a 09 20 20 20 20 70 74      TEST..    pt
0960: 3a 3a 70 65 67 3a 3a 74 6f 3a 3a 70 65 67 20 63  ::peg::to::peg c
0970: 6f 6e 66 69 67 75 72 65 20 2d 74 65 6d 70 6c 61  onfigure -templa
0980: 74 65 20 5b 74 65 78 74 3a 3a 77 72 69 74 65 20  te [text::write 
0990: 67 65 74 5d 0a 0a 09 20 20 20 20 74 65 78 74 3a  get]...    text:
09a0: 3a 77 72 69 74 65 20 72 65 73 65 74 0a 09 7d 20  :write reset..} 
09b0: 2d 62 6f 64 79 20 7b 0a 09 20 20 20 20 70 74 3a  -body {..    pt:
09c0: 3a 70 65 67 3a 3a 74 6f 3a 3a 70 65 67 20 63 6f  :peg::to::peg co
09d0: 6e 76 65 72 74 20 24 64 61 74 61 0a 09 7d 20 2d  nvert $data..} -
09e0: 63 6c 65 61 6e 75 70 20 7b 0a 09 20 20 20 20 70  cleanup {..    p
09f0: 74 3a 3a 70 65 67 3a 3a 74 6f 3a 3a 70 65 67 20  t::peg::to::peg 
0a00: 72 65 73 65 74 0a 09 7d 20 2d 72 65 73 75 6c 74  reset..} -result
0a10: 20 24 65 78 70 65 63 74 65 64 0a 20 20 20 20 7d   $expected.    }
0a20: 0a 7d 0a 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  .}..#-----------
0a30: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0a40: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0a50: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0a60: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 75 6e 73 65  -----------.unse
0a70: 74 20 6e 20 6c 61 62 65 6c 20 69 6e 70 75 74 20  t n label input 
0a80: 64 61 74 61 20 65 78 70 65 63 74 65 64 0a        data expected.