47
java-native/src/test/java/com/baeldung/jna/StdCUnitTest.java
Normal file
47
java-native/src/test/java/com/baeldung/jna/StdCUnitTest.java
Normal file
@@ -0,0 +1,47 @@
|
||||
package com.baeldung.jna;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
import org.junit.BeforeClass;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import com.sun.jna.Native;
|
||||
import com.sun.jna.Platform;
|
||||
import com.sun.jna.Pointer;
|
||||
|
||||
class StdCUnitTest {
|
||||
|
||||
@BeforeClass
|
||||
public static void setupProtectedMode() {
|
||||
Native.setProtected(true);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void whenMalloc_thenSuccess() {
|
||||
StdC lib = StdC.INSTANCE;
|
||||
Pointer p = lib.malloc(1024);
|
||||
p.setMemory(0l, 1024l, (byte) 0);
|
||||
lib.free(p);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void whenAccessViolation_thenShouldThrowError() {
|
||||
// Running this test on Linux requires additional setup using libjsig.so
|
||||
// Details here: http://java-native-access.github.io/jna/5.6.0/javadoc/overview-summary.html#crash-protection
|
||||
// IMPORTANT NOTICE: Code for illustration purposes only. DON'T DO THIS IN YOUR OWN CODE
|
||||
if ( Platform.isWindows()) {
|
||||
Error e = null;
|
||||
Pointer p = new Pointer(0l);
|
||||
|
||||
try {
|
||||
p.setMemory(0, 100*1024, (byte) 0);
|
||||
}
|
||||
catch(Error err) {
|
||||
e = err;
|
||||
}
|
||||
|
||||
assertNotNull(e, "Should throw Error");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user