public void testBooleanToIntArgumentConversion() { final int MAGIC = 0xABEDCF23; Map options = new HashMap(); DefaultTypeMapper mapper = new DefaultTypeMapper(); mapper.addToNativeConverter( Boolean.class, new ToNativeConverter() { public Object toNative(Object arg, ToNativeContext ctx) { return new Integer(Boolean.TRUE.equals(arg) ? MAGIC : 0); } public Class nativeType() { return Integer.class; } }); options.put(Library.OPTION_TYPE_MAPPER, mapper); TestLibrary lib = (TestLibrary) Native.loadLibrary("testlib", TestLibrary.class, options); assertEquals("Failed to convert Boolean argument to Int", MAGIC, lib.returnInt32Argument(true)); }
public void testStringToIntArgumentConversion() { DefaultTypeMapper mapper = new DefaultTypeMapper(); mapper.addToNativeConverter( String.class, new ToNativeConverter() { public Object toNative(Object arg, ToNativeContext ctx) { return Integer.valueOf((String) arg, 16); } public Class nativeType() { return Integer.class; } }); Map options = new HashMap(); options.put(Library.OPTION_TYPE_MAPPER, mapper); final int MAGIC = 0x7BEDCF23; TestLibrary lib = (TestLibrary) Native.loadLibrary("testlib", TestLibrary.class, options); assertEquals( "Failed to convert String argument to Int", MAGIC, lib.returnInt32Argument(Integer.toHexString(MAGIC))); }
public void testNumberToIntArgumentConversion() { DefaultTypeMapper mapper = new DefaultTypeMapper(); mapper.addToNativeConverter( Double.class, new ToNativeConverter() { public Object toNative(Object arg, ToNativeContext ctx) { return new Integer(((Double) arg).intValue()); } public Class nativeType() { return Integer.class; } }); Map options = new HashMap(); options.put(Library.OPTION_TYPE_MAPPER, mapper); final int MAGIC = 0x7BEDCF23; TestLibrary lib = (TestLibrary) Native.loadLibrary("testlib", TestLibrary.class, options); assertEquals( "Failed to convert Double argument to Int", MAGIC, lib.returnInt32Argument(new Double(MAGIC))); }