Artifact
4faddda562d6a7cb9cabe1b2df1296a86d33282f:
Attachment "test.tcl" to
ticket [3603695fff]
added by
taylor_venable
2013-02-07 19:04:40.
0000: 23 21 2f 75 73 72 2f 62 69 6e 2f 65 6e 76 20 74 #!/usr/bin/env t
0010: 63 6c 73 68 0a 0a 70 61 63 6b 61 67 65 20 72 65 clsh..package re
0020: 71 75 69 72 65 20 54 63 6c 20 38 2e 36 0a 70 61 quire Tcl 8.6.pa
0030: 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 54 63 ckage require Tc
0040: 6c 4f 4f 20 31 2e 30 0a 0a 6f 6f 3a 3a 63 6c 61 lOO 1.0..oo::cla
0050: 73 73 20 63 72 65 61 74 65 20 74 65 73 74 31 20 ss create test1
0060: 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 78 {. variable x
0070: 0a 20 20 20 20 65 78 70 6f 72 74 20 76 61 72 6e . export varn
0080: 61 6d 65 0a 20 20 20 20 63 6f 6e 73 74 72 75 63 ame. construc
0090: 74 6f 72 20 7b 61 72 67 7d 20 7b 20 73 65 74 20 tor {arg} { set
00a0: 78 20 24 61 72 67 20 7d 0a 20 20 20 20 6d 65 74 x $arg }. met
00b0: 68 6f 64 20 66 6f 6f 20 7b 6f 74 68 65 72 7d 20 hod foo {other}
00c0: 7b 0a 20 20 20 20 20 20 20 20 70 75 74 73 20 22 {. puts "
00d0: 22 0a 20 20 20 20 20 20 20 20 70 75 74 73 20 22 ". puts "
00e0: 28 66 6f 6f 29 20 5c 7b 5b 73 65 6c 66 5d 5c 7d (foo) \{[self]\}
00f0: 20 2d 3e 20 5c 7b 5b 6d 79 20 76 61 72 6e 61 6d -> \{[my varnam
0100: 65 20 78 5d 5c 7d 20 2d 3e 20 5b 73 65 74 20 5b e x]\} -> [set [
0110: 6d 79 20 76 61 72 6e 61 6d 65 20 78 5d 5d 22 0a my varname x]]".
0120: 20 20 20 20 20 20 20 20 70 75 74 73 20 22 28 66 puts "(f
0130: 6f 6f 29 20 5c 7b 24 6f 74 68 65 72 5c 7d 20 2d oo) \{$other\} -
0140: 3e 20 5c 7b 5b 24 6f 74 68 65 72 20 76 61 72 6e > \{[$other varn
0150: 61 6d 65 20 78 5d 5c 7d 20 2d 3e 20 5b 73 65 74 ame x]\} -> [set
0160: 20 5b 24 6f 74 68 65 72 20 76 61 72 6e 61 6d 65 [$other varname
0170: 20 78 5d 5d 22 20 3b 23 20 49 4e 43 4f 52 52 45 x]]" ;# INCORRE
0180: 43 54 0a 20 20 20 20 20 20 20 20 70 75 74 73 20 CT. puts
0190: 22 28 66 6f 6f 29 20 5c 7b 24 6f 74 68 65 72 5c "(foo) \{$other\
01a0: 7d 20 2d 3e 20 5c 7b 5b 75 70 6c 65 76 65 6c 20 } -> \{[uplevel
01b0: 23 30 20 24 6f 74 68 65 72 20 76 61 72 6e 61 6d #0 $other varnam
01c0: 65 20 78 5d 5c 7d 20 2d 3e 20 5b 73 65 74 20 5b e x]\} -> [set [
01d0: 75 70 6c 65 76 65 6c 20 23 30 20 24 6f 74 68 65 uplevel #0 $othe
01e0: 72 20 76 61 72 6e 61 6d 65 20 78 5d 5d 22 20 3b r varname x]]" ;
01f0: 23 20 43 4f 52 52 45 43 54 0a 20 20 20 20 7d 0a # CORRECT. }.
0200: 7d 0a 0a 6f 6f 3a 3a 63 6c 61 73 73 20 63 72 65 }..oo::class cre
0210: 61 74 65 20 74 65 73 74 32 20 7b 0a 20 20 20 20 ate test2 {.
0220: 76 61 72 69 61 62 6c 65 20 78 0a 20 20 20 20 65 variable x. e
0230: 78 70 6f 72 74 20 76 61 72 6e 61 6d 65 0a 20 20 xport varname.
0240: 20 20 63 6f 6e 73 74 72 75 63 74 6f 72 20 7b 61 constructor {a
0250: 72 67 7d 20 7b 20 73 65 74 20 78 20 24 61 72 67 rg} { set x $arg
0260: 20 7d 0a 7d 0a 0a 73 65 74 20 61 20 5b 74 65 73 }.}..set a [tes
0270: 74 31 20 6e 65 77 20 61 5d 0a 73 65 74 20 62 20 t1 new a].set b
0280: 5b 74 65 73 74 31 20 6e 65 77 20 62 5d 0a 73 65 [test1 new b].se
0290: 74 20 63 20 5b 74 65 73 74 32 20 6e 65 77 20 63 t c [test2 new c
02a0: 5d 0a 0a 70 75 74 73 20 22 20 20 20 20 20 20 5c ]..puts " \
02b0: 7b 24 61 5c 7d 20 2d 3e 20 5c 7b 5b 24 61 20 76 {$a\} -> \{[$a v
02c0: 61 72 6e 61 6d 65 20 78 5d 5c 7d 20 2d 3e 20 5b arname x]\} -> [
02d0: 73 65 74 20 5b 24 61 20 76 61 72 6e 61 6d 65 20 set [$a varname
02e0: 78 5d 5d 22 0a 70 75 74 73 20 22 20 20 20 20 20 x]]".puts "
02f0: 20 5c 7b 24 62 5c 7d 20 2d 3e 20 5c 7b 5b 24 62 \{$b\} -> \{[$b
0300: 20 76 61 72 6e 61 6d 65 20 78 5d 5c 7d 20 2d 3e varname x]\} ->
0310: 20 5b 73 65 74 20 5b 24 62 20 76 61 72 6e 61 6d [set [$b varnam
0320: 65 20 78 5d 5d 22 20 3b 23 20 43 4f 52 52 45 43 e x]]" ;# CORREC
0330: 54 0a 70 75 74 73 20 22 20 20 20 20 20 20 5c 7b T.puts " \{
0340: 24 63 5c 7d 20 2d 3e 20 5c 7b 5b 24 63 20 76 61 $c\} -> \{[$c va
0350: 72 6e 61 6d 65 20 78 5d 5c 7d 20 2d 3e 20 5b 73 rname x]\} -> [s
0360: 65 74 20 5b 24 63 20 76 61 72 6e 61 6d 65 20 78 et [$c varname x
0370: 5d 5d 22 20 3b 23 20 43 4f 52 52 45 43 54 0a 0a ]]" ;# CORRECT..
0380: 24 61 20 66 6f 6f 20 24 62 0a 24 61 20 66 6f 6f $a foo $b.$a foo
0390: 20 24 63 0a 0a 23 23 23 23 23 23 23 23 23 23 23 $c..###########
03a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
03b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
03c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
03d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
03e0: 23 23 23 23 23 0a 23 23 20 4f 55 54 50 55 54 20 #####.## OUTPUT
03f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0400: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0420: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0430: 20 20 20 20 23 23 0a 23 23 23 23 23 23 23 23 23 ##.#########
0440: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0450: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0460: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0470: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0480: 23 23 23 23 23 23 23 0a 23 0a 23 20 20 20 20 20 #######.#.#
0490: 20 20 7b 3a 3a 6f 6f 3a 3a 4f 62 6a 31 33 7d 20 {::oo::Obj13}
04a0: 2d 3e 20 7b 3a 3a 6f 6f 3a 3a 4f 62 6a 31 33 3a -> {::oo::Obj13:
04b0: 3a 78 7d 20 2d 3e 20 61 0a 23 20 20 20 20 20 20 :x} -> a.#
04c0: 20 7b 3a 3a 6f 6f 3a 3a 4f 62 6a 31 34 7d 20 2d {::oo::Obj14} -
04d0: 3e 20 7b 3a 3a 6f 6f 3a 3a 4f 62 6a 31 34 3a 3a > {::oo::Obj14::
04e0: 78 7d 20 2d 3e 20 62 20 20 43 4f 52 52 45 43 54 x} -> b CORRECT
04f0: 0a 23 20 20 20 20 20 20 20 7b 3a 3a 6f 6f 3a 3a .# {::oo::
0500: 4f 62 6a 31 35 7d 20 2d 3e 20 7b 3a 3a 6f 6f 3a Obj15} -> {::oo:
0510: 3a 4f 62 6a 31 35 3a 3a 78 7d 20 2d 3e 20 63 20 :Obj15::x} -> c
0520: 20 43 4f 52 52 45 43 54 0a 23 0a 23 20 28 66 6f CORRECT.#.# (fo
0530: 6f 29 20 7b 3a 3a 6f 6f 3a 3a 4f 62 6a 31 33 7d o) {::oo::Obj13}
0540: 20 2d 3e 20 7b 3a 3a 6f 6f 3a 3a 4f 62 6a 31 33 -> {::oo::Obj13
0550: 3a 3a 78 7d 20 2d 3e 20 61 0a 23 20 28 66 6f 6f ::x} -> a.# (foo
0560: 29 20 7b 3a 3a 6f 6f 3a 3a 4f 62 6a 31 34 7d 20 ) {::oo::Obj14}
0570: 2d 3e 20 7b 3a 3a 6f 6f 3a 3a 4f 62 6a 31 33 3a -> {::oo::Obj13:
0580: 3a 78 7d 20 2d 3e 20 61 20 20 49 4e 43 4f 52 52 :x} -> a INCORR
0590: 45 43 54 0a 23 20 28 66 6f 6f 29 20 7b 3a 3a 6f ECT.# (foo) {::o
05a0: 6f 3a 3a 4f 62 6a 31 34 7d 20 2d 3e 20 7b 3a 3a o::Obj14} -> {::
05b0: 6f 6f 3a 3a 4f 62 6a 31 34 3a 3a 78 7d 20 2d 3e oo::Obj14::x} ->
05c0: 20 62 20 20 43 4f 52 52 45 43 54 0a 23 0a 23 20 b CORRECT.#.#
05d0: 28 66 6f 6f 29 20 7b 3a 3a 6f 6f 3a 3a 4f 62 6a (foo) {::oo::Obj
05e0: 31 33 7d 20 2d 3e 20 7b 3a 3a 6f 6f 3a 3a 4f 62 13} -> {::oo::Ob
05f0: 6a 31 33 3a 3a 78 7d 20 2d 3e 20 61 0a 23 20 28 j13::x} -> a.# (
0600: 66 6f 6f 29 20 7b 3a 3a 6f 6f 3a 3a 4f 62 6a 31 foo) {::oo::Obj1
0610: 35 7d 20 2d 3e 20 7b 3a 3a 6f 6f 3a 3a 4f 62 6a 5} -> {::oo::Obj
0620: 31 33 3a 3a 78 7d 20 2d 3e 20 61 20 20 49 4e 43 13::x} -> a INC
0630: 4f 52 52 45 43 54 0a 23 20 28 66 6f 6f 29 20 7b ORRECT.# (foo) {
0640: 3a 3a 6f 6f 3a 3a 4f 62 6a 31 35 7d 20 2d 3e 20 ::oo::Obj15} ->
0650: 7b 3a 3a 6f 6f 3a 3a 4f 62 6a 31 35 3a 3a 78 7d {::oo::Obj15::x}
0660: 20 2d 3e 20 63 20 20 43 4f 52 52 45 43 54 0a -> c CORRECT.