/trunk/Examples/test-suite/python/director_exception_runme.py
Python | 81 lines | 60 code | 11 blank | 10 comment | 19 complexity | a76a75ad4634f658a4f756ecfdac5671 MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
- from director_exception import *
- class MyException(Exception):
- def __init__(self, a, b):
- self.msg = a + b
- class MyFoo(Foo):
- def ping(self):
- raise NotImplementedError, "MyFoo::ping() EXCEPTION"
- class MyFoo2(Foo):
- def ping(self):
- return True
- pass # error: should return a string
- class MyFoo3(Foo):
- def ping(self):
- raise MyException("foo", "bar")
- # Check that the NotImplementedError raised by MyFoo.ping() is returned by
- # MyFoo.pong().
- ok = 0
- a = MyFoo()
- b = launder(a)
- try:
- b.pong()
- except NotImplementedError, e:
- if str(e) == "MyFoo::ping() EXCEPTION":
- ok = 1
- else:
- print "Unexpected error message: %s" % str(e)
- except:
- pass
- if not ok:
- raise RuntimeError
- # Check that the director returns the appropriate TypeError if the return type
- # is wrong.
- ok = 0
- a = MyFoo2()
- b = launder(a)
- try:
- b.pong()
- except TypeError, e:
- if str(e) == "SWIG director type mismatch in output value of type 'std::string'":
- ok = 1
- else:
- print "Unexpected error message: %s" % str(e)
- if not ok:
- raise RuntimeError
- # Check that the director can return an exception which requires two arguments
- # to the constructor, without mangling it.
- ok = 0
- a = MyFoo3()
- b = launder(a)
- try:
- b.pong()
- except MyException, e:
- if e.msg == 'foobar':
- ok = 1
- else:
- print "Unexpected error message: %s" % str(e)
- if not ok:
- raise RuntimeError
- # This is expected to fail with -builtin option
- # Throwing builtin classes as exceptions not supported
- try:
- raise Exception2()
- except Exception2:
- pass
- # This is expected to fail with -builtin option
- # Throwing builtin classes as exceptions not supported
- try:
- raise Exception1()
- except Exception1:
- pass