| 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()") |