blob: 4008177c4a9dfcfd1642a066abda6a95b94dd8d2 [file] [log] [blame]
// 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);
}