From 241460eddc2165cea0d30626ccca363b373ee115 Mon Sep 17 00:00:00 2001 From: William S Fulton Date: Tue, 23 May 2017 21:32:44 +0100 Subject: [PATCH] director_smartptr runtime tests enhancement Add same changes from previous commit to additional languages --- .../csharp/director_smartptr_runme.cs | 29 +++++++++++++++++++ .../python/director_smartptr_runme.py | 19 ++++++++++++ .../ruby/director_smartptr_runme.rb | 24 +++++++++++++++ 3 files changed, 72 insertions(+) diff --git a/Examples/test-suite/csharp/director_smartptr_runme.cs b/Examples/test-suite/csharp/director_smartptr_runme.cs index 559dff7a0..33037a1da 100644 --- a/Examples/test-suite/csharp/director_smartptr_runme.cs +++ b/Examples/test-suite/csharp/director_smartptr_runme.cs @@ -26,6 +26,29 @@ public class runme } } + private class director_smartptr_MyBarFooDerived : FooDerived + { + public override string ping() + { + return "director_smartptr_MyBarFooDerived.ping()"; + } + + public override string pong() + { + return "director_smartptr_MyBarFooDerived.pong();" + ping(); + } + + public override string upcall(FooBar fooBarPtr) + { + return "overrideDerived;" + fooBarPtr.FooBarDo(); + } + + public override Foo makeFoo() + { + return new Foo(); + } + } + private static void check(string got, string expected) { if (got != expected) @@ -49,5 +72,11 @@ public class runme Foo myFoo2 = new Foo().makeFoo(); check(myFoo2.pong(), "Foo::pong();Foo::ping()"); check(Foo.callPong(myFoo2), "Foo::pong();Foo::ping()"); + + FooDerived myBarFooDerived = new director_smartptr_MyBarFooDerived(); + check(myBarFooDerived.ping(), "director_smartptr_MyBarFooDerived.ping()"); + check(FooDerived.callPong(myBarFooDerived), "director_smartptr_MyBarFooDerived.pong();director_smartptr_MyBarFooDerived.ping()"); + check(FooDerived.callUpcall(myBarFooDerived, fooBar), "overrideDerived;Bar::Foo2::Foo2Bar()"); + } } diff --git a/Examples/test-suite/python/director_smartptr_runme.py b/Examples/test-suite/python/director_smartptr_runme.py index c8bab9d7a..23e22d0fb 100644 --- a/Examples/test-suite/python/director_smartptr_runme.py +++ b/Examples/test-suite/python/director_smartptr_runme.py @@ -15,6 +15,20 @@ class director_smartptr_MyBarFoo(Foo): def makeFoo(self): return Foo() +class director_smartptr_MyBarFooDerived(FooDerived): + + def ping(self): + return "director_smartptr_MyBarFooDerived.ping()" + + def pong(self): + return "director_smartptr_MyBarFooDerived.pong();" + self.ping() + + def upcall(self, fooBarPtr): + return "overrideDerived;" + fooBarPtr.FooBarDo() + + def makeFoo(self): + return Foo() + def check(got, expected): if (got != expected): raise RuntimeError, "Failed, got: " + got + " expected: " + expected @@ -35,3 +49,8 @@ myFoo2 = Foo().makeFoo() check(myFoo2.pong(), "Foo::pong();Foo::ping()") check(Foo.callPong(myFoo2), "Foo::pong();Foo::ping()") check(myFoo2.upcall(FooBar()), "Bar::Foo2::Foo2Bar()") + +myBarFooDerived = director_smartptr_MyBarFooDerived() +check(myBarFooDerived.ping(), "director_smartptr_MyBarFooDerived.ping()") +check(FooDerived.callPong(myBarFooDerived), "director_smartptr_MyBarFooDerived.pong();director_smartptr_MyBarFooDerived.ping()") +check(FooDerived.callUpcall(myBarFooDerived, fooBar), "overrideDerived;Bar::Foo2::Foo2Bar()") diff --git a/Examples/test-suite/ruby/director_smartptr_runme.rb b/Examples/test-suite/ruby/director_smartptr_runme.rb index 8b4bd3d6d..46ef8b1b5 100644 --- a/Examples/test-suite/ruby/director_smartptr_runme.rb +++ b/Examples/test-suite/ruby/director_smartptr_runme.rb @@ -30,6 +30,25 @@ class Director_smartptr_MyBarFoo < Foo end end +class Director_smartptr_MyBarFooDerived < FooDerived + + def ping() + return "director_smartptr_MyBarFooDerived.ping()" + end + + def pong() + return "director_smartptr_MyBarFooDerived.pong();" + ping() + end + + def upcall(fooBarPtr) + return "overrideDerived;" + fooBarPtr.FooBarDo() + end + + def makeFoo() + return Foo.new() + end +end + def check(got, expected) if (got != expected) raise RuntimeError, "Failed, got: #{got} expected: #{expected}" @@ -52,3 +71,8 @@ myFoo2 = Foo.new().makeFoo() check(myFoo2.pong(), "Foo::pong();Foo::ping()") check(Foo.callPong(myFoo2), "Foo::pong();Foo::ping()") check(myFoo2.upcall(FooBar.new()), "Bar::Foo2::Foo2Bar()") + +myBarFooDerived = Director_smartptr_MyBarFooDerived.new() +check(myBarFooDerived.ping(), "director_smartptr_MyBarFooDerived.ping()") +check(FooDerived.callPong(myBarFooDerived), "director_smartptr_MyBarFooDerived.pong();director_smartptr_MyBarFooDerived.ping()") +check(FooDerived.callUpcall(myBarFooDerived, fooBar), "overrideDerived;Bar::Foo2::Foo2Bar()")