예제 #1
0
  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));
  }
예제 #2
0
  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)));
  }
예제 #3
0
  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)));
  }