#![cfg(feature = "invocation")] use jni::{errors::Error, objects::JValue}; mod util; use util::{attach_current_thread, print_exception}; #[test] fn test_java_integers() { let mut env = attach_current_thread(); let array_length = 50; for value in -10..10 { env.with_local_frame(16, |env| -> Result<_, Error> { let integer_value = env.new_object("java/lang/Integer", "(I)V", &[JValue::Int(value)])?; let values_array = env.new_object_array(array_length, "java/lang/Integer", &integer_value)?; let result = env .call_static_method( "java/util/Arrays", "binarySearch", "([Ljava/lang/Object;Ljava/lang/Object;)I", &[ JValue::Object(&values_array), JValue::Object(&integer_value), ], )? .i()?; assert!(0 <= result && result < array_length); Ok(()) }) .unwrap_or_else(|e| { print_exception(&env); panic!("{:#?}", e); }) } }