aboutsummaryrefslogtreecommitdiff
path: root/tests/threads_explicit_detach.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/threads_explicit_detach.rs')
-rw-r--r--tests/threads_explicit_detach.rs17
1 files changed, 17 insertions, 0 deletions
diff --git a/tests/threads_explicit_detach.rs b/tests/threads_explicit_detach.rs
new file mode 100644
index 0000000..3010ca3
--- /dev/null
+++ b/tests/threads_explicit_detach.rs
@@ -0,0 +1,17 @@
+#![cfg(feature = "invocation")]
+
+mod util;
+use util::{attach_current_thread, call_java_abs, detach_current_thread, jvm};
+
+#[test]
+pub fn explicit_detach_detaches_thread_attached_locally() {
+ assert_eq!(jvm().threads_attached(), 0);
+ let guard = attach_current_thread();
+ let val = call_java_abs(&guard, -1);
+ assert_eq!(val, 1);
+ assert_eq!(jvm().threads_attached(), 1);
+
+ detach_current_thread();
+ assert_eq!(jvm().threads_attached(), 0);
+ assert!(jvm().get_env().is_err());
+}