Enable variable and typemap substitution in typemap kwargs, and a test that verifies this works for directorin:descriptor.
This commit is contained in:
parent
c087580767
commit
94f683868a
4 changed files with 183 additions and 0 deletions
47
Examples/test-suite/java/java_director_ptrclass_runme.java
Normal file
47
Examples/test-suite/java/java_director_ptrclass_runme.java
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
|
||||
import java_director_ptrclass.*;
|
||||
|
||||
public class java_director_ptrclass_runme {
|
||||
|
||||
static {
|
||||
try {
|
||||
System.loadLibrary("java_director_ptrclass");
|
||||
} 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[]) {
|
||||
Foo f = new Foo();
|
||||
Foo ft = new TouchingFoo();
|
||||
Baz b = new Baz();
|
||||
if (b.GetTouched()) {
|
||||
throw new RuntimeException ( "Baz should not have been touched yet." );
|
||||
}
|
||||
|
||||
Baz b2 = f.FinalMaybeTouch(b);
|
||||
|
||||
if (b2.GetTouched() || b.GetTouched()) {
|
||||
throw new RuntimeException ( "Baz should not have been touched by Foo." );
|
||||
}
|
||||
|
||||
Baz b3 = ft.FinalMaybeTouch(b);
|
||||
|
||||
if (!b.GetTouched() || !b3.GetTouched() || !b2.GetTouched()) {
|
||||
throw new RuntimeException ( "Baz was not touched by TouchingFoo. This" +
|
||||
" might mean the directorin typemap is not" +
|
||||
" parsing the typemap(jstype, Bar) in its" +
|
||||
" 'descriptor' kwarg correctly." );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class TouchingFoo extends Foo {
|
||||
@Override
|
||||
public Baz MaybeTouch(Baz baz_ptr) {
|
||||
baz_ptr.SetTouched();
|
||||
return baz_ptr;
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue