lsetComp.test
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:16k
源码类别:

通讯编程

开发平台:

Visual C++

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