alsaseq 0.8.0

API binding for alsaseq library
Documentation
// SPDX-License-Identifier: MIT
use super::*;

impl EventDataConnect {
    /// Get the destination of connection event.
    ///
    /// # Returns
    ///
    ///
    /// ## `dst`
    /// The destination of connection event.
    #[doc(alias = "alsaseq_event_data_connect_get_dst")]
    #[doc(alias = "get_dst")]
    pub fn dst(&mut self) -> Addr {
        unsafe {
            let mut dst = std::ptr::null_mut() as *const ffi::ALSASeqAddr;
            ffi::alsaseq_event_data_connect_get_dst(self.to_glib_none_mut().0, &mut dst);
            from_glib_none(dst)
        }
    }

    /// Get the source of connection event.
    ///
    /// # Returns
    ///
    ///
    /// ## `src`
    /// The source of connection event.
    #[doc(alias = "alsaseq_event_data_connect_get_src")]
    #[doc(alias = "get_src")]
    pub fn src(&mut self) -> Addr {
        unsafe {
            let mut src = std::ptr::null_mut() as *const ffi::ALSASeqAddr;
            ffi::alsaseq_event_data_connect_get_src(self.to_glib_none_mut().0, &mut src);
            from_glib_none(src)
        }
    }
}

#[cfg(test)]
mod test {
    use crate::*;

    #[test]
    fn test_manual_bindings() {
        let dst_expected = Addr::new(192, 168);
        let src_expected = Addr::new(169, 254);

        let mut ev = Event::new(EventType::PortSubscribed);
        let mut data = ev.connect_data().unwrap();
        let dst_orig = data.dst();
        let src_orig = data.src();

        let mut conn = data.clone();
        conn.set_dst(&dst_expected);
        conn.set_src(&src_expected);

        ev.set_connect_data(&conn).unwrap();
        let mut data = ev.connect_data().unwrap();
        let dst_target = data.dst();
        let src_target = data.src();

        assert_ne!(dst_expected, dst_orig);
        assert_ne!(src_expected, src_orig);

        assert_eq!(dst_expected, dst_target);
        assert_eq!(src_expected, src_target);
    }
}