From 77cdba81adecc882ea167417d0c0401f672c1859 Mon Sep 17 00:00:00 2001 From: Seth R Johnson Date: Sat, 12 Feb 2022 19:19:31 -0500 Subject: [PATCH] Add test case for very simple director classes Test both abstract and concrete base classes, with simple int/bool data. This level of complexity is very helpful when setting up director functionality for a new target language. --- Examples/test-suite/common.mk | 1 + Examples/test-suite/director_simple.i | 42 +++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 Examples/test-suite/director_simple.i diff --git a/Examples/test-suite/common.mk b/Examples/test-suite/common.mk index 4a7855efb..61a5fcddc 100644 --- a/Examples/test-suite/common.mk +++ b/Examples/test-suite/common.mk @@ -214,6 +214,7 @@ CPP_TEST_CASES += \ director_protected_overloaded \ director_redefined \ director_ref \ + director_simple \ director_smartptr \ director_thread \ director_unroll \ diff --git a/Examples/test-suite/director_simple.i b/Examples/test-suite/director_simple.i new file mode 100644 index 000000000..0883cae12 --- /dev/null +++ b/Examples/test-suite/director_simple.i @@ -0,0 +1,42 @@ +%module(directors="1") director_simple + +%feature("director") IntBase; +%feature("director") BoolBase; + +%inline %{ +class IntBase { + public: + virtual ~IntBase() {} + IntBase(int i = 3) { (void)i; } + virtual int apply(int x) const { return x * 2; } +}; + +class IntDerived : public IntBase { + public: + virtual int apply(int x) const { return x * 3; } +}; + +int apply(const IntBase& b, int x) +{ + return b.apply(x); +} + +class BoolBase { + public: + virtual ~BoolBase() {} + BoolBase() {} + virtual bool apply(bool a, bool b) const = 0; +}; + +class BoolDerived : public BoolBase { + public: + virtual bool apply(bool a, bool b) const { return a != b; } +}; + +bool apply(const BoolBase& base, bool a, bool b) +{ + return base.apply(a, b); +} + +%} +