From f9d781feee2ed7b4d40061e28447f33574483fd3 Mon Sep 17 00:00:00 2001 From: Marcelo Matus Date: Wed, 7 Apr 2004 00:53:48 +0000 Subject: [PATCH] add test for std::vector git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@5839 626c5289-ae23-0410-ae9c-e8d60b6d4f22 --- Examples/test-suite/python/lib_std_vector.i | 15 ++++++++++----- .../test-suite/python/lib_std_vector_runme.py | 9 +++++++++ 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/Examples/test-suite/python/lib_std_vector.i b/Examples/test-suite/python/lib_std_vector.i index 9b0a64bdb..896344722 100644 --- a/Examples/test-suite/python/lib_std_vector.i +++ b/Examples/test-suite/python/lib_std_vector.i @@ -58,14 +58,19 @@ void halve_in_place(std::vector& v) { namespace Test { struct A { virtual ~A() {} - virtual void f(const int i) const = 0; + virtual int f(const int i) const = 0; }; struct B : public A { - void f(const int i) const - { std::cout << "B::f(int)\n"; } + int val; + + B(int i = 0) : val(i) + { + } + + int f(const int i) const { return i + val; } }; } %} -%template(VecB) std::vector; // works -%template(VecA) std::vector; // Does not work +%template(VecB) std::vector; +%template(VecA) std::vector; diff --git a/Examples/test-suite/python/lib_std_vector_runme.py b/Examples/test-suite/python/lib_std_vector_runme.py index e0e2d2482..b07d7f53f 100644 --- a/Examples/test-suite/python/lib_std_vector_runme.py +++ b/Examples/test-suite/python/lib_std_vector_runme.py @@ -24,3 +24,12 @@ bv[3]= 0 if bv[0] != bv[2]: raise RuntimeError,"bad std::vector mapping" + +b = B(5) +va = VecA([b,b,b,b]) +if va[0].f(1) != 6: + raise RuntimeError,"bad std::vector mapping" + +b.val = 7 +if va[3].f(1) != 8: + raise RuntimeError,"bad std::vector mapping"