PageRenderTime 24ms CodeModel.GetById 0ms RepoModel.GetById 0ms app.codeStats 0ms

/trunk/Examples/test-suite/d/director_basic_runme.2.d

#
D | 46 lines | 39 code | 7 blank | 0 comment | 6 complexity | 5151f8ad46c1253fe63d59f4f7e59645 MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
  1. module director_basic_runme;
  2. import std.exception;
  3. import director_basic.A1;
  4. import director_basic.Bar;
  5. import director_basic.Foo;
  6. import director_basic.MyClass;
  7. void main() {
  8. auto a = new director_basic_MyFoo();
  9. enforce(a.ping() == "director_basic_MyFoo::ping()", "a.ping()");
  10. enforce(a.pong() == "Foo::pong();director_basic_MyFoo::ping()", "a.pong()");
  11. auto b = new Foo();
  12. enforce(b.ping() == "Foo::ping()", "b.ping()");
  13. enforce(b.pong() == "Foo::pong();Foo::ping()", "b.pong()");
  14. {
  15. scope a1 = new A1(1, false);
  16. }
  17. auto my = new MyOverriddenClass();
  18. my.expectNull = true;
  19. enforce(MyClass.call_pmethod(my, null) is null, "null pointer conversion problem");
  20. auto myBar = new Bar();
  21. my.expectNull = false;
  22. auto myNewBar = MyClass.call_pmethod(my, myBar);
  23. enforce(myNewBar !is null, "non-null pointer conversion problem");
  24. myNewBar.x = 10;
  25. }
  26. class director_basic_MyFoo : Foo {
  27. public override string ping() {
  28. return "director_basic_MyFoo::ping()";
  29. }
  30. }
  31. class MyOverriddenClass : MyClass {
  32. public bool expectNull = false;
  33. public bool nonNullReceived = false;
  34. public override Bar pmethod(Bar b) {
  35. if (expectNull && (b !is null))
  36. throw new Exception("null not received as expected");
  37. return b;
  38. }
  39. }