1##########################################################################
2# TEPAM - Tcl's Enhanced Procedure and Argument Manager
3##########################################################################
4#
5# proc_subproc.test: 
6# This file is part of the enhanced procedure and argument manager's regression
7# test. It validates the declaration and call of the procedure sub commands.
8#
9# Copyright (C) 2009, 2010 Andreas Drollinger
10# 
11# RCS: @(#) $Id: proc_subproc.test,v 1.1 2010/02/11 21:50:55 droll Exp $
12##########################################################################
13# See the file "license.terms" for information on usage and redistribution
14# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
15##########################################################################
16
17source [file join \
18   [file dirname [file dirname [file join [pwd] [info script]]]] \
19   devtools testutilities.tcl]
20
21testsNeedTcl     8.3
22testsNeedTcltest 1.0
23
24catch {namespace delete ::tepam}
25testing {
26   useLocal tepam.tcl tepam
27}
28
29######## Main procedure and sub procedures, top-down declaration ########
30
31   # Declaration
32      test tepam-sp.dcl_td.dcl.1 "tepam, sub procedure top-down declaration - main procedure declaration" \
33               -body {tepam::procedure {MainProc1} {} {return Proc1}} \
34               -result "" -output ""
35
36      test tepam-sp.dcl_td.dcl.2 "tepam, sub procedure top-down declaration - first sub procedure declaration" \
37               -body {tepam::procedure {MainProc1 SubProc1} {} {return Proc11}} \
38               -result "" -output ""
39
40      test tepam-sp.dcl_td.dcl.3 "tepam, sub procedure top-down declaration - second sub procedure declaration" \
41               -body {tepam::procedure {MainProc1 SubProc2} {} {return Proc12}} \
42               -result "" -output ""
43
44      test tepam-sp.dcl_td.dcl.4 "tepam, sub procedure top-down declaration - sub sub procedure declaration" \
45               -body {tepam::procedure {MainProc1 SubProc2 SubProc22} {} {return Proc122}} \
46               -result "" -output ""
47
48   # Help
49      test tepam-sp.dcl_td.hlp.1 "tepam, sub procedure top-down declaration - main procedure help" \
50               -body {MainProc1 -help} \
51               -result "" -output {SYNOPSIS\s+MainProc1\s+MainProc1 SubProc1\s+MainProc1 SubProc2\s+MainProc1 SubProc2 SubProc22\s*$} -match regexp 
52
53      test tepam-sp.dcl_td.hlp.2 "tepam, sub procedure top-down declaration - first sub procedure help" \
54               -body {MainProc1 SubProc1 -help} \
55               -result "" -output {SYNOPSIS\s+MainProc1 SubProc1\s+$} -match regexp
56
57      test tepam-sp.dcl_td.hlp.3 "tepam, sub procedure top-down declaration - second sub procedure help" \
58               -body {MainProc1 SubProc2 -help} \
59               -result "" -output {SYNOPSIS\s+MainProc1 SubProc2\s+MainProc1 SubProc2 SubProc22\s*$} -match regexp
60
61      test tepam-sp.dcl_td.hlp.4 "tepam, sub procedure top-down declaration - sub sub procedure help" \
62               -body {MainProc1 SubProc2 SubProc22 -help} \
63               -result "" -output {SYNOPSIS\s+MainProc1 SubProc2 SubProc22\s+$} -match regexp
64
65   # Execution
66      test tepam-sp.dcl_td.exe.1 "tepam, sub procedure top-down declaration - main procedure execution" \
67               -body {MainProc1} \
68               -result "Proc1" -output "" -match exact
69
70      test tepam-sp.dcl_td.exe.2 "tepam, sub procedure top-down declaration - first sub procedure execution" \
71               -body {MainProc1 SubProc1} \
72               -result "Proc11" -output "" -match exact
73
74      test tepam-sp.dcl_td.exe.3 "tepam, sub procedure top-down declaration - second sub procedure execution" \
75               -body {MainProc1 SubProc2} \
76               -result "Proc12" -output "" -match exact
77
78      test tepam-sp.dcl_td.exe.4 "tepam, sub procedure top-down declaration - sub sub procedure execution" \
79               -body {MainProc1 SubProc2 SubProc22} \
80               -result "Proc122" -output "" -match exact
81
82######## Main procedure and sub procedures, buttom-up declaration ########
83
84   # Declaration
85      test tepam-sp.dcl_bu.dcl.1 "tepam, sub procedure buttom-up declaration - sub sub procedure declaration" \
86               -body {tepam::procedure {MainProc2 SubProc2 SubProc22} {} {return Proc222}} \
87               -result "" -output ""
88
89      test tepam-sp.dcl_bu.dcl.2 "tepam, sub procedure buttom-up declaration - second sub procedure declaration" \
90               -body {tepam::procedure {MainProc2 SubProc2} {} {return Proc22}} \
91               -result "" -output ""
92
93      test tepam-sp.dcl_bu.dcl.3 "tepam, sub procedure buttom-up declaration - first sub procedure declaration" \
94               -body {tepam::procedure {MainProc2 SubProc1} {} {return Proc21}} \
95               -result "" -output ""
96
97      test tepam-sp.dcl_bu.dcl.4 "tepam, sub procedure buttom-up declaration - main procedure declaration" \
98               -body {tepam::procedure {MainProc2} {} {return Proc2}} \
99               -result "" -output ""
100
101   # Help
102      test tepam-sp.dcl_bu.hlp.1 "tepam, sub procedure buttom-down declaration - main procedure help" \
103               -body {MainProc2 -help} \
104               -result "" -output {SYNOPSIS\s+MainProc2\s+MainProc2 SubProc1\s+MainProc2 SubProc2\s+MainProc2 SubProc2 SubProc22\s*$} -match regexp 
105
106      test tepam-sp.dcl_bu.hlp.2 "tepam, sub procedure buttom-down declaration - first sub procedure help" \
107               -body {MainProc2 SubProc1 -help} \
108               -result "" -output {SYNOPSIS\s+MainProc2 SubProc1\s+$} -match regexp
109
110      test tepam-sp.dcl_bu.hlp.3 "tepam, sub procedure buttom-down declaration - second sub procedure help" \
111               -body {MainProc2 SubProc2 -help} \
112               -result "" -output {SYNOPSIS\s+MainProc2 SubProc2\s+MainProc2 SubProc2 SubProc22\s*$} -match regexp
113
114      test tepam-sp.dcl_bu.hlp.4 "tepam, sub procedure buttom-down declaration - sub sub procedure help" \
115               -body {MainProc2 SubProc2 SubProc22 -help} \
116               -result "" -output {SYNOPSIS\s+MainProc2 SubProc2 SubProc22\s+$} -match regexp
117
118   # Execution
119      test tepam-sp.dcl_bu.exe.1 "tepam, sub procedure buttom-up declaration - main procedure execution" \
120               -body {MainProc2} \
121               -result "Proc2" -output "" -match exact
122
123      test tepam-sp.dcl_bu.exe.2 "tepam, sub procedure buttom-up declaration - first sub procedure execution" \
124               -body {MainProc2 SubProc1} \
125               -result "Proc21" -output "" -match exact
126
127      test tepam-sp.dcl_bu.exe.3 "tepam, sub procedure buttom-up declaration - second sub procedure execution" \
128               -body {MainProc2 SubProc2} \
129               -result "Proc22" -output "" -match exact
130
131      test tepam-sp.dcl_bu.exe.4 "tepam, sub procedure buttom-up declaration - sub sub procedure execution" \
132               -body {MainProc2 SubProc2 SubProc22} \
133               -result "Proc222" -output "" -match exact
134
135######## Only sub procedures (no main procedure) ########
136
137   # Declaration
138      test tepam-sp.dcl_sc.dcl.1 "tepam, sub procedure without main procedure - first sub procedure declaration" \
139               -body {tepam::procedure {MainProc3 SubProc1} {} {return Proc31}} \
140               -result "" -output ""
141
142      test tepam-sp.dcl_sc.dcl.2 "tepam, sub procedure without main procedure - second sub procedure declaration" \
143               -body {tepam::procedure {MainProc3 SubProc2} {} {return Proc32}} \
144               -result "" -output ""
145
146      test tepam-sp.dcl_sc.dcl.3 "tepam, sub procedure without main procedure - sub sub procedure declaration" \
147               -body {tepam::procedure {MainProc3 SubProc2 SubProc22} {} {return Proc322}} \
148               -result "" -output ""
149
150   # Help
151      test tepam-sp.dcl_sc.hlp.1 "tepam, sub procedure without main procedure - main procedure help" \
152               -body {MainProc3 -help} \
153               -result "" -output {SYNOPSIS\s+MainProc3 SubProc1\s+MainProc3 SubProc2\s+MainProc3 SubProc2 SubProc22\s*$} -match regexp 
154
155      test tepam-sp.dcl_sc.hlp.2 "tepam, sub procedure without main procedure - first sub procedure help" \
156               -body {MainProc3 SubProc1 -help} \
157               -result "" -output {SYNOPSIS\s+MainProc3 SubProc1\s+$} -match regexp
158
159      test tepam-sp.dcl_sc.hlp.3 "tepam, sub procedure without main procedure - second sub procedure help" \
160               -body {MainProc3 SubProc2 -help} \
161               -result "" -output {SYNOPSIS\s+MainProc3 SubProc2\s+MainProc3 SubProc2 SubProc22\s*$} -match regexp
162
163      test tepam-sp.dcl_sc.hlp.4 "tepam, sub procedure without main procedure - sub sub procedure help" \
164               -body {MainProc3 SubProc2 SubProc22 -help} \
165               -result "" -output {SYNOPSIS\s+MainProc3 SubProc2 SubProc22\s+$} -match regexp
166
167   # Execution
168      test tepam-sp.dcl_sc.exe.1 "tepam, sub procedure without main procedure - main procedure execution" \
169               -body {MainProc3} \
170               -returnCodes error -result {'::MainProc3' requires a subcommand} -output "" -match exact
171
172      test tepam-sp.dcl_sc.exe.2 "tepam, sub procedure without main procedure - first sub procedure execution" \
173               -body {MainProc3 SubProc1} \
174               -result "Proc31" -output "" -match exact
175
176      test tepam-sp.dcl_sc.exe.3 "tepam, sub procedure without main procedure - second sub procedure execution" \
177               -body {MainProc3 SubProc2} \
178               -result "Proc32" -output "" -match exact
179
180      test tepam-sp.dcl_sc.exe.4 "tepam, sub procedure without main procedure - sub sub procedure execution" \
181               -body {MainProc3 SubProc2 SubProc22} \
182               -result "Proc322" -output "" -match exact
183
184######## With one unnamed argument ########
185
186######## That's all ########
187
188::tcltest::cleanupTests
189return
190
191##########################################################################
192# $RCSfile: proc_subproc.test,v $ - ($Name:  $)
193# $Id: proc_subproc.test,v 1.1 2010/02/11 21:50:55 droll Exp $
194# Modifications:
195# $Log: proc_subproc.test,v $
196# Revision 1.1  2010/02/11 21:50:55  droll
197# TEPAM module checkin
198#
199##########################################################################
200
201