Upstream version 1.3.40
[profile/ivi/swig.git] / Examples / test-suite / octave / director_classic_runme.m
1 director_classic
2
3 TargetLangPerson=@() subclass(Person(),'id',@(self) "TargetLangPerson");
4 TargetLangChild=@() subclass(Child(),'id',@(self) "TargetLangChild");
5 TargetLangGrandChild=@() subclass(GrandChild(),'id',@(self) "TargetLangGrandChild");
6
7 # Semis - don't override id() in target language
8 TargetLangSemiPerson=@() subclass(Person());
9 TargetLangSemiChild=@() subclass(Child());
10 TargetLangSemiGrandChild=@() subclass(GrandChild());
11
12 # Orphans - don't override id() in C++
13 TargetLangOrphanPerson=@() subclass(OrphanPerson(),'id',@(self) "TargetLangOrphanPerson");
14 TargetLangOrphanChild=@() subclass(OrphanChild(),'id',@(self) "TargetLangOrphanChild");
15
16
17 function check(person,expected)
18   global Caller;
19
20   # Normal target language polymorphic call
21   ret = person.id();
22   if (ret != expected)
23     raise ("Failed. Received: " + ret + " Expected: " + expected);
24   endif
25
26   # Polymorphic call from C++
27   caller = Caller();
28   caller.setCallback(person);
29   ret = caller.call();
30   if (ret != expected)
31     error ("Failed. Received: " + ret + " Expected: " + expected);
32   endif
33
34   # Polymorphic call of object created in target language and passed to C++ and back again
35   baseclass = caller.baseClass();
36   ret = baseclass.id();
37   if (ret != expected)
38     error ("Failed. Received: " + ret + " Expected: " + expected);
39   endif
40
41   caller.resetCallback();
42 end
43
44
45 person = Person();
46 check(person, "Person");
47 clear person;
48
49 person = Child();
50 check(person, "Child");
51 clear person;
52
53 person = GrandChild();
54 check(person, "GrandChild"); 
55 clear person;
56
57 person = TargetLangPerson();
58 check(person, "TargetLangPerson"); 
59 clear person;
60
61 person = TargetLangChild();
62 check(person, "TargetLangChild"); 
63 clear person;
64
65 person = TargetLangGrandChild();
66 check(person, "TargetLangGrandChild"); 
67 clear person;
68
69 # Semis - don't override id() in target language
70 person = TargetLangSemiPerson();
71 check(person, "Person"); 
72 clear person;
73
74 person = TargetLangSemiChild();
75 check(person, "Child"); 
76 clear person;
77
78 person = TargetLangSemiGrandChild();
79 check(person, "GrandChild"); 
80 clear person;
81
82 # Orphans - don't override id() in C++
83 person = OrphanPerson();
84 check(person, "Person");
85 clear person;
86
87 person = OrphanChild();
88 check(person, "Child");
89 clear person;
90
91 person = TargetLangOrphanPerson();
92 check(person, "TargetLangOrphanPerson"); 
93 clear person;
94
95 person = TargetLangOrphanChild();
96 check(person, "TargetLangOrphanChild"); 
97 clear person;
98