mirror of https://github.com/swig/swig
Test ability to manipulate a daughter class from its base class wrapper
Even in the case of just creating a `DerivedClass` this test says: ``` swig/python detected a memory leak of type 'DerivedClass *', no destructor found. ``` even though the destructor is defined in the base class.
This commit is contained in:
parent
fb0cddfd2b
commit
0da8a9bb44
|
@ -0,0 +1,20 @@
|
|||
%module abstract_basecast
|
||||
|
||||
%inline %{
|
||||
class BaseClass {
|
||||
public:
|
||||
virtual ~BaseClass() { }
|
||||
|
||||
virtual void g() = 0;
|
||||
};
|
||||
|
||||
class DerivedClass : public BaseClass {
|
||||
public:
|
||||
|
||||
virtual void g() { }
|
||||
|
||||
BaseClass& f() {
|
||||
return *this;
|
||||
}
|
||||
};
|
||||
%}
|
|
@ -102,6 +102,7 @@ C_TEST_BROKEN += \
|
|||
# C++ test cases. (Can be run individually using: make testcase.cpptest)
|
||||
CPP_TEST_CASES += \
|
||||
abstract_access \
|
||||
abstract_basecast \
|
||||
abstract_inherit \
|
||||
abstract_inherit_ok \
|
||||
abstract_signature \
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
from abstract_basecast import *
|
||||
|
||||
def check(flag):
|
||||
if not flag:
|
||||
raise RuntimeError("Test failed")
|
||||
|
||||
derived = DerivedClass()
|
||||
derived.g()
|
||||
check(isinstance(derived, BaseClass))
|
||||
check(isinstance(derived, DerivedClass))
|
||||
|
||||
base = derived.f()
|
||||
base.g()
|
||||
check(isinstance(base, BaseClass))
|
||||
check(not isinstance(base, DerivedClass))
|
Loading…
Reference in New Issue