From bca042a7dd3e0c3727f4dc201d2964aa3b160763 Mon Sep 17 00:00:00 2001 From: William S Fulton Date: Fri, 7 Nov 2014 19:45:20 +0000 Subject: [PATCH] Add director_nested_class testcase Java nested director class test for fix in e7db081d5e175024f1d5baa9ac028474958a2542 --- Examples/test-suite/director_nested_class.i | 16 ++++++++++ .../java/director_nested_class_runme.java | 30 +++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 Examples/test-suite/director_nested_class.i create mode 100644 Examples/test-suite/java/director_nested_class_runme.java diff --git a/Examples/test-suite/director_nested_class.i b/Examples/test-suite/director_nested_class.i new file mode 100644 index 000000000..99eecfcc8 --- /dev/null +++ b/Examples/test-suite/director_nested_class.i @@ -0,0 +1,16 @@ +%module(directors="1") director_nested_class + + +%feature("director") DirectorOuter::DirectorInner; + +%inline %{ +struct DirectorOuter { + struct DirectorInner { + virtual ~DirectorInner() {} + virtual int vmethod(int input) const = 0; + }; + static int callMethod(const DirectorInner &di, int value) { + return di.vmethod(value); + } +}; +%} diff --git a/Examples/test-suite/java/director_nested_class_runme.java b/Examples/test-suite/java/director_nested_class_runme.java new file mode 100644 index 000000000..5d330fb46 --- /dev/null +++ b/Examples/test-suite/java/director_nested_class_runme.java @@ -0,0 +1,30 @@ + +import director_nested_class.*; + +public class director_nested_class_runme { + + static { + try { + System.loadLibrary("director_nested_class"); + } catch (UnsatisfiedLinkError e) { + System.err.println("Native code library failed to load. See the chapter on Dynamic Linking Problems in the SWIG Java documentation for help.\n" + e); + System.exit(1); + } + } + + public static void main(String argv[]) { + + director_nested_class_Derived d = new director_nested_class_Derived(); + + if (DirectorOuter.callMethod(d, 999) != 9990) { + throw new RuntimeException("callMethod(999) failed"); + } + } +} + +class director_nested_class_Derived extends DirectorOuter.DirectorInner { + public int vmethod(int input) { + return input * 10; + } +} +