swig/Examples/test-suite/python/director_classic_runme.py
Haoyu Bai 3d8ddfc442 Merged the Python 3.0 support branch. The merging progress is not so smooth, so hope this commit won't make anything broken.
This is the (incomplemete) log produced by svnmerge.py:

Merged revisions 10405-10409,10420-10422,10426,10438,10445,10451,10454-10465,10467,10473-10475,10485,10488-10489,10493-10495,10497,10509-10510,10513-10514,10517,10520,10525,10528-10529,10533-10535,10554-10557,10570,10573,10593,10614,10666-10669,10673,10678,10687,10690,10704-10706,10731,10744,10750-10752,10755,10759,10770,10775-10776,10813,10819 via svnmerge from 
https://swig.svn.sourceforge.net/svnroot/swig/branches/gsoc2008-bhy



git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@10834 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2008-09-11 17:18:07 +00:00

142 lines
3.2 KiB
Python

from director_classic import *
class TargetLangPerson(Person):
def __init__(self):
Person.__init__(self)
def id(self):
identifier = "TargetLangPerson"
return identifier
class TargetLangChild(Child):
def __init__(self):
Child.__init__(self)
def id(self):
identifier = "TargetLangChild"
return identifier
class TargetLangGrandChild(GrandChild):
def __init__(self):
GrandChild.__init__(self)
def id(self):
identifier = "TargetLangGrandChild"
return identifier
# Semis - don't override id() in target language
class TargetLangSemiPerson(Person):
def __init__(self):
Person.__init__(self)
# No id() override
class TargetLangSemiChild(Child):
def __init__(self):
Child.__init__(self)
# No id() override
class TargetLangSemiGrandChild(GrandChild):
def __init__(self):
GrandChild.__init__(self)
# No id() override
# Orphans - don't override id() in C++
class TargetLangOrphanPerson(OrphanPerson):
def __init__(self):
OrphanPerson.__init__(self)
def id(self):
identifier = "TargetLangOrphanPerson"
return identifier
class TargetLangOrphanChild(OrphanChild):
def __init__(self):
Child.__init__(self)
def id(self):
identifier = "TargetLangOrphanChild"
return identifier
def check(person, expected):
debug = 0
# Normal target language polymorphic call
ret = person.id()
if (debug):
print(ret)
if (ret != expected):
raise RuntimeError("Failed. Received: " + str(ret) + " Expected: " + expected)
# Polymorphic call from C++
caller = Caller()
caller.setCallback(person)
ret = caller.call()
if (debug):
print(ret)
if (ret != expected):
raise RuntimeError("Failed. Received: " + str(ret) + " Expected: " + expected)
# Polymorphic call of object created in target language and passed to C++ and back again
baseclass = caller.baseClass()
ret = baseclass.id()
if (debug):
print(ret)
if (ret != expected):
raise RuntimeError("Failed. Received: " + str(ret)+ " Expected: " + expected)
caller.resetCallback()
if (debug):
print("----------------------------------------")
person = Person();
check(person, "Person");
del person
person = Child();
check(person, "Child");
del person
person = GrandChild();
check(person, "GrandChild");
del person
person = TargetLangPerson();
check(person, "TargetLangPerson");
del person
person = TargetLangChild();
check(person, "TargetLangChild");
del person
person = TargetLangGrandChild();
check(person, "TargetLangGrandChild");
del person
# Semis - don't override id() in target language
person = TargetLangSemiPerson();
check(person, "Person");
del person
person = TargetLangSemiChild();
check(person, "Child");
del person
person = TargetLangSemiGrandChild();
check(person, "GrandChild");
del person
# Orphans - don't override id() in C++
person = OrphanPerson();
check(person, "Person");
del person
person = OrphanChild();
check(person, "Child");
del person
person = TargetLangOrphanPerson();
check(person, "TargetLangOrphanPerson");
del person
person = TargetLangOrphanChild();
check(person, "TargetLangOrphanChild");
del person