rust-jni 0.1.0

A package for easy Java interop
Documentation
extern crate rust_jni;

mod object;

/// An integration test for the `java::lang::Class` type.
#[cfg(test)]
mod class {
    use object;
    use rust_jni::*;

    #[test]
    fn test() {
        let init_arguments = InitArguments::get_default(JniVersion::V8).unwrap();
        let vm = JavaVM::create(&init_arguments).unwrap();
        let env = vm.attach(&AttachArguments::new(&init_arguments)).unwrap();
        let token = env.token();

        let class = java::lang::Class::find(&env, "java/lang/RuntimeException", &token).unwrap();

        object::test_object(
            &class,
            "java/lang/Class",
            "class java.lang.RuntimeException",
            &env,
            &token,
        );

        assert!(
            class
                .class(&token)
                .is_same_as(&java::lang::Class::get_class(&env, &token).unwrap(), &token)
        );

        let parent_class = java::lang::Class::find(&env, "java/lang/Throwable", &token).unwrap();
        assert!(class.is_subtype_of(&parent_class, &token));
        assert!(!parent_class.is_subtype_of(&class, &token));
        assert!(
            class
                .parent(&token)
                .unwrap()
                .parent(&token)
                .unwrap()
                .is_same_as(&parent_class, &token)
        );

        let exception = java::lang::Class::find(&env, "java/lang/Invalid", &token).unwrap_err();
        assert_eq!(
            exception.get_message(&token).unwrap().as_string(&token),
            "java/lang/Invalid"
        );
    }
}