diff options
Diffstat (limited to 'Examples/test-suite/d/director_classic_runme.1.d')
-rw-r--r-- | Examples/test-suite/d/director_classic_runme.1.d | 207 |
1 files changed, 0 insertions, 207 deletions
diff --git a/Examples/test-suite/d/director_classic_runme.1.d b/Examples/test-suite/d/director_classic_runme.1.d deleted file mode 100644 index 33be80618..000000000 --- a/Examples/test-suite/d/director_classic_runme.1.d +++ /dev/null @@ -1,207 +0,0 @@ -module director_classic_runme; - -import tango.io.Stdout; -import director_classic.Caller; -import director_classic.Person; -import director_classic.Child; -import director_classic.GrandChild; -import director_classic.OrphanPerson; -import director_classic.OrphanChild; - -const bool TRACE = false; - -void main() { - { - scope person = new Person(); - check(person, "Person"); - } - { - scope person = new Child(); - check(person, "Child"); - } - { - scope person = new GrandChild(); - check(person, "GrandChild"); - } - { - scope person = new TargetLangPerson(); - check(person, "TargetLangPerson"); - } - { - scope person = new TargetLangChild(); - check(person, "TargetLangChild"); - } - { - scope person = new TargetLangGrandChild(); - check(person, "TargetLangGrandChild"); - } - - // Semis - don't override id() in target language - { - scope person = new TargetLangSemiPerson(); - check(person, "Person"); - } - { - scope person = new TargetLangSemiChild(); - check(person, "Child"); - } - { - scope person = new TargetLangSemiGrandChild(); - check(person, "GrandChild"); - } - - // Orphans - don't override id() in C++ - { - scope person = new OrphanPerson(); - check(person, "Person"); - } - { - scope person = new OrphanChild(); - check(person, "Child"); - } - { - scope person = new TargetLangOrphanPerson(); - check(person, "TargetLangOrphanPerson"); - } - { - scope person = new TargetLangOrphanChild(); - check(person, "TargetLangOrphanChild"); - } - - // Duals - id() makes an upcall to the base id() - { - scope person = new TargetLangDualPerson(); - check(person, "TargetLangDualPerson + Person"); - } - { - scope person = new TargetLangDualChild(); - check(person, "TargetLangDualChild + Child"); - } - { - scope person = new TargetLangDualGrandChild(); - check(person, "TargetLangDualGrandChild + GrandChild"); - } - - // Mix Orphans and Duals - { - scope person = new TargetLangDualOrphanPerson(); - check(person, "TargetLangDualOrphanPerson + Person"); - } - { - scope person = new TargetLangDualOrphanChild(); - check(person, "TargetLangDualOrphanChild + Child"); - } -} - -void check(Person person, char[] expected) { - char[] ret; - // Normal D polymorphic call. - ret = person.id(); - if (TRACE) - Stdout(ret).newline; - if (ret != expected) - throw new Exception("Failed. Received: " ~ ret ~ " Expected: " ~ expected); - - // Polymorphic call from C++. - Caller caller = new Caller(); - caller.setCallback(person); - ret = caller.call(); - if (TRACE) - Stdout(ret).newline; - if (ret != expected) - throw new Exception("Failed. Received: " ~ ret ~ " Expected: " ~ expected); - - // Polymorphic call of object created in D and passed to C++ and back again. - Person baseclass = caller.baseClass(); - ret = baseclass.id(); - if (TRACE) - Stdout(ret).newline; - if (ret != expected) - throw new Exception("Failed. Received: " ~ ret ~ " Expected: " ~ expected); - - caller.resetCallback(); - if (TRACE) - Stdout("----------------------------------------").newline; -} - - -// »Full« target language persons. -class TargetLangPerson : Person { - public override char[] id() { - return "TargetLangPerson"; - } -} - -class TargetLangChild : Child { - public override char[] id() { - return "TargetLangChild"; - } -} - -class TargetLangGrandChild : GrandChild { - public override char[] id() { - return "TargetLangGrandChild"; - } -} - - -// Semis - don't override id() in target language -class TargetLangSemiPerson : Person { - // No id() override -} - -class TargetLangSemiChild : Child { - // No id() override -} - -class TargetLangSemiGrandChild : GrandChild { - // No id() override -} - - -// Orphans - don't override id() in C++ -class TargetLangOrphanPerson : OrphanPerson { - public override char[] id() { - return "TargetLangOrphanPerson"; - } -} - -class TargetLangOrphanChild : OrphanChild { - public override char[] id() { - return "TargetLangOrphanChild"; - } -} - - -// Duals - id() makes an upcall to the base id() -class TargetLangDualPerson : Person { - public override char[] id() { - return "TargetLangDualPerson + " ~ super.id(); - } -} - -class TargetLangDualChild : Child { - public override char[] id() { - return "TargetLangDualChild + " ~ super.id(); - } -} - -class TargetLangDualGrandChild : GrandChild { - public override char[] id() { - return "TargetLangDualGrandChild + " ~ super.id(); - } -} - - -// Mix Orphans and Duals -class TargetLangDualOrphanPerson : OrphanPerson { - public override char[] id() { - return "TargetLangDualOrphanPerson + " ~ super.id(); - } -} - -class TargetLangDualOrphanChild : OrphanChild { - public override char[] id() { - return "TargetLangDualOrphanChild + " ~ super.id(); - } -} |