1 #---------------------------------------------------------------------
6 # Arnulf Wiedemann with a lot of code form the snit tests by
10 # Test cases for ::itcl::type proc, method, typemethod commands.
11 # Uses the ::tcltest:: harness.
13 # The tests assume tcltest 2.2
14 #-----------------------------------------------------------------------
16 package require tcltest 2.2
17 namespace import ::tcltest::*
18 ::tcltest::loadTestedCommands
21 interp alias {} type {} ::itcl::type
23 #-----------------------------------------------------------------------
26 test typevariable-1.2 {undefined typevariables are OK} -body {
42 list [spot tget] [fido tget] [set ::dog::theValue]
45 } -result {Howdy Howdy Howdy}
47 test typevariable-1.3 {predefined typevariables are OK} -body {
49 typevariable greeting Hello
59 list [spot tget] [fido tget] ;# FIXME [set ::dog::greeting]
62 } -result {Hello Hello}
64 test typevariable-1.4 {typevariables can be arrays} -body {
66 typevariable greetings
70 set greetings(b) Howdy
76 list $::dog::greetings(a) $::dog::greetings(b)
81 test typevariable-1.5 {typevariables can used in typemethods} -body {
83 typevariable greetings Howdy
95 test typevariable-1.6 {typevariables can used in procs} -body {
97 typevariable greetings Howdy
114 test typevariable-1.7 {mytypevar qualifies typevariables} -body {
116 method tvname {name} {
125 } -result {::dog::myvar}
127 test typevariable-1.8 {typevariable with too many initializers throws an error} -body {
129 typevariable color dark brown
133 } -result {wrong # args: should be "typevariable varname ?init?"}
135 test typevariable-1.9 {typevariable with too many initializers throws an error} -body {
137 typevariable color -array dark brown
143 } -result {wrong # args: should be "typevariable varname ?init|-array init?"}
145 test typevariable-1.10 {typevariable can initialize array variables} -body {
147 typevariable data -array {
152 typemethod getdata {item} {
157 list [dog getdata family] [dog getdata color]
160 } -result {jones brown}
162 #-----------------------------------------------------------------------
165 test ivariable-1.1 {myvar qualifies instance variables} -body {
167 method vname {name} {
176 } -match glob -result {::itcl::internal::variables::*::dog::somevar}
178 test ivariable-1.2 {undefined instance variables are OK} -body {
181 method setgreeting {value} {
185 method getgreeting {} {
190 set spot [dog create spot]
194 fido setgreeting Howdy
196 list [spot getgreeting] [fido getgreeting] [set ::itcl::internal::variables[info object namespace spot]::dog::greeting]
199 } -result {Hey Howdy Hey}
201 test ivariable-1.3 {instance variables are destroyed automatically} -body {
210 set ns [info object namespace spot]
211 set g1 [set ::itcl::internal::variables${ns}::dog::greeting]
214 list $g1 [info exists ::itcl::internal::variables${ns}::dog::greeting]
219 test ivariable-1.4 {defined instance variables need not be declared} -body {
239 test ivariable-1.5 {instance variables can be arrays} -body {
245 set greetings(b) Howdy
249 return [myvar greetings]
255 list [set [spot vname](a)] [set [spot vname](b)]
260 test ivariable-1.6 {instance variables can be initialized in the definition} -body {
262 variable greetings {Hi Howdy}
266 list $greetings $empty
274 } -result {{Hi Howdy} {}}
276 test ivariable-1.9 {procs which define selfns see instance variables} -body {
278 variable greeting Howdy
281 return [callee $selfns]
284 proc callee {selfns} {
285 return [set ${selfns}::greeting]
296 test ivariable-1.11 {variable with too many initializers throws an error} -body {
298 variable color dark brown
302 } -result {wrong # args: should be "variable name ?init?"}
304 test ivariable-1.12 {variable with too many initializers throws an error} -body {
306 variable color -array dark brown
310 } -result {wrong # args: should be "variable varname ?init|-array init?"}
312 test ivariable-1.13 {variable can initialize array variables} -body {
314 variable data -array {
319 method getdata {item} {
325 list [spot getdata family] [spot getdata color]
328 } -result {jones brown}
331 #---------------------------------------------------------------------