diff options
Diffstat (limited to 'Examples/test-suite/d/director_protected_runme.1.d')
-rw-r--r-- | Examples/test-suite/d/director_protected_runme.1.d | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/Examples/test-suite/d/director_protected_runme.1.d b/Examples/test-suite/d/director_protected_runme.1.d new file mode 100644 index 000000000..81447b73b --- /dev/null +++ b/Examples/test-suite/d/director_protected_runme.1.d @@ -0,0 +1,50 @@ +module director_protected_runme; + +import director_protected.Foo; +import director_protected.Bar; + +void main() { + Bar b = new Bar(); + Foo f = b.create(); + auto fb = new FooBar(); + auto fb2 = new FooBar2(); + + char[] s; + s = fb.used(); + if ( s != ("Foo::pang();Bar::pong();Foo::pong();FooBar::ping();")) + throw new Exception("bad FooBar::used" ~ " - " ~ s); + + s = fb2.used(); + if ( s != ("FooBar2::pang();Bar::pong();Foo::pong();FooBar2::ping();")) + throw new Exception("bad FooBar2::used"); + + s = b.pong(); + if ( s != ("Bar::pong();Foo::pong();Bar::ping();")) + throw new Exception("bad Bar::pong"); + + s = f.pong(); + if ( s != ("Bar::pong();Foo::pong();Bar::ping();")) + throw new Exception("bad Foo::pong"); + + s = fb.pong(); + if ( s != ("Bar::pong();Foo::pong();FooBar::ping();")) + throw new Exception("bad FooBar::pong"); +} + +class FooBar : Bar { +protected: + override char[] ping() { + return "FooBar::ping();"; + } +} + +class FooBar2 : Bar{ +protected: + override char[] ping() { + return "FooBar2::ping();"; + } + + override char[] pang() { + return "FooBar2::pang();"; + } +} |