From 3d3bc8b6d5bfd9a44f9851018d997e526f25e0d2 Mon Sep 17 00:00:00 2001 From: alemi Date: Tue, 24 Sep 2024 02:29:31 +0200 Subject: [PATCH] test: vecs, options, nulls, also build with gradle --- .github/workflows/test.yml | 1 - build.gradle | 7 +++++++ src/test/java/toolbox/Main.java | 26 ++++++++++++++++++++++++++ src/test/test.rs | 10 ++++++++++ 4 files changed, 43 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 99c4c96..9163d21 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -27,5 +27,4 @@ jobs: - run: cargo build --verbose - run: cargo test --verbose - uses: gradle/actions/setup-gradle@v4 - - run: cargo build -p jni-toolbox-test - run: gradle test diff --git a/build.gradle b/build.gradle index b7766ff..5cfd2ca 100644 --- a/build.gradle +++ b/build.gradle @@ -11,7 +11,14 @@ repositories { mavenCentral() } +task cargoBuild(type: Exec) { + workingDir '.' + commandLine 'cargo', 'build', '-p', 'jni-toolbox-test' +} + test { + dependsOn cargoBuild + outputs.upToDateWhen { false } useJUnitPlatform() systemProperty 'java.library.path','target/debug' } diff --git a/src/test/java/toolbox/Main.java b/src/test/java/toolbox/Main.java index 01072e9..68365a7 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.assertThrows; public class Main { @@ -11,6 +12,8 @@ public class Main { static native int sum(int a, int b); 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); @Test public void argumentsByValue() { @@ -21,5 +24,28 @@ public class Main { public void argumentsByReference() { assertEquals(Main.concat("hello", "world"), "hello -- world"); } + + @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)); + } + + @Test + public void returnVec() { + String[] actual = new String[]{"a", "b", "c"}; + String[] from_rust = Main.to_vec("a", "b", "c"); + for (int i = 0; i < 3; i++) { + assertEquals(actual[i], from_rust[i]); + } + } + + @Test + public void optional() { + assertEquals(Main.maybe(null), false); + assertEquals(Main.maybe("aa"), true); + } } diff --git a/src/test/test.rs b/src/test/test.rs index d018fb9..4511549 100644 --- a/src/test/test.rs +++ b/src/test/test.rs @@ -9,3 +9,13 @@ fn sum(a: i32, b: i32) -> i32 { fn concat(a: String, b: String) -> String { format!("{a} -- {b}") } + +#[jni(package = "toolbox", class = "Main")] +fn to_vec(a: String, b: String, c: String) -> Vec { + vec![a, b, c] +} + +#[jni(package = "toolbox", class = "Main")] +fn maybe(idk: Option) -> bool { + idk.is_some() +}