diff --git a/src/test/java/toolbox/Main.java b/src/test/java/toolbox/Main.java index c30dcbf..f74f56b 100644 --- a/src/test/java/toolbox/Main.java +++ b/src/test/java/toolbox/Main.java @@ -2,6 +2,7 @@ package toolbox; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertThrows; @@ -14,6 +15,7 @@ public class Main { static native String concat(String a, String b); static native String[] to_vec(String a, String b, String c); static native boolean maybe(String optional); + static native String optional(boolean present); static native String raw(); @Test @@ -29,9 +31,9 @@ public class Main { @Test public void checksForNull() { // TODO maybe these should throw NullPtrException - assertThrows(RuntimeException.class, () -> Main.concat("a", null)); - assertThrows(RuntimeException.class, () -> Main.concat(null, "a")); - assertThrows(RuntimeException.class, () -> Main.concat(null, null)); + assertThrows(NullPointerException.class, () -> Main.concat("a", null)); + assertThrows(NullPointerException.class, () -> Main.concat(null, "a")); + assertThrows(NullPointerException.class, () -> Main.concat(null, null)); } @Test @@ -53,5 +55,11 @@ public class Main { public void passEnv() { assertEquals(Main.raw(), "hello world!"); } + + @Test + public void nullableReturn() { + assertNull(Main.optional(false)); + assertEquals(Main.optional(true), "hello world!"); + } } diff --git a/src/test/test.rs b/src/test/test.rs index ab10f52..4780982 100644 --- a/src/test/test.rs +++ b/src/test/test.rs @@ -20,6 +20,15 @@ fn maybe(idk: Option) -> bool { idk.is_some() } +#[jni(package = "toolbox", class = "Main")] +fn optional(present: bool) -> Option { + if present { + Some("hello world!".into()) + } else { + None + } +} + #[jni(package = "toolbox", class = "Main")] fn raw<'local>(env: &mut jni::JNIEnv<'local>) -> Result, jni::errors::Error> { env.new_string("hello world!")