/[webpac]/openisis/current/tcl/test/testrec.tcl
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Contents of /openisis/current/tcl/test/testrec.tcl

Parent Directory Parent Directory | Revision Log Revision Log


Revision 237 - (show annotations)
Mon Mar 8 17:43:12 2004 UTC (20 years, 1 month ago) by dpavlin
File MIME type: application/x-tcl
File size: 7887 byte(s)
initial import of openisis 0.9.0 vendor drop

1 #!/opt/openisis/tcl/bin/isish
2 #
3 # openisis - an open implementation of the ISIS database
4 # Version 0.8.x (microversion see file Version)
5 # Copyright (C) 2003 by Erik Grziwotz, erik@openisis.org
6 #
7 # This library is free software; you can redistribute it and/or
8 # modify it under the terms of the GNU Lesser General Public
9 # License as published by the Free Software Foundation; either
10 # version 2.1 of the License, or (at your option) any later version.
11 #
12 # This library is distributed in the hope that it will be useful,
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 # Lesser General Public License for more details.
16 #
17 # You should have received a copy of the GNU Lesser General Public
18 # License along with this library; if not, write to the Free Software
19 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 #
21 # This software is dedicated to the memory of Eckart Dietrich.
22 #
23 # This software is inspired by (but contains no code of) the iAPI
24 # Copyright (C) 2000 by Robert Janusz, rj@jezuici.krakow.pl.
25 # See iAPI.txt for what it contains.
26 #
27 # $Id: testrec.tcl,v 1.9 2003/06/24 10:54:32 mawag Exp $
28 # test script for record commands
29
30 proc checklst {msg exp got} {
31 if [catch {
32 set len1 [llength $exp]
33 set len2 [llength $got]
34 if {$len1 != $len2} {
35 puts "ERR $msg: length != $len1"
36 puts "REC = $got"
37 exit 1
38 }
39 for {set j 0} {$len1 > $j} {incr j} {
40 set gg [lindex $got $j]
41 set ee [lindex $exp $j]
42 if {! [string equal $gg $ee]} {
43 puts "ERR $msg: got\[$j] = $gg, exp = $ee"
44 puts "REC = $got"
45 exit 1
46 }
47 }
48 }] {
49 global errorInfo
50 puts $errorInfo
51 puts "REC = $got"
52 exit 1
53 }
54 }
55
56 proc checkrec {msg cmd tag val} {
57 set lst ""
58 set tlst ""
59 if [catch {
60 set lst [$cmd get]
61 set tlst [$cmd get -tags]
62 set len [llength $val]
63 if {[llength $lst] != $len} {
64 puts "ERR $msg: got len = [llength $lst], exp = $len"
65 puts "REC = $tlst"
66 exit 1
67 }
68 for {set j 0} {$len > $j} {incr j} {
69 set got [lindex $lst $j]
70 set exp [lindex $val $j]
71 if {! [string equal $got $exp]} {
72 puts "ERR $msg: rec\[$j] = $got, exp = $exp"
73 puts "REC = $tlst"
74 exit 1
75 }
76 set fld [lindex $tag $j]
77 set got [$cmd get $fld]
78 if {! [string equal $got $exp]} {
79 puts "ERR $msg: tag $fld = $got, exp = $exp"
80 puts "REC = $tlst"
81 exit 1
82 }
83 }
84 }] {
85 global errorInfo
86 puts $errorInfo
87 puts "REC = $tlst"
88 exit 1
89 }
90 }
91
92 set nn 1
93 set mm 1
94 switch $argc {
95 0 {}
96 1 { set nn [lindex $argv 0] }
97 default { set nn [lindex $argv 0]; set mm [lindex $argv 1] }
98 }
99
100 for {set n $nn} {0 != $n} {incr n -1} {
101 # -fdt option
102 set fd [openIsisRec {} add 860 1 862 0 866 name 867 desc]
103 set fdt [openIsisRec {} wrap -done -tag 881 $fd]
104 $fdt add 880 1
105 set cmd [openIsisRec -fdt $fdt]
106 set len [$cmd fdt get 880]
107 if {1 != $len} {
108 puts "ERR fdt len = $len"
109 puts "FDT = [$cmd fdt get -tags]"
110 exit 1
111 }
112 set fd2 [$cmd fdt .881]
113 checkrec fd $fd2 {860 862 863 865 866 867} {1 0 0 0 name desc}
114 $fd2 done
115 $fdt done
116 $cmd done
117
118 set cmd [openIsisRec]
119 checkrec "ctor1" $cmd {} {}
120 for {set m $mm} {0 != $m} {incr m -1} {
121
122 # add field value ?field value ...?
123 $cmd add 11 22
124 checkrec add1 $cmd 11 22
125 $cmd add 33 44 55 66 77 88
126 checkrec add2 $cmd {11 33 55 77} {22 44 66 88}
127 $cmd add 33 333 77 777 33 3333
128 checkrec add3 $cmd {11 33\[0] 55 77\[0] 33\[1] 77\[1] 33\[2]} \
129 {22 44 66 88 333 777 3333}
130
131 # clone ?options? newname ?field value ...?
132 set clone [$cmd clone]
133 checkrec clone1 $clone {11 33\[0] 55 77\[0] 33\[1] 77\[1] 33\[2]} \
134 {22 44 66 88 333 777 3333}
135 $clone done
136 set clone [$cmd clone -empty]
137 checkrec clone2 $clone {} {}
138 $clone done
139 set clone [$cmd clone - 99 999 77\[1\] 7171]
140 if [string compare -length 11 $clone openIsisRec] {
141 puts "ERR clone3: recname = $clone"
142 exit 1
143 }
144 checkrec clone3 $clone {11 33\[0] 55 77\[0] 33\[1] 77\[1] 33\[2] 99} \
145 {22 44 66 88 333 7171 3333 999}
146 $clone done
147 set clone [$cmd clone -empty bla 99 999 77\[0\] 7171]
148 if ![string equal $clone bla] {
149 puts "ERR clone4: recname = $clone"
150 exit 1
151 }
152 checkrec clone4 $clone {99 77} {999 7171}
153 $clone done
154
155 # copy source
156 # db ?options?
157 # fdt ?options?
158 # see teststb.tcl
159
160 # delete ?field ...?
161 $cmd dele 77\[0] 33\[1]
162 checkrec del1 $cmd {11 33\[0] 55 77 33\[1]} \
163 {22 44 66 777 3333}
164 $cmd delete
165 checkrec del2 $cmd {} {}
166
167 $cmd add 11 22 33 44 55 66 33 333 33 3333 11 111
168 checkrec add4 $cmd {11\[0] 33\[0] 55 33\[1] 33\[2] 11\[1]} \
169 {22 44 66 333 3333 111}
170
171 # deserialize line, serialize
172 set ser [$cmd seri]
173 $cmd dele
174 checkrec del3 $cmd {} {}
175 $cmd deser $ser
176 checkrec deser $cmd {11\[0] 33\[0] 55 33\[1] 33\[2] 11\[1]} \
177 {22 44 66 333 3333 111}
178
179 # do ?tagvar? valvar body
180 $cmd do t v {
181 set t1 [string range $t 0 1]
182 if {11 == $t1 || 55 == $t1} {
183 $cmd add $t1 $v$v
184 }
185 }
186 checkrec do $cmd {11\[0] 33\[0] 55\[0] 33\[1] 33\[2] 11\[1]
187 11\[2] 55\[1] 11\[3]} \
188 {22 44 66 333 3333 111 2222 6666 111111}
189
190 # get ?field ...?
191 set third [$cmd get 33]
192 if ![string equal {44 333 3333} "$third"] {
193 puts "ERR get1: rec\[33] = $third"
194 exit 1
195 }
196 set got [$cmd get {888 8181}]
197 if ![string equal 8181 $got] {
198 puts "ERR getdflt: rec\[888] = $got"
199 exit 1
200 }
201 set got [$cmd get]
202 checklst get2 {22 44 66 333 3333 111 2222 6666 111111} $got
203 set got [$cmd get -tag]
204 checklst get3 {
205 11 22
206 33 44
207 55 66
208 33 333
209 33 3333
210 11 111
211 11 2222
212 55 6666
213 11 111111
214 } $got
215
216 # set field ?value field value ...?
217 $cmd set 55 5555 77 88 33\[1] 3131
218 checkrec set $cmd {11\[0] 33\[0] 55 33\[1] 33\[2] 11\[1]
219 11\[2] 11\[3] 77} \
220 {22 44 5555 3131 3333 111 2222 111111 88}
221
222 # wrap ?options? recname
223 set emb [openIsisRec emb set 111 aaa 112 bbb 111 ccc]
224 if ![string equal $emb emb] {
225 puts "ERR emb: recname = $emb"
226 exit 1
227 }
228 checkrec ctor2 $emb {111\[0] 112 111\[1]} {aaa bbb ccc}
229 $cmd wrap -tag 999 $emb
230 checkrec wrap1 $cmd {11\[0] 33\[0] 55 33\[1] 33\[2] 11\[1]
231 11\[2] 11\[3] 77 999 111\[0] 112 111\[1]} \
232 {22 44 5555 3131 3333 111 2222 111111 88 3 aaa bbb ccc}
233 $cmd wrap -tag 888 -num 42 $emb
234 checkrec wrap2 $cmd {11\[0] 33\[0] 55 33\[1] 33\[2] 11\[1]
235 11\[2] 11\[3] 77 999 111\[0] 112\[0] 111\[1] 888
236 111\[2] 112\[1] 111\[3]} {22 44 5555 3131 3333 111 2222 111111 88
237 3 aaa bbb ccc 42 aaa bbb ccc}
238 $emb set 112 ddd
239 $cmd wrap -done -tag 999 $emb
240 checkrec wrap3 $cmd {11\[0] 33\[0] 55 33\[1] 33\[2] 11\[1] 11\[2]
241 11\[3] 77 999\[0] 111\[0] 112\[0] 111\[1] 888 111\[2] 112\[1]
242 111\[3] 999\[1] 111\[4] 112\[2] 111\[5]} {
243 22 44 5555 3131 3333 111 2222 111111 88
244 3 aaa bbb ccc 42 aaa bbb ccc 3 aaa ddd ccc}
245 if [catch {$emb get}] {} {
246 puts "ERR done1"
247 exit 1
248 }
249
250 # .path ?option arg ...?
251 set emb [$cmd .999]
252 checkrec path1 $emb {111\[0] 112 111\[1]} {aaa bbb ccc}
253 $emb done
254 set emb [$cmd .999\[1\]]
255 checkrec path2 $emb {111\[0] 112 111\[1]} {aaa ddd ccc}
256 $emb done
257 set emb [$cmd .999\[1\] get 112]
258 if ![string equal ddd $emb] {
259 puts "ERR path2: got = $emb"
260 exit 1
261 }
262 $cmd .999\[1\] do t v { set x $v }
263 $cmd .999\[1\] add 42 43 44 45
264 set emb [$cmd .999\[1\] clone emb]
265 if ![string equal $emb emb] {
266 puts "ERR path3: recname = $emb"
267 exit 1
268 }
269 checkrec path3 $emb {111\[0] 112 111\[1]} {aaa ddd ccc}
270 $emb done
271
272 if {! [expr $m % 1000]} {
273 puts "$n $m ..."
274 }
275 $cmd dele
276
277 # large argc
278 set tag [list]
279 set val [list]
280 for {set j 0} {529 >= $j} {incr j} {
281 $cmd add 433 blabla$j
282 lappend tag 433\[$j]
283 lappend val blabla$j
284 }
285 set cmd2 [openIsisRec]
286 eval $cmd2 add [$cmd get -tags]
287 checkrec argc $cmd2 $tag $val
288 $cmd dele
289 $cmd2 done
290 unset tag val
291 }
292
293 # done
294 $cmd done
295 if [catch {$cmd get}] {} {
296 puts "ERR done2"
297 exit 1
298 }
299
300 if {1000 > $mm && ! [expr $n % 1000]} {
301 puts "$n ..."
302 }
303 }
304
305 puts "ok."
306

Properties

Name Value
svn:executable

  ViewVC Help
Powered by ViewVC 1.1.26