summaryrefslogtreecommitdiffstats
path: root/tests/oo.test
diff options
context:
space:
mode:
authordkf <donal.k.fellows@manchester.ac.uk>2015-05-17 12:06:31 (GMT)
committerdkf <donal.k.fellows@manchester.ac.uk>2015-05-17 12:06:31 (GMT)
commit4240cb00f0bbc1b8b0b12f7cce2c3cbf40e5e08f (patch)
tree52b18dda3785c1c4f1cf704dac4459b5e0f1d8e4 /tests/oo.test
parent9d64916f18a08cd7b57a4df4e7bed9664c03ab47 (diff)
downloadtcl-4240cb00f0bbc1b8b0b12f7cce2c3cbf40e5e08f.zip
tcl-4240cb00f0bbc1b8b0b12f7cce2c3cbf40e5e08f.tar.gz
tcl-4240cb00f0bbc1b8b0b12f7cce2c3cbf40e5e08f.tar.bz2
[ad6696285c] Demonstrate that filters are not called for destructors.
Diffstat (limited to 'tests/oo.test')
-rw-r--r--tests/oo.test28
1 files changed, 28 insertions, 0 deletions
diff --git a/tests/oo.test b/tests/oo.test
index 22e6cfb..f35b70a 100644
--- a/tests/oo.test
+++ b/tests/oo.test
@@ -1569,6 +1569,34 @@ test oo-12.7 {OO: filters} -setup {
} -cleanup {
Aclass destroy
} -result {foo {{::Aclass outerfoo} {::Aclass InnerFoo}}}
+test oo-12.8 {OO: filters and destructors} -setup {
+ oo::class create Aclass
+ Aclass create Aobject
+ set ::log {}
+} -body {
+ oo::define Aclass {
+ constructor {} {
+ lappend ::log "in constructor"
+ }
+ destructor {
+ lappend ::log "in destructor"
+ }
+ method bar {} {
+ lappend ::log "in method"
+ }
+ method Boo args {
+ lappend ::log [self target]
+ next {*}$args
+ }
+ filter Boo
+ }
+ set obj [Aclass new]
+ $obj bar
+ $obj destroy
+ return $::log
+} -cleanup {
+ Aclass destroy
+} -result {{in constructor} {::Aclass bar} {in method} {::oo::object destroy} {in destructor}}
test oo-13.1 {OO: changing an object's class} {
oo::class create Aclass