/
niceSOFT
/
swig
Обзор
Документация
Войти
/
niceSOFT
/
swig
Код
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
Examples/test-suite/python/director_exception_runme.py
96 строк
2 KB
William S Fulton
Convert python tests using 2to3
15 авг 2020, 02:16
15 авг 2020, 02:16
d4ffa46
Код
Авторство
О чём код?
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") class MyFoo4(Foo): def ping(self, *args): t = type("bad", "call") # throws TypeError message: type() takes 1 or 3 arguments return "Foo4.ping" # Check that the NotImplementedError raised by MyFoo.ping() is returned by # MyFoo.pong(). a = MyFoo() b = launder(a) try: b.pong() raise RuntimeError("Exception was not thrown") except NotImplementedError as e: if not str(e) == "MyFoo::ping() EXCEPTION": raise RuntimeError("Unexpected error message: %s" % str(e)) except TypeError: pass # Check that the director returns the appropriate TypeError if the return type # is wrong. a = MyFoo2() b = launder(a) try: b.pong() raise RuntimeError("Exception was not thrown") except TypeError as e: # fastdispatch mode adds on Additional Information to the exception message - just check the main exception message exists if not str(e).startswith("SWIG director type mismatch in output value of type 'std::string'"): raise RuntimeError("Unexpected error message: %s" % str(e)) # Check that the director can return an exception which requires two arguments # to the constructor, without mangling it. a = MyFoo3() b = launder(a) try: b.pong() raise RuntimeError("Exception was not thrown") except MyException as e: if e.msg != "foobar": raise RuntimeError("Unexpected error message: %s" % str(e)) # Check that the director returns the appropriate TypeError thrown in a director method a = MyFoo4() b = launder(a) try: b.pong() raise RuntimeError("Exception was not thrown") except TypeError as e: if not str(e).startswith("type() takes 1 or 3 arguments"): raise RuntimeError("Unexpected error message: %s" % str(e)) # This is expected to fail with -builtin option # Throwing builtin classes as exceptions not supported if not is_python_builtin(): try: raise Exception2() except Exception2: pass try: raise Exception1() except Exception1: pass