aboutsummaryrefslogtreecommitdiff
path: root/Examples/tcl/import/runme.tcl
blob: cbc17270aec688f154e923dbfcfa6de57c58aa9a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
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"
}