From 92d3146a0621d8da071eb8e07ac0e283f3f265b0 Mon Sep 17 00:00:00 2001 From: William S Fulton Date: Fri, 7 Nov 2014 20:38:09 +0000 Subject: [PATCH] Expand director_nested_class test to test more than one level of nesting --- Examples/test-suite/director_nested_class.i | 9 +++++++++ .../test-suite/java/director_nested_class_runme.java | 11 +++++++++++ 2 files changed, 20 insertions(+) diff --git a/Examples/test-suite/director_nested_class.i b/Examples/test-suite/director_nested_class.i index 99eecfcc8..f3d627f3c 100644 --- a/Examples/test-suite/director_nested_class.i +++ b/Examples/test-suite/director_nested_class.i @@ -2,15 +2,24 @@ %feature("director") DirectorOuter::DirectorInner; +%feature("director") DirectorOuter::DirectorInner::DirectorInnerInner; %inline %{ struct DirectorOuter { struct DirectorInner { virtual ~DirectorInner() {} virtual int vmethod(int input) const = 0; + struct DirectorInnerInner { + DirectorInnerInner(DirectorInner *din = 0) {} + virtual ~DirectorInnerInner() {} + virtual int innervmethod(int input) const = 0; + }; }; static int callMethod(const DirectorInner &di, int value) { return di.vmethod(value); } + static int callInnerInnerMethod(const DirectorInner::DirectorInnerInner &di, int value) { + return di.innervmethod(value); + } }; %} diff --git a/Examples/test-suite/java/director_nested_class_runme.java b/Examples/test-suite/java/director_nested_class_runme.java index 5d330fb46..5144413b7 100644 --- a/Examples/test-suite/java/director_nested_class_runme.java +++ b/Examples/test-suite/java/director_nested_class_runme.java @@ -19,6 +19,12 @@ public class director_nested_class_runme { if (DirectorOuter.callMethod(d, 999) != 9990) { throw new RuntimeException("callMethod(999) failed"); } + + director_nested_class_DerivedInnerInner dinner = new director_nested_class_DerivedInnerInner(); + + if (DirectorOuter.callInnerInnerMethod(dinner, 999) != 999000) { + throw new RuntimeException("callMethod(999) failed"); + } } } @@ -28,3 +34,8 @@ class director_nested_class_Derived extends DirectorOuter.DirectorInner { } } +class director_nested_class_DerivedInnerInner extends DirectorOuter.DirectorInner.DirectorInnerInner { + public int innervmethod(int input) { + return input * 1000; + } +}