Artifact
ffc7a5f59cb714728eec96e160fc3b8d089c5216 :
File
modules/pt/tests/pt_peg_to_peg.tests
— part of check-in
[6d971eaca0]
at
2010-03-26 05:07:24
on branch trunk
—
* New module, 'pt' for ParserTools. Requires Tcl 8.5. Supercedes
grammar_peg, grammar_me, and page.
(user:
andreas_kupries
size: 2702)
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.