summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authordkf <donal.k.fellows@manchester.ac.uk>2017-06-22 22:03:06 (GMT)
committerdkf <donal.k.fellows@manchester.ac.uk>2017-06-22 22:03:06 (GMT)
commit3e1f74a42db81eb1bd0b963a6ce60f1c44b1bf7c (patch)
treed2971482ae96592884ec9cd5869af20851090c29 /tests
parent2570da989eed0e3768e8c6aa4535c1542695bb9c (diff)
parent4bcc67eec81872423901389198828d4679d7777d (diff)
downloadtcl-3e1f74a42db81eb1bd0b963a6ce60f1c44b1bf7c.zip
tcl-3e1f74a42db81eb1bd0b963a6ce60f1c44b1bf7c.tar.gz
tcl-3e1f74a42db81eb1bd0b963a6ce60f1c44b1bf7c.tar.bz2
Implement TIP #473: Allow a Defined Target Namespace in oo::copy
Diffstat (limited to 'tests')
-rw-r--r--tests/oo.test35
1 files changed, 35 insertions, 0 deletions
diff --git a/tests/oo.test b/tests/oo.test
index ae36f87..5f87837 100644
--- a/tests/oo.test
+++ b/tests/oo.test
@@ -2013,6 +2013,41 @@ test oo-15.10 {variable binding must not bleed through oo::copy} -setup {
} -cleanup {
FooClass destroy
} -result {foo bar grill bar}
+test oo-15.11 {OO: object cloning} -returnCodes error -body {
+ oo::copy
+} -result {wrong # args: should be "oo::copy sourceName ?targetName? ?targetNamespace?"}
+test oo-15.12 {OO: object cloning with target NS} -setup {
+ oo::class create Super
+ oo::class create Cls {superclass Super}
+} -body {
+ namespace eval ::existing {}
+ oo::copy Cls {} ::existing
+} -returnCodes error -cleanup {
+ Super destroy
+ catch {namespace delete ::existing}
+} -result {::existing refers to an existing namespace}
+test oo-15.13 {OO: object cloning with target NS} -setup {
+ oo::class create Super
+ oo::class create Cls {superclass Super}
+} -body {
+ list [namespace exist ::dupens] [oo::copy Cls Cls2 ::dupens] [namespace exist ::dupens]
+} -cleanup {
+ Super destroy
+} -result {0 ::Cls2 1}
+test oo-15.14 {OO: object cloning with target NS} -setup {
+ oo::class create Cls {export eval}
+ set result {}
+} -body {
+ Cls create obj
+ obj eval {
+ proc test-15.14 {} {}
+ }
+ lappend result [info commands ::dupens::t*]
+ oo::copy obj obj2 ::dupens
+ lappend result [info commands ::dupens::t*]
+} -cleanup {
+ Cls destroy
+} -result {{} ::dupens::test-15.14}
test oo-16.1 {OO: object introspection} -body {
info object