/
niceSOFT
/
swig
Обзор
Документация
Войти
/
niceSOFT
/
swig
Код
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
Examples/test-suite/python/director_protected_runme.py
138 строк
3 KB
William S Fulton
Fix protected/private nested class referenced in generated upcast helper
11 июл 2026, 23:02
11 июл 2026, 23:02
f156c99
Код
Авторство
О чём код?
from director_protected import * class FooBar(Bar): def ping(self): return "FooBar::ping();" class FooBar2(Bar): def ping(self): return "FooBar2::ping();" def pang(self): return "FooBar2::pang();" class FooBar3(Bar): def cheer(self): return "FooBar3::cheer();" b = Bar() f = b.create() fb = FooBar() fb2 = FooBar2() fb3 = FooBar3() try: s = fb.used() if s != "Foo::pang();Bar::pong();Foo::pong();FooBar::ping();": raise RuntimeError pass except: raise RuntimeError("bad FooBar::used") try: s = fb2.used() if s != "FooBar2::pang();Bar::pong();Foo::pong();FooBar2::ping();": raise RuntimeError pass except: raise RuntimeError("bad FooBar2::used") try: s = b.pong() if s != "Bar::pong();Foo::pong();Bar::ping();": raise RuntimeError pass except: raise RuntimeError("bad Bar::pong") try: s = f.pong() if s != "Bar::pong();Foo::pong();Bar::ping();": raise RuntimeError pass except: raise RuntimeError(" bad Foo::pong") try: s = fb.pong() if s != "Bar::pong();Foo::pong();FooBar::ping();": raise RuntimeError pass except: raise RuntimeError(" bad FooBar::pong") protected = 1 try: b.ping() protected = 0 except: pass if not protected: raise RuntimeError("Foo::ping is protected") protected = 1 try: f.ping() protected = 0 except: pass if not protected: raise RuntimeError("Foo::ping is protected") protected = 1 try: f.pang() protected = 0 except: pass if not protected: raise RuntimeError("FooBar::pang is protected") protected = 1 try: b.cheer() protected = 0 except: pass if not protected: raise RuntimeError("Bar::cheer is protected") protected = 1 try: f.cheer() protected = 0 except: pass if not protected: raise RuntimeError("Foo::cheer is protected") if fb3.cheer() != "FooBar3::cheer();": raise RuntimeError("bad fb3::cheer") if fb2.callping() != "FooBar2::ping();": raise RuntimeError("bad fb2.callping") if fb2.callcheer() != "FooBar2::pang();Bar::pong();Foo::pong();FooBar2::ping();": raise RuntimeError("bad fb2.callcheer") if fb3.callping() != "Bar::ping();": raise RuntimeError("bad fb3.callping") if fb3.callcheer() != "FooBar3::cheer();": raise RuntimeError("bad fb3.callcheer") # NestedDerived is never wrapped (protected nested class); check identify() still dispatches to it. outer = NestedOuter() base = outer.makeDerived() if base.identify() != 1: raise RuntimeError("bad NestedOuter.makeDerived().identify()")