Skip to content

Commit b3f5894

Browse files
Invoke Short.parseShort method
1 parent 0c4d7e9 commit b3f5894

File tree

1 file changed

+21
-4
lines changed

1 file changed

+21
-4
lines changed
Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,41 @@
11
package org.enso.os.environment.jni;
22

3+
import static org.junit.Assert.assertEquals;
34
import static org.junit.Assert.assertTrue;
45

6+
import org.graalvm.nativeimage.StackValue;
57
import org.graalvm.nativeimage.c.type.CTypeConversion;
68
import org.junit.Test;
79

810
public class LoadClassTest {
911
private static final String PATH = System.getProperty("java.home");
1012

1113
@Test
12-
public void loadJavaLangShortClass() {
14+
public void invokeParseShortMethod() {
1315
var env = JVM.create(PATH).env();
1416
assertTrue("JNI created", env.isNonNull());
1517

1618
var findClassFn = env.getFunctions().getFindClass();
19+
var getStaticMethodIDFn = env.getFunctions().getGetStaticMethodID();
20+
var newStringFn = env.getFunctions().getNewStringUTF();
21+
var callStaticMethodFn = env.getFunctions().getCallStaticIntMethodA();
1722

18-
try (var nameHolder = CTypeConversion.toCString("java/lang/Short")) {
19-
var clazz = findClassFn.call(env, nameHolder.get());
23+
try (var shortName = CTypeConversion.toCString("java/lang/Short");
24+
var valueOfName = CTypeConversion.toCString("parseShort");
25+
var valueOfSig = CTypeConversion.toCString("(Ljava/lang/String;)S");
26+
var toParse = CTypeConversion.toCString("345"); ) {
27+
var Short = findClassFn.call(env, shortName.get());
2028

21-
assertTrue("Short class is loaded", clazz.isNonNull());
29+
assertTrue("Short class is loaded", Short.isNonNull());
30+
31+
var valueOf = getStaticMethodIDFn.call(env, Short, valueOfName.get(), valueOfSig.get());
32+
assertTrue("valueOf method found", valueOf.isNonNull());
33+
34+
var args = StackValue.get(JNI.JValue.class);
35+
var str = newStringFn.call(env, toParse.get());
36+
args.setJObject(str);
37+
var res = callStaticMethodFn.call(env, Short, valueOf, args);
38+
assertEquals(345, res);
2239
}
2340
}
2441
}

0 commit comments

Comments
 (0)