summaryrefslogtreecommitdiff
path: root/Examples/tcl/import/runme.tcl
diff options
context:
space:
mode:
Diffstat (limited to 'Examples/tcl/import/runme.tcl')
-rw-r--r--Examples/tcl/import/runme.tcl114
1 files changed, 114 insertions, 0 deletions
diff --git a/Examples/tcl/import/runme.tcl b/Examples/tcl/import/runme.tcl
new file mode 100644
index 0000000..1227d7b
--- /dev/null
+++ b/Examples/tcl/import/runme.tcl
@@ -0,0 +1,114 @@
+# file: runme.tcl
+# Test various properties of classes defined in separate modules
+
+puts "Testing the %import directive"
+catch { load ./base[info sharedlibextension] base}
+catch { load ./foo[info sharedlibextension] foo}
+catch { load ./bar[info sharedlibextension] bar}
+catch { load ./spam[info sharedlibextension] spam}
+
+# Create some objects
+
+puts "Creating some objects"
+
+set a [Base]
+set b [Foo]
+set c [Bar]
+set d [Spam]
+
+# Try calling some methods
+puts "Testing some methods"
+puts "Should see 'Base::A' ---> "
+$a A
+puts "Should see 'Base::B' ---> "
+$a B
+
+puts "Should see 'Foo::A' ---> "
+$b A
+puts "Should see 'Foo::B' ---> "
+$b B
+
+puts "Should see 'Bar::A' ---> "
+$c A
+puts "Should see 'Bar::B' ---> "
+$c B
+
+puts "Should see 'Spam::A' ---> "
+$d A
+puts "Should see 'Spam::B' ---> "
+$d B
+
+# Try some casts
+
+puts "\nTesting some casts\n"
+
+Base x -this [$a toBase]
+puts "Should see 'Base::A' ---> "
+x A
+puts "Should see 'Base::B' ---> "
+x B
+rename x ""
+
+Base x -this [$b toBase]
+puts "Should see 'Foo::A' ---> "
+x A
+puts "Should see 'Base::B' ---> "
+x B
+rename x ""
+
+Base x -this [$c toBase]
+puts "Should see 'Bar::A' ---> "
+x A
+puts "Should see 'Base::B' ---> "
+x B
+rename x ""
+
+Base x -this [$d toBase]
+puts "Should see 'Spam::A' ---> "
+x A
+puts "Should see 'Base::B' ---> "
+x B
+rename x ""
+
+Bar x -this [$d toBar]
+puts "Should see 'Bar::B' ---> "
+x B
+rename x ""
+
+puts "\nTesting some dynamic casts\n"
+Base x -this [$d toBase]
+
+puts "Spam -> Base -> Foo : "
+set y [Foo_fromBase [x cget -this]]
+if {$y != "NULL"} {
+ puts "bad swig"
+} {
+ puts "good swig"
+}
+
+puts "Spam -> Base -> Bar : "
+set y [Bar_fromBase [x cget -this]]
+if {$y != "NULL"} {
+ puts "good swig"
+} {
+ puts "bad swig"
+}
+
+puts "Spam -> Base -> Spam : "
+set y [Spam_fromBase [x cget -this]]
+if {$y != "NULL"} {
+ puts "good swig"
+} {
+ puts "bad swig"
+}
+
+puts "Foo -> Spam : "
+set y [Spam_fromBase $b]
+if {$y != "NULL"} {
+ puts "bad swig"
+} {
+ puts "good swig"
+}
+
+
+