jvmti 0.5.0

JVM TI Rust binding
Documentation
extern crate jvmti;

#[cfg(test)]
mod tests {

    use jvmti::capabilities::Capabilities;

    #[test]
    fn agent_capabilities_are_generated_with_capabilities_off() {
        let caps = Capabilities::new();
        assert_eq!(false, caps.can_pop_frame);
        assert_eq!(false, caps.can_redefine_classes);
        assert_eq!(false, caps.can_get_bytecodes);
        assert_eq!(false, caps.can_generate_monitor_events);
        assert_eq!(false, caps.can_generate_exception_events);
    }

    #[test]
    fn agent_capabilities_are_reflected_in_native_capabilities() {
        let mut caps = Capabilities::new();
        caps.can_pop_frame = true;

        let native_caps = caps.to_native();
        let recaps = Capabilities::from_native(&native_caps);

        assert_eq!(true, recaps.can_pop_frame);
        assert_eq!(false, recaps.can_redefine_classes);
    }

    #[test]
    fn merge_combines_enabled_flags_from_both_capabilities() {
        let mut caps1 = Capabilities::new();
        let mut caps2 = Capabilities::new();

        caps1.can_pop_frame = true;
        caps2.can_generate_monitor_events = true;

        let caps_result = caps1.merge(&caps2);

        assert_eq!(true, caps_result.can_pop_frame);
        assert_eq!(true, caps_result.can_generate_monitor_events);
    }
}