// Take a look at the license at the top of the repository in the LICENSE file.

use glib::translate::*;

#[doc(alias = "gst_validate_init")]
pub fn init() {
    unsafe {
        ffi::gst_validate_init();
        crate::INITIALIZED.store(true, std::sync::atomic::Ordering::SeqCst);
    }
}

#[doc(alias = "gst_validate_init_debug")]
pub fn init_debug() {
    unsafe {
        ffi::gst_validate_init_debug();
    }
}

#[doc(alias = "gst_validate_setup_test_file")]
pub fn setup_test_file(test_file: &str, use_fakesinks: bool) -> gst::Structure {
    skip_assert_initialized!();
    unsafe {
        from_glib_full(ffi::gst_validate_setup_test_file(
            test_file.to_glib_none().0,
            use_fakesinks as i32,
        ))
    }
}

#[doc(alias = "gst_validate_print_action_types")]
pub fn print_action_types(action_types: Vec<&str>) {
    assert_initialized_main_thread!();
    unsafe {
        ffi::gst_validate_print_action_types(
            action_types.to_glib_none().0,
            action_types.len() as i32,
        );
    }
}

#[cfg(test)]
mod tests {
    #[test]
    fn test_init() {
        gst::init().unwrap();
        crate::init();
    }
}
