Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: downloads/tcl8.5.2/tests/lsetComp.test @ 68

Last change on this file since 68 was 25, checked in by landauf, 16 years ago

added tcl to libs

File size: 16.1 KB
Line 
1# This file is a -*- tcl -*- test script
2
3# Commands covered: lset
4#
5# This file contains a collection of tests for one or more of the Tcl
6# built-in commands.  Sourcing this file into Tcl runs the tests and
7# generates output for errors.  No output means no errors were found.
8#
9# Copyright (c) 2001 by Kevin B. Kenny.  All rights reserved.
10#
11# See the file "license.terms" for information on usage and redistribution
12# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
13#
14# RCS: @(#) $Id$
15
16if {[lsearch [namespace children] ::tcltest] == -1} {
17    package require tcltest
18    namespace import -force ::tcltest::*
19}
20
21# Procedure to evaluate a script within a proc, to test compilation
22# functionality
23
24proc evalInProc { script } {
25    proc testProc {} $script
26    set status [catch {
27        testProc 
28    } result]
29    rename testProc {}
30    return [list $status $result]
31}
32
33# Tests for the bytecode compilation of the 'lset' command
34
35test lsetComp-1.1 {lset, compiled, wrong \# args} {
36    evalInProc {
37        lset
38    }
39} "1 {wrong \# args: should be \"lset listVar index ?index...? value\"}"
40
41test lsetComp-2.1 {lset, compiled, list of args, not a simple var name} {
42    evalInProc {
43        set y x
44        set x {{1 2} {3 4}}
45        lset $y {1 1} 5
46    }
47} "0 {{1 2} {3 5}}"
48
49test lsetComp-2.2 {lset, compiled, list of args, scalar on stack} {
50    evalInProc {
51        set ::x {{1 2} {3 4}}
52        lset ::x {1 1} 5
53    }
54} "0 {{1 2} {3 5}}"
55
56test lsetComp-2.3 {lset, compiled, list of args, scalar, one-byte offset} {
57    evalInProc {
58        set x {{1 2} {3 4}}
59        lset x {1 1} 5
60    }
61} "0 {{1 2} {3 5}}"
62
63test lsetComp-2.4 {lset, compiled, list of args, scalar, four-byte offset} {
64    evalInProc {
65        set x0 0; set x1 0; set x2 0; set x3 0; 
66        set x4 0; set x5 0; set x6 0; set x7 0; 
67        set x8 0; set x9 0; set x10 0; set x11 0; 
68        set x12 0; set x13 0; set x14 0; set x15 0; 
69        set x16 0; set x17 0; set x18 0; set x19 0; 
70        set x20 0; set x21 0; set x22 0; set x23 0; 
71        set x24 0; set x25 0; set x26 0; set x27 0; 
72        set x28 0; set x29 0; set x30 0; set x31 0; 
73        set x32 0; set x33 0; set x34 0; set x35 0; 
74        set x36 0; set x37 0; set x38 0; set x39 0; 
75        set x40 0; set x41 0; set x42 0; set x43 0; 
76        set x44 0; set x45 0; set x46 0; set x47 0; 
77        set x48 0; set x49 0; set x50 0; set x51 0; 
78        set x52 0; set x53 0; set x54 0; set x55 0; 
79        set x56 0; set x57 0; set x58 0; set x59 0; 
80        set x60 0; set x61 0; set x62 0; set x63 0; 
81        set x64 0; set x65 0; set x66 0; set x67 0; 
82        set x68 0; set x69 0; set x70 0; set x71 0; 
83        set x72 0; set x73 0; set x74 0; set x75 0; 
84        set x76 0; set x77 0; set x78 0; set x79 0; 
85        set x80 0; set x81 0; set x82 0; set x83 0; 
86        set x84 0; set x85 0; set x86 0; set x87 0; 
87        set x88 0; set x89 0; set x90 0; set x91 0; 
88        set x92 0; set x93 0; set x94 0; set x95 0; 
89        set x96 0; set x97 0; set x98 0; set x99 0; 
90        set x100 0; set x101 0; set x102 0; set x103 0; 
91        set x104 0; set x105 0; set x106 0; set x107 0; 
92        set x108 0; set x109 0; set x110 0; set x111 0; 
93        set x112 0; set x113 0; set x114 0; set x115 0; 
94        set x116 0; set x117 0; set x118 0; set x119 0; 
95        set x120 0; set x121 0; set x122 0; set x123 0; 
96        set x124 0; set x125 0; set x126 0; set x127 0; 
97        set x128 0; set x129 0; set x130 0; set x131 0; 
98        set x132 0; set x133 0; set x134 0; set x135 0; 
99        set x136 0; set x137 0; set x138 0; set x139 0; 
100        set x140 0; set x141 0; set x142 0; set x143 0; 
101        set x144 0; set x145 0; set x146 0; set x147 0; 
102        set x148 0; set x149 0; set x150 0; set x151 0; 
103        set x152 0; set x153 0; set x154 0; set x155 0; 
104        set x156 0; set x157 0; set x158 0; set x159 0; 
105        set x160 0; set x161 0; set x162 0; set x163 0; 
106        set x164 0; set x165 0; set x166 0; set x167 0; 
107        set x168 0; set x169 0; set x170 0; set x171 0; 
108        set x172 0; set x173 0; set x174 0; set x175 0; 
109        set x176 0; set x177 0; set x178 0; set x179 0; 
110        set x180 0; set x181 0; set x182 0; set x183 0; 
111        set x184 0; set x185 0; set x186 0; set x187 0; 
112        set x188 0; set x189 0; set x190 0; set x191 0; 
113        set x192 0; set x193 0; set x194 0; set x195 0; 
114        set x196 0; set x197 0; set x198 0; set x199 0; 
115        set x200 0; set x201 0; set x202 0; set x203 0; 
116        set x204 0; set x205 0; set x206 0; set x207 0; 
117        set x208 0; set x209 0; set x210 0; set x211 0; 
118        set x212 0; set x213 0; set x214 0; set x215 0; 
119        set x216 0; set x217 0; set x218 0; set x219 0; 
120        set x220 0; set x221 0; set x222 0; set x223 0; 
121        set x224 0; set x225 0; set x226 0; set x227 0; 
122        set x228 0; set x229 0; set x230 0; set x231 0; 
123        set x232 0; set x233 0; set x234 0; set x235 0; 
124        set x236 0; set x237 0; set x238 0; set x239 0; 
125        set x240 0; set x241 0; set x242 0; set x243 0; 
126        set x244 0; set x245 0; set x246 0; set x247 0; 
127        set x248 0; set x249 0; set x250 0; set x251 0; 
128        set x252 0; set x253 0; set x254 0; set x255 0;
129        set x {{1 2} {3 4}}
130        lset x {1 1} 5
131    }
132} "0 {{1 2} {3 5}}"
133
134test lsetComp-2.5 {lset, compiled, list of args, array on stack} {
135    evalInProc {
136        set ::y(0) {{1 2} {3 4}}
137        lset ::y(0) {1 1} 5
138    }
139} "0 {{1 2} {3 5}}"
140
141test lsetComp-2.6 {lset, compiled, list of args, array, one-byte offset} {
142    evalInProc {
143        set y(0) {{1 2} {3 4}}
144        lset y(0) {1 1} 5
145    }
146} "0 {{1 2} {3 5}}"
147
148test lsetComp-2.7 {lset, compiled, list of args, array, four-byte offset} {
149    evalInProc {
150        set x0 0; set x1 0; set x2 0; set x3 0; 
151        set x4 0; set x5 0; set x6 0; set x7 0; 
152        set x8 0; set x9 0; set x10 0; set x11 0; 
153        set x12 0; set x13 0; set x14 0; set x15 0; 
154        set x16 0; set x17 0; set x18 0; set x19 0; 
155        set x20 0; set x21 0; set x22 0; set x23 0; 
156        set x24 0; set x25 0; set x26 0; set x27 0; 
157        set x28 0; set x29 0; set x30 0; set x31 0; 
158        set x32 0; set x33 0; set x34 0; set x35 0; 
159        set x36 0; set x37 0; set x38 0; set x39 0; 
160        set x40 0; set x41 0; set x42 0; set x43 0; 
161        set x44 0; set x45 0; set x46 0; set x47 0; 
162        set x48 0; set x49 0; set x50 0; set x51 0; 
163        set x52 0; set x53 0; set x54 0; set x55 0; 
164        set x56 0; set x57 0; set x58 0; set x59 0; 
165        set x60 0; set x61 0; set x62 0; set x63 0; 
166        set x64 0; set x65 0; set x66 0; set x67 0; 
167        set x68 0; set x69 0; set x70 0; set x71 0; 
168        set x72 0; set x73 0; set x74 0; set x75 0; 
169        set x76 0; set x77 0; set x78 0; set x79 0; 
170        set x80 0; set x81 0; set x82 0; set x83 0; 
171        set x84 0; set x85 0; set x86 0; set x87 0; 
172        set x88 0; set x89 0; set x90 0; set x91 0; 
173        set x92 0; set x93 0; set x94 0; set x95 0; 
174        set x96 0; set x97 0; set x98 0; set x99 0; 
175        set x100 0; set x101 0; set x102 0; set x103 0; 
176        set x104 0; set x105 0; set x106 0; set x107 0; 
177        set x108 0; set x109 0; set x110 0; set x111 0; 
178        set x112 0; set x113 0; set x114 0; set x115 0; 
179        set x116 0; set x117 0; set x118 0; set x119 0; 
180        set x120 0; set x121 0; set x122 0; set x123 0; 
181        set x124 0; set x125 0; set x126 0; set x127 0; 
182        set x128 0; set x129 0; set x130 0; set x131 0; 
183        set x132 0; set x133 0; set x134 0; set x135 0; 
184        set x136 0; set x137 0; set x138 0; set x139 0; 
185        set x140 0; set x141 0; set x142 0; set x143 0; 
186        set x144 0; set x145 0; set x146 0; set x147 0; 
187        set x148 0; set x149 0; set x150 0; set x151 0; 
188        set x152 0; set x153 0; set x154 0; set x155 0; 
189        set x156 0; set x157 0; set x158 0; set x159 0; 
190        set x160 0; set x161 0; set x162 0; set x163 0; 
191        set x164 0; set x165 0; set x166 0; set x167 0; 
192        set x168 0; set x169 0; set x170 0; set x171 0; 
193        set x172 0; set x173 0; set x174 0; set x175 0; 
194        set x176 0; set x177 0; set x178 0; set x179 0; 
195        set x180 0; set x181 0; set x182 0; set x183 0; 
196        set x184 0; set x185 0; set x186 0; set x187 0; 
197        set x188 0; set x189 0; set x190 0; set x191 0; 
198        set x192 0; set x193 0; set x194 0; set x195 0; 
199        set x196 0; set x197 0; set x198 0; set x199 0; 
200        set x200 0; set x201 0; set x202 0; set x203 0; 
201        set x204 0; set x205 0; set x206 0; set x207 0; 
202        set x208 0; set x209 0; set x210 0; set x211 0; 
203        set x212 0; set x213 0; set x214 0; set x215 0; 
204        set x216 0; set x217 0; set x218 0; set x219 0; 
205        set x220 0; set x221 0; set x222 0; set x223 0; 
206        set x224 0; set x225 0; set x226 0; set x227 0; 
207        set x228 0; set x229 0; set x230 0; set x231 0; 
208        set x232 0; set x233 0; set x234 0; set x235 0; 
209        set x236 0; set x237 0; set x238 0; set x239 0; 
210        set x240 0; set x241 0; set x242 0; set x243 0; 
211        set x244 0; set x245 0; set x246 0; set x247 0; 
212        set x248 0; set x249 0; set x250 0; set x251 0; 
213        set x252 0; set x253 0; set x254 0; set x255 0;
214        set y(0) {{1 2} {3 4}}
215        lset y(0) {1 1} 5
216    }
217} "0 {{1 2} {3 5}}"
218
219test lsetComp-2.8 {lset, compiled, list of args, error } {
220    evalInProc {
221        set x { {1 2} {3 4} }
222        lset x {1 5} 5
223    }
224} "1 {list index out of range}"
225
226test lsetComp-2.9 {lset, compiled, list of args, error - is string preserved} {
227    set ::x { { 1 2 } { 3 4 } }
228    evalInProc {
229        lset ::x { 1 5 } 5
230    }
231    list $::x [lindex $::x 1]
232} "{ { 1 2 } { 3 4 } } { 3 4 }"
233
234test lsetComp-3.1 {lset, compiled, flat args, not a simple var name} {
235    evalInProc {
236        set y x
237        set x {{1 2} {3 4}}
238        lset $y 1 1 5
239    }
240} "0 {{1 2} {3 5}}"
241
242test lsetComp-3.2 {lset, compiled, flat args, scalar on stack} {
243    evalInProc {
244        set ::x {{1 2} {3 4}}
245        lset ::x 1 1 5
246    }
247} "0 {{1 2} {3 5}}"
248
249test lsetComp-3.3 {lset, compiled, flat args, scalar, one-byte offset} {
250    evalInProc {
251        set x {{1 2} {3 4}}
252        lset x 1 1 5
253    }
254} "0 {{1 2} {3 5}}"
255
256test lsetComp-3.4 {lset, compiled, scalar, four-byte offset} {
257    evalInProc {
258        set x0 0; set x1 0; set x2 0; set x3 0; 
259        set x4 0; set x5 0; set x6 0; set x7 0; 
260        set x8 0; set x9 0; set x10 0; set x11 0; 
261        set x12 0; set x13 0; set x14 0; set x15 0; 
262        set x16 0; set x17 0; set x18 0; set x19 0; 
263        set x20 0; set x21 0; set x22 0; set x23 0; 
264        set x24 0; set x25 0; set x26 0; set x27 0; 
265        set x28 0; set x29 0; set x30 0; set x31 0; 
266        set x32 0; set x33 0; set x34 0; set x35 0; 
267        set x36 0; set x37 0; set x38 0; set x39 0; 
268        set x40 0; set x41 0; set x42 0; set x43 0; 
269        set x44 0; set x45 0; set x46 0; set x47 0; 
270        set x48 0; set x49 0; set x50 0; set x51 0; 
271        set x52 0; set x53 0; set x54 0; set x55 0; 
272        set x56 0; set x57 0; set x58 0; set x59 0; 
273        set x60 0; set x61 0; set x62 0; set x63 0; 
274        set x64 0; set x65 0; set x66 0; set x67 0; 
275        set x68 0; set x69 0; set x70 0; set x71 0; 
276        set x72 0; set x73 0; set x74 0; set x75 0; 
277        set x76 0; set x77 0; set x78 0; set x79 0; 
278        set x80 0; set x81 0; set x82 0; set x83 0; 
279        set x84 0; set x85 0; set x86 0; set x87 0; 
280        set x88 0; set x89 0; set x90 0; set x91 0; 
281        set x92 0; set x93 0; set x94 0; set x95 0; 
282        set x96 0; set x97 0; set x98 0; set x99 0; 
283        set x100 0; set x101 0; set x102 0; set x103 0; 
284        set x104 0; set x105 0; set x106 0; set x107 0; 
285        set x108 0; set x109 0; set x110 0; set x111 0; 
286        set x112 0; set x113 0; set x114 0; set x115 0; 
287        set x116 0; set x117 0; set x118 0; set x119 0; 
288        set x120 0; set x121 0; set x122 0; set x123 0; 
289        set x124 0; set x125 0; set x126 0; set x127 0; 
290        set x128 0; set x129 0; set x130 0; set x131 0; 
291        set x132 0; set x133 0; set x134 0; set x135 0; 
292        set x136 0; set x137 0; set x138 0; set x139 0; 
293        set x140 0; set x141 0; set x142 0; set x143 0; 
294        set x144 0; set x145 0; set x146 0; set x147 0; 
295        set x148 0; set x149 0; set x150 0; set x151 0; 
296        set x152 0; set x153 0; set x154 0; set x155 0; 
297        set x156 0; set x157 0; set x158 0; set x159 0; 
298        set x160 0; set x161 0; set x162 0; set x163 0; 
299        set x164 0; set x165 0; set x166 0; set x167 0; 
300        set x168 0; set x169 0; set x170 0; set x171 0; 
301        set x172 0; set x173 0; set x174 0; set x175 0; 
302        set x176 0; set x177 0; set x178 0; set x179 0; 
303        set x180 0; set x181 0; set x182 0; set x183 0; 
304        set x184 0; set x185 0; set x186 0; set x187 0; 
305        set x188 0; set x189 0; set x190 0; set x191 0; 
306        set x192 0; set x193 0; set x194 0; set x195 0; 
307        set x196 0; set x197 0; set x198 0; set x199 0; 
308        set x200 0; set x201 0; set x202 0; set x203 0; 
309        set x204 0; set x205 0; set x206 0; set x207 0; 
310        set x208 0; set x209 0; set x210 0; set x211 0; 
311        set x212 0; set x213 0; set x214 0; set x215 0; 
312        set x216 0; set x217 0; set x218 0; set x219 0; 
313        set x220 0; set x221 0; set x222 0; set x223 0; 
314        set x224 0; set x225 0; set x226 0; set x227 0; 
315        set x228 0; set x229 0; set x230 0; set x231 0; 
316        set x232 0; set x233 0; set x234 0; set x235 0; 
317        set x236 0; set x237 0; set x238 0; set x239 0; 
318        set x240 0; set x241 0; set x242 0; set x243 0; 
319        set x244 0; set x245 0; set x246 0; set x247 0; 
320        set x248 0; set x249 0; set x250 0; set x251 0; 
321        set x252 0; set x253 0; set x254 0; set x255 0;
322        set x {{1 2} {3 4}}
323        lset x 1 1 5
324    }
325} "0 {{1 2} {3 5}}"
326
327test lsetComp-3.5 {lset, compiled, flat args, array on stack} {
328    evalInProc {
329        set ::y(0) {{1 2} {3 4}}
330        lset ::y(0) 1 1 5
331    }
332} "0 {{1 2} {3 5}}"
333
334test lsetComp-3.6 {lset, compiled, flat args, array, one-byte offset} {
335    evalInProc {
336        set y(0) {{1 2} {3 4}}
337        lset y(0) 1 1 5
338    }
339} "0 {{1 2} {3 5}}"
340
341test lsetComp-3.7 {lset, compiled, flat args, array, four-byte offset} {
342    evalInProc {
343        set x0 0; set x1 0; set x2 0; set x3 0; 
344        set x4 0; set x5 0; set x6 0; set x7 0; 
345        set x8 0; set x9 0; set x10 0; set x11 0; 
346        set x12 0; set x13 0; set x14 0; set x15 0; 
347        set x16 0; set x17 0; set x18 0; set x19 0; 
348        set x20 0; set x21 0; set x22 0; set x23 0; 
349        set x24 0; set x25 0; set x26 0; set x27 0; 
350        set x28 0; set x29 0; set x30 0; set x31 0; 
351        set x32 0; set x33 0; set x34 0; set x35 0; 
352        set x36 0; set x37 0; set x38 0; set x39 0; 
353        set x40 0; set x41 0; set x42 0; set x43 0; 
354        set x44 0; set x45 0; set x46 0; set x47 0; 
355        set x48 0; set x49 0; set x50 0; set x51 0; 
356        set x52 0; set x53 0; set x54 0; set x55 0; 
357        set x56 0; set x57 0; set x58 0; set x59 0; 
358        set x60 0; set x61 0; set x62 0; set x63 0; 
359        set x64 0; set x65 0; set x66 0; set x67 0; 
360        set x68 0; set x69 0; set x70 0; set x71 0; 
361        set x72 0; set x73 0; set x74 0; set x75 0; 
362        set x76 0; set x77 0; set x78 0; set x79 0; 
363        set x80 0; set x81 0; set x82 0; set x83 0; 
364        set x84 0; set x85 0; set x86 0; set x87 0; 
365        set x88 0; set x89 0; set x90 0; set x91 0; 
366        set x92 0; set x93 0; set x94 0; set x95 0; 
367        set x96 0; set x97 0; set x98 0; set x99 0; 
368        set x100 0; set x101 0; set x102 0; set x103 0; 
369        set x104 0; set x105 0; set x106 0; set x107 0; 
370        set x108 0; set x109 0; set x110 0; set x111 0; 
371        set x112 0; set x113 0; set x114 0; set x115 0; 
372        set x116 0; set x117 0; set x118 0; set x119 0; 
373        set x120 0; set x121 0; set x122 0; set x123 0; 
374        set x124 0; set x125 0; set x126 0; set x127 0; 
375        set x128 0; set x129 0; set x130 0; set x131 0; 
376        set x132 0; set x133 0; set x134 0; set x135 0; 
377        set x136 0; set x137 0; set x138 0; set x139 0; 
378        set x140 0; set x141 0; set x142 0; set x143 0; 
379        set x144 0; set x145 0; set x146 0; set x147 0; 
380        set x148 0; set x149 0; set x150 0; set x151 0; 
381        set x152 0; set x153 0; set x154 0; set x155 0; 
382        set x156 0; set x157 0; set x158 0; set x159 0; 
383        set x160 0; set x161 0; set x162 0; set x163 0; 
384        set x164 0; set x165 0; set x166 0; set x167 0; 
385        set x168 0; set x169 0; set x170 0; set x171 0; 
386        set x172 0; set x173 0; set x174 0; set x175 0; 
387        set x176 0; set x177 0; set x178 0; set x179 0; 
388        set x180 0; set x181 0; set x182 0; set x183 0; 
389        set x184 0; set x185 0; set x186 0; set x187 0; 
390        set x188 0; set x189 0; set x190 0; set x191 0; 
391        set x192 0; set x193 0; set x194 0; set x195 0; 
392        set x196 0; set x197 0; set x198 0; set x199 0; 
393        set x200 0; set x201 0; set x202 0; set x203 0; 
394        set x204 0; set x205 0; set x206 0; set x207 0; 
395        set x208 0; set x209 0; set x210 0; set x211 0; 
396        set x212 0; set x213 0; set x214 0; set x215 0; 
397        set x216 0; set x217 0; set x218 0; set x219 0; 
398        set x220 0; set x221 0; set x222 0; set x223 0; 
399        set x224 0; set x225 0; set x226 0; set x227 0; 
400        set x228 0; set x229 0; set x230 0; set x231 0; 
401        set x232 0; set x233 0; set x234 0; set x235 0; 
402        set x236 0; set x237 0; set x238 0; set x239 0; 
403        set x240 0; set x241 0; set x242 0; set x243 0; 
404        set x244 0; set x245 0; set x246 0; set x247 0; 
405        set x248 0; set x249 0; set x250 0; set x251 0; 
406        set x252 0; set x253 0; set x254 0; set x255 0;
407        set y(0) {{1 2} {3 4}}
408        lset y(0) 1 1 5
409    }
410} "0 {{1 2} {3 5}}"
411
412test lsetComp-3.8 {lset, compiled, flat args, error } {
413    evalInProc {
414        set x { {1 2} {3 4} }
415        lset x 1 5 5
416    }
417} "1 {list index out of range}"
418
419test lsetComp-3.9 {lset, compiled, flat args, error - is string preserved} {
420    set ::x { { 1 2 } { 3 4 } }
421    evalInProc {
422        lset ::x 1 5 5
423    }
424    list $::x [lindex $::x 1]
425} "{ { 1 2 } { 3 4 } } { 3 4 }"
426
427catch { rename evalInProc {} }
428catch { unset ::x }
429catch { unset ::y }
430
431# cleanup
432::tcltest::cleanupTests
433return
Note: See TracBrowser for help on using the repository browser.