@@ -6,6 +6,8 @@ package jnigi
6
6
7
7
import (
8
8
"github.com/stretchr/testify/assert"
9
+ "os"
10
+ "path/filepath"
9
11
"runtime"
10
12
"strings"
11
13
"testing"
@@ -28,6 +30,7 @@ func TestAll(t *testing.T) {
28
30
PTestPushPopLocalFrame (t )
29
31
PTestHandleException (t )
30
32
PTestCast (t )
33
+ PTestRegisterNative (t )
31
34
PTestDestroy (t )
32
35
}
33
36
@@ -39,7 +42,8 @@ func PTestInit(t *testing.T) {
39
42
t .Fatal (err )
40
43
}
41
44
runtime .LockOSThread ()
42
- jvm2 , e2 , err := CreateJVM (NewJVMInitArgs (false , true , DEFAULT_VERSION , []string {"-Xcheck:jni" }))
45
+ cwd , _ := os .Getwd ()
46
+ jvm2 , e2 , err := CreateJVM (NewJVMInitArgs (false , true , DEFAULT_VERSION , []string {"-Xcheck:jni" , "-Djava.class.path=" + filepath .Join (cwd , "java/test/out" )}))
43
47
if err != nil {
44
48
t .Fatal (err )
45
49
}
@@ -514,6 +518,28 @@ func PTestCast(t *testing.T) {
514
518
}
515
519
}
516
520
521
+ func PTestRegisterNative (t * testing.T ) {
522
+ if err := env .RegisterNative ("local/JnigiTesting" , "Greet" , ObjectType ("java/lang/String" ), []interface {}{ObjectType ("java/lang/String" )}, c_go_callback_Greet ); err != nil {
523
+ t .Fatal (err )
524
+ }
525
+ objRef , err := env .NewObject ("local/JnigiTesting" )
526
+ if err != nil {
527
+ t .Fatal (err )
528
+ }
529
+ nameRef , err := env .NewObject ("java/lang/String" , []byte ("World" ))
530
+ if err != nil {
531
+ t .Fatal (err )
532
+ }
533
+ strRef := NewObjectRef ("java/lang/String" )
534
+ if err := objRef .CallMethod (env , "Greet" , strRef , nameRef ); err != nil {
535
+ t .Fatal (err )
536
+ }
537
+ goStr := toGoStr (t , strRef )
538
+ if ! assert .Equal (t , "Hello World!" , goStr ) {
539
+ t .Fail ()
540
+ }
541
+ }
542
+
517
543
func toGoStr (t * testing.T , o * ObjectRef ) string {
518
544
var goBytes []byte
519
545
if err := o .CallMethod (env , "getBytes" , & goBytes ); err != nil {
0 commit comments