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:
Seth R Johnson 2022-02-12 18:43:02 -05:00
parent fb0cddfd2b
commit 0da8a9bb44
3 changed files with 36 additions and 0 deletions

View File

@ -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;
}
};
%}

View File

@ -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 \

View File

@ -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))