From a1f9e8dfc1b81c4e688c0a0165d2833bc3b0a6aa Mon Sep 17 00:00:00 2001 From: alemi Date: Tue, 24 Sep 2024 01:58:10 +0200 Subject: [PATCH] test: add simple tests on java side --- .github/workflows/test.yml | 2 ++ .gitignore | 9 +++++++++ Cargo.lock | 13 +++++-------- Cargo.toml | 2 +- build.gradle | 17 +++++++++++++++++ src/test/Cargo.toml | 13 +++++++++++++ src/test/java/toolbox/Main.java | 25 +++++++++++++++++++++++++ src/test/test.rs | 11 +++++++++++ 8 files changed, 83 insertions(+), 9 deletions(-) create mode 100644 build.gradle create mode 100644 src/test/Cargo.toml create mode 100644 src/test/java/toolbox/Main.java create mode 100644 src/test/test.rs diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 0bdd2c9..578305d 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -28,3 +28,5 @@ jobs: toolchain: ${{ matrix.toolchain }} - run: cargo build --verbose - run: cargo test --verbose + - uses: gradle/actions/setup-gradle@v4 + - run: gradle test diff --git a/.gitignore b/.gitignore index ea8c4bf..09b57b8 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,10 @@ +# rust /target + +# gradle +/build +/bin +/.settings +/.gradle +.project +.classpath diff --git a/Cargo.lock b/Cargo.lock index d0da809..66660d7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -57,7 +57,7 @@ name = "jni-toolbox" version = "0.1.3" dependencies = [ "jni", - "jni-toolbox-macro 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "jni-toolbox-macro", "uuid", ] @@ -71,14 +71,11 @@ dependencies = [ ] [[package]] -name = "jni-toolbox-macro" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9970cad895bb316f70956593710d675d27a480ddbb8099f7e313042463a16d9b" +name = "jni-toolbox-test" +version = "0.1.0" dependencies = [ - "proc-macro2", - "quote", - "syn", + "jni", + "jni-toolbox", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 16da19c..8d51fdf 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,5 @@ [workspace] -members = ["macro"] +members = ["macro", "src/test"] [package] name = "jni-toolbox" diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..b7766ff --- /dev/null +++ b/build.gradle @@ -0,0 +1,17 @@ +plugins { + id 'java-library' +} + +dependencies { + testImplementation 'org.junit.jupiter:junit-jupiter-api:5.3.1' + testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.3.1' +} + +repositories { + mavenCentral() +} + +test { + useJUnitPlatform() + systemProperty 'java.library.path','target/debug' +} diff --git a/src/test/Cargo.toml b/src/test/Cargo.toml new file mode 100644 index 0000000..2ab0e59 --- /dev/null +++ b/src/test/Cargo.toml @@ -0,0 +1,13 @@ +[package] +name = "jni-toolbox-test" +description = "test binary for jni-toolbox" +version = "0.1.0" +edition = "2021" + +[lib] +crate-type = ["cdylib"] +path = "test.rs" + +[dependencies] +jni-toolbox = { path = "../.." } +jni = "0.21" diff --git a/src/test/java/toolbox/Main.java b/src/test/java/toolbox/Main.java new file mode 100644 index 0000000..01072e9 --- /dev/null +++ b/src/test/java/toolbox/Main.java @@ -0,0 +1,25 @@ +package toolbox; + +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; + + +public class Main { + static { + System.loadLibrary("jni_toolbox_test"); + } + + static native int sum(int a, int b); + static native String concat(String a, String b); + + @Test + public void argumentsByValue() { + assertEquals(Main.sum(42, 13), 42 + 13); + } + + @Test + public void argumentsByReference() { + assertEquals(Main.concat("hello", "world"), "hello -- world"); + } + +} diff --git a/src/test/test.rs b/src/test/test.rs new file mode 100644 index 0000000..d018fb9 --- /dev/null +++ b/src/test/test.rs @@ -0,0 +1,11 @@ +use jni_toolbox::jni; + +#[jni(package = "toolbox", class = "Main")] +fn sum(a: i32, b: i32) -> i32 { + a + b +} + +#[jni(package = "toolbox", class = "Main")] +fn concat(a: String, b: String) -> String { + format!("{a} -- {b}") +}