/trunk/Examples/test-suite/octave/director_classic_runme.m
MATLAB | 98 lines | 78 code | 20 blank | 0 comment | 3 complexity | 168e96aff7298695046a230adc01e911 MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
- director_classic
- TargetLangPerson=@() subclass(Person(),'id',@(self) "TargetLangPerson");
- TargetLangChild=@() subclass(Child(),'id',@(self) "TargetLangChild");
- TargetLangGrandChild=@() subclass(GrandChild(),'id',@(self) "TargetLangGrandChild");
- # Semis - don't override id() in target language
- TargetLangSemiPerson=@() subclass(Person());
- TargetLangSemiChild=@() subclass(Child());
- TargetLangSemiGrandChild=@() subclass(GrandChild());
- # Orphans - don't override id() in C++
- TargetLangOrphanPerson=@() subclass(OrphanPerson(),'id',@(self) "TargetLangOrphanPerson");
- TargetLangOrphanChild=@() subclass(OrphanChild(),'id',@(self) "TargetLangOrphanChild");
- function check(person,expected)
- global Caller;
- # Normal target language polymorphic call
- ret = person.id();
- if (ret != expected)
- raise ("Failed. Received: " + ret + " Expected: " + expected);
- endif
- # Polymorphic call from C++
- caller = Caller();
- caller.setCallback(person);
- ret = caller.call();
- if (ret != expected)
- error ("Failed. Received: " + ret + " Expected: " + expected);
- endif
- # Polymorphic call of object created in target language and passed to C++ and back again
- baseclass = caller.baseClass();
- ret = baseclass.id();
- if (ret != expected)
- error ("Failed. Received: " + ret + " Expected: " + expected);
- endif
- caller.resetCallback();
- end
- person = Person();
- check(person, "Person");
- clear person;
- person = Child();
- check(person, "Child");
- clear person;
- person = GrandChild();
- check(person, "GrandChild");
- clear person;
- person = TargetLangPerson();
- check(person, "TargetLangPerson");
- clear person;
- person = TargetLangChild();
- check(person, "TargetLangChild");
- clear person;
- person = TargetLangGrandChild();
- check(person, "TargetLangGrandChild");
- clear person;
- # Semis - don't override id() in target language
- person = TargetLangSemiPerson();
- check(person, "Person");
- clear person;
- person = TargetLangSemiChild();
- check(person, "Child");
- clear person;
- person = TargetLangSemiGrandChild();
- check(person, "GrandChild");
- clear person;
- # Orphans - don't override id() in C++
- person = OrphanPerson();
- check(person, "Person");
- clear person;
- person = OrphanChild();
- check(person, "Child");
- clear person;
- person = TargetLangOrphanPerson();
- check(person, "TargetLangOrphanPerson");
- clear person;
- person = TargetLangOrphanChild();
- check(person, "TargetLangOrphanChild");
- clear person;