blob: 67a0831147cafc1f5b7e93b52664cf798cbc0b13 [file] [log] [blame]
// This is the java_typemaps_proxy runtime testcase. Contrived example checks that the pure Java code from the Java typemaps compiles.
import java_typemaps_proxy.*;
import java.lang.reflect.*;
public class java_typemaps_proxy_runme {
static {
try {
System.loadLibrary("java_typemaps_proxy");
} 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[]) {
Greeting greet = new Greeting();
Farewell bye = new Farewell();
// Check that pure Java methods have been added
greet.sayhello();
bye.saybye(new java.math.BigDecimal(java.math.BigInteger.ONE));
// No finalize method so may as well delete manually
bye.delete();
// Check that Greeting is derived from Exception
try {
throw new Greeting();
} catch (Greeting g) {
String msg = g.getMessage();
}
// Check that Greeting has implemented the EventListener interface
Greeting.cheerio(greet);
// The default getCPtr() call in each method will through an exception if null is passed.
// Make sure the modified version works with and without null objects.
Greeting.ciao(null);
Greeting.ciao(greet);
// Create a NULL pointer for Farewell using the constructor with changed modifiers
Farewell nullFarewell = new Farewell(0, false);
// Test typemaps are being found for templated classes
AdieuIntPtrPtr.adieu();
// Check the %javamethodmodifiers feature
try {
Method methodmodifiertest = nullFarewell.getClass().getDeclaredMethod("methodmodifiertest", (java.lang.Class[])null);
if ( !Modifier.isPrivate(methodmodifiertest.getModifiers()) )
throw new RuntimeException("NS::Farewell::methodmodifiertest not private" );
} catch (NoSuchMethodException n) {
throw new RuntimeException("NoSuchmethodException caught. Test failed.");
} catch (SecurityException s) {
throw new RuntimeException("SecurityException caught. Test failed.");
}
// Check the premature garbage collection prevention parameter
// Check it is normally present
long nullPtr = 0;
With with = new With(null);
java_typemaps_proxyJNI.new_With(nullPtr, with);
java_typemaps_proxyJNI.With_static_method(nullPtr, with);
java_typemaps_proxyJNI.With_member_method(nullPtr, with, nullPtr, with);
java_typemaps_proxyJNI.delete_With(nullPtr);
java_typemaps_proxyJNI.global_method_with(nullPtr, with);
// Check that it can be turned off
java_typemaps_proxyJNI.new_Without(nullPtr);
java_typemaps_proxyJNI.Without_static_method(nullPtr);
java_typemaps_proxyJNI.Without_member_method(nullPtr, nullPtr);
java_typemaps_proxyJNI.delete_Without(nullPtr);
java_typemaps_proxyJNI.global_method_without(nullPtr);
}
}