1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
|
/* Copyright (c) 2024 Matthias Bläsing, All Rights Reserved
*
* The contents of this file is dual-licensed under 2
* alternative Open Source/Free licenses: LGPL 2.1 or later and
* Apache License 2.0. (starting with JNA version 4.0.0).
*
* You can freely decide which license you want to apply to
* the project.
*
* You may obtain a copy of the LGPL License at:
*
* http://www.gnu.org/licenses/licenses.html
*
* A copy is also included in the downloadable source code package
* containing JNA, in file "LGPL2.1".
*
* You may obtain a copy of the Apache License at:
*
* http://www.apache.org/licenses/
*
* A copy is also included in the downloadable source code package
* containing JNA, in file "AL2.0".
*/
package com.sun.jna;
import java.util.Collections;
import junit.framework.TestCase;
/**
* Check getNativeLibrary functions in Native
*/
public class NativeGetNativeLibraryTest extends TestCase {
private NativeLibrary libUTF8;
private TestLib libUTF8Interface;
@Override
protected void setUp() {
libUTF8 = NativeLibrary.getInstance("testlib",
Collections.singletonMap(Library.OPTION_STRING_ENCODING, "UTF-8"));
Native.register(TestLibUTF8.class, libUTF8);
libUTF8Interface = Native.load("testlib", TestLib.class,
Collections.singletonMap(Library.OPTION_STRING_ENCODING, "UTF-8"));
}
public void testGetNativeLibraryInterface() {
NativeLibrary nl = Native.getNativeLibrary(libUTF8Interface);
assertTrue(nl instanceof NativeLibrary);
}
public void testGetNativeLibraryDirect() {
NativeLibrary nl = Native.getNativeLibrary(TestLibUTF8.class);
assertTrue(nl instanceof NativeLibrary);
// This only makes sense for the direct case, as that directly wraps
// a supplied instance
assertEquals(libUTF8, nl);
}
public void testGetNativeLibraryOnUnboundShouldFail() {
try {
Native.getNativeLibrary(new TestLib() {
@Override
public String returnStringArgument(Pointer input) {
return "";
}
});
assertTrue("Exception not thrown", false);
} catch (IllegalArgumentException ex) {
// This should be reached
}
}
public void testGetNativeLibraryOnNullShouldFail() {
try {
Native.getNativeLibrary((Class) null);
assertTrue("Exception not thrown", false);
} catch (IllegalArgumentException ex) {
// This should be reached
}
}
public static void main(java.lang.String[] argList) {
junit.textui.TestRunner.run(NativeGetNativeLibraryTest.class);
}
private static class TestLibUTF8 implements Library {
native String returnStringArgument(Pointer input);
}
private interface TestLib extends Library {
public String returnStringArgument(Pointer input);
}
}
|