aboutsummaryrefslogtreecommitdiff
path: root/tests/threads_attach_guard.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/threads_attach_guard.rs')
-rw-r--r--tests/threads_attach_guard.rs18
1 files changed, 18 insertions, 0 deletions
diff --git a/tests/threads_attach_guard.rs b/tests/threads_attach_guard.rs
new file mode 100644
index 0000000..d43f807
--- /dev/null
+++ b/tests/threads_attach_guard.rs
@@ -0,0 +1,18 @@
+#![cfg(feature = "invocation")]
+
+mod util;
+use util::{attach_current_thread, call_java_abs, jvm};
+
+#[test]
+fn thread_attach_guard_detaches_on_drop() {
+ assert_eq!(jvm().threads_attached(), 0);
+ {
+ let guard = attach_current_thread();
+ assert_eq!(jvm().threads_attached(), 1);
+ let val = call_java_abs(&guard, -1);
+ assert_eq!(val, 1);
+ }
+ assert_eq!(jvm().threads_attached(), 0);
+ // Verify that this thread is really detached.
+ assert!(jvm().get_env().is_err());
+}