44 lines
1.5 KiB
Rust
44 lines
1.5 KiB
Rust
// This is a separate test program because it has to start a JVM with a specific option.
|
|
|
|
#![cfg(feature = "invocation")]
|
|
|
|
use jni::{objects::JString, InitArgsBuilder, JavaVM};
|
|
|
|
#[test]
|
|
fn invocation_character_encoding() {
|
|
let jvm_args = InitArgsBuilder::new()
|
|
.version(jni::JNIVersion::V8)
|
|
.option("-Xcheck:jni")
|
|
// U+00A0 NO-BREAK SPACE is the only non-ASCII character that's present in all parts of
|
|
// ISO 8859. This minimizes the chance of this test failing as a result of the character
|
|
// not being present in the platform default character encoding. This test will still fail
|
|
// on platforms where the default character encoding cannot represent a no-break space,
|
|
// such as GBK.
|
|
.option("-Dnbsp=\u{00a0}")
|
|
.build()
|
|
.unwrap_or_else(|e| panic!("{:#?}", e));
|
|
|
|
let jvm = JavaVM::new(jvm_args).unwrap_or_else(|e| panic!("{:#?}", e));
|
|
|
|
let mut env = jvm.attach_current_thread().unwrap();
|
|
|
|
let prop_name = env.new_string("nbsp").unwrap();
|
|
|
|
let prop_value: JString = env
|
|
.call_static_method(
|
|
"java/lang/System",
|
|
"getProperty",
|
|
"(Ljava/lang/String;)Ljava/lang/String;",
|
|
&[(&prop_name).into()],
|
|
)
|
|
.unwrap()
|
|
.l()
|
|
.unwrap()
|
|
.into();
|
|
|
|
let prop_value_str = env.get_string(&prop_value).unwrap();
|
|
let prop_value_str: &str = prop_value_str.to_str().unwrap();
|
|
|
|
assert_eq!("\u{00a0}", prop_value_str);
|
|
}
|