summaryrefslogtreecommitdiff
path: root/Examples/test-suite/d/director_protected_runme.1.d
diff options
context:
space:
mode:
Diffstat (limited to 'Examples/test-suite/d/director_protected_runme.1.d')
-rw-r--r--Examples/test-suite/d/director_protected_runme.1.d50
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();";
+ }
+}