From ab790f802ab12778cba10b8f8ea8422ccd3b6140 Mon Sep 17 00:00:00 2001 From: Marcelo Matus Date: Wed, 19 Oct 2005 10:56:37 +0000 Subject: [PATCH] add more cases git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@7686 626c5289-ae23-0410-ae9c-e8d60b6d4f22 --- Examples/test-suite/director_basic.i | 128 +++++++++++------- Examples/test-suite/python/.cvsignore | 4 + .../test-suite/python/director_basic_runme.py | 35 ++++- .../test-suite/python/li_cmalloc_runme.py | 14 ++ .../test-suite/python/li_cpointer_runme.py | 10 ++ .../python/primitive_types_runme.py | 1 + 6 files changed, 136 insertions(+), 56 deletions(-) create mode 100644 Examples/test-suite/python/li_cmalloc_runme.py create mode 100644 Examples/test-suite/python/li_cpointer_runme.py diff --git a/Examples/test-suite/director_basic.i b/Examples/test-suite/director_basic.i index a24ee40cf..8512a8afa 100644 --- a/Examples/test-suite/director_basic.i +++ b/Examples/test-suite/director_basic.i @@ -1,67 +1,77 @@ -%module(directors="1") director_basic -%{ -#include + %module(directors="1") director_basic + %{ + #include -class Foo { -public: - virtual ~Foo() {} - virtual std::string ping() { return "Foo::ping()"; } - virtual std::string pong() { return "Foo::pong();" + ping(); } -}; + class Foo { + public: + virtual ~Foo() {} + virtual std::string ping() { return "Foo::ping()"; } + virtual std::string pong() { return "Foo::pong();" + ping(); } + }; -%} + %} -%include "std_string.i" + %include "std_string.i" -%feature("director") Foo; + %feature("director") Foo; -class Foo { -public: - virtual ~Foo() {} - virtual std::string ping() { return "Foo::ping()"; } - virtual std::string pong() { return "Foo::pong();" + ping(); } -}; + class Foo { + public: + virtual ~Foo() {} + virtual std::string ping() { return "Foo::ping()"; } + virtual std::string pong() { return "Foo::pong();" + ping(); } + }; -%{ -#include -%} -%feature("director"); + %{ + #include + %} + %feature("director"); -// basic renaming -%rename(rg) A::gg; -%feature("nodirector") hi::A1::gg; + // basic renaming + %rename(rg) A::gg; + %feature("nodirector") hi::A1::gg; -%inline %{ + %inline %{ -struct A{ - A(std::complex i, double d=0.0) {} - A(int i, bool j=false) {} - virtual ~A() {} - - virtual int f(int i=0) {return i;} - virtual int gg(int i=0) {return i;} -}; + struct A{ + A(std::complex i, double d=0.0) {} + A(int i, bool j=false) {} + virtual ~A() {} -namespace hi { + virtual int f(int i=0) {return i;} + virtual int gg(int i=0) {return i;} + }; - struct A1 : public A { - A1(std::complex i, double d=0.0) : A(i, d) {} - A1(int i, bool j=false) : A(i, j) {} - - virtual int ff(int i = 0) {return i;} - }; -} + namespace hi { + + struct A1 : public A { + A1(std::complex i, double d=0.0) : A(i, d) {} + A1(int i, bool j=false) : A(i, j) {} + + virtual int ff(int i = 0) {return i;} + }; + } + + + %} + + + %feature("director") MyClass; + + %inline %{ + + typedef void VoidType; + + struct Bar + { + int x; + Bar(int _x = 0) : x(_x) + { + } + }; + - -%} - - -%feature("director") MyClass; - -%inline %{ - -typedef void VoidType; class MyClass { public: @@ -76,6 +86,22 @@ public: virtual ~MyClass() { } + + virtual Bar vmethod(Bar b) + { + b.x += 13; + return b; + } + + Bar cmethod(const Bar &b) + { + return vmethod(b); + } + + static MyClass *get_self(MyClass *c) + { + return c; + } }; diff --git a/Examples/test-suite/python/.cvsignore b/Examples/test-suite/python/.cvsignore index 32f6ec8e6..e98fd0e29 100644 --- a/Examples/test-suite/python/.cvsignore +++ b/Examples/test-suite/python/.cvsignore @@ -452,3 +452,7 @@ template_typedef_import.py li_cwstring.py compactdefaultargs.py refcount.py +li_implicit.py +director_wstring.py +immutable.py +inherit.py diff --git a/Examples/test-suite/python/director_basic_runme.py b/Examples/test-suite/python/director_basic_runme.py index 55dff3835..3a6a4579b 100644 --- a/Examples/test-suite/python/director_basic_runme.py +++ b/Examples/test-suite/python/director_basic_runme.py @@ -1,16 +1,16 @@ import director_basic -class MyFoo(director_basic.Foo): +class PyFoo(director_basic.Foo): def ping(self): - return "MyFoo::ping()" + return "PyFoo::ping()" -a = MyFoo() +a = PyFoo() -if a.ping() != "MyFoo::ping()": +if a.ping() != "PyFoo::ping()": raise RuntimeError, a.ping() -if a.pong() != "Foo::pong();MyFoo::ping()": +if a.pong() != "Foo::pong();PyFoo::ping()": raise RuntimeError, a.pong() b = director_basic.Foo() @@ -26,3 +26,28 @@ a = director_basic.A1(1) if a.rg(2) != 2: raise RuntimeError + + +class PyClass(director_basic.MyClass): + def vmethod(self, b): + b.x += 31 + return b + + +b = director_basic.Bar(3) +d = director_basic.MyClass() +c = PyClass() + +cc = PyClass.get_self(c) +dd = PyClass.get_self(d) + +bc = cc.cmethod(b) +bd = dd.cmethod(b) + +if bc.x != 34: + raise RuntimeError + + +if bd.x != 16: + raise RuntimeError + diff --git a/Examples/test-suite/python/li_cmalloc_runme.py b/Examples/test-suite/python/li_cmalloc_runme.py new file mode 100644 index 000000000..9e698aee2 --- /dev/null +++ b/Examples/test-suite/python/li_cmalloc_runme.py @@ -0,0 +1,14 @@ +from li_cmalloc import * + +p = malloc_int() +free_int(p) + +ok = 0 +try: + p = calloc_int(-1) + free_int(p) +except: + ok = 1 + +if ok != 1: + raise RuntimeError diff --git a/Examples/test-suite/python/li_cpointer_runme.py b/Examples/test-suite/python/li_cpointer_runme.py new file mode 100644 index 000000000..ac95ff4b9 --- /dev/null +++ b/Examples/test-suite/python/li_cpointer_runme.py @@ -0,0 +1,10 @@ +from li_cpointer import * + + +p = new_intp() +intp_assign(p,3) + +if intp_value(p) != 3: + raise RuntimeError + +delete_intp(p) diff --git a/Examples/test-suite/python/primitive_types_runme.py b/Examples/test-suite/python/primitive_types_runme.py index 29d596ee8..fe0226b21 100644 --- a/Examples/test-suite/python/primitive_types_runme.py +++ b/Examples/test-suite/python/primitive_types_runme.py @@ -265,6 +265,7 @@ cvar.var_namet = pc if cvar.var_namet != "hola": raise RuntimeError, "bad pointer case" +delete_pchar(pc) # # Now when things should fail