Files
medicallib_rust/tests/ffi.rs
T
zack3d 3fc010301d
Quick CI / quick-test (push) Failing after 1m12s
Multi-Platform CI / test-platforms (ubuntu-22.04) (push) Successful in 7m13s
Multi-Platform CI / test-platforms (windows-latest) (push) Successful in 7m8s
Multi-Platform CI / package (ubuntu-22.04) (push) Failing after 7m12s
Multi-Platform CI / package (windows-latest) (push) Failing after 7m13s
dez
2025-09-22 00:24:27 -07:00

32 lines
1.1 KiB
Rust

#[cfg(feature = "ffi")]
#[test]
fn ffi_bmi_and_patient() {
let mut out: f32 = 0.0;
let rc = medicallib_rust::ffi::medicallib_bmi(70.0, 1.75, &mut out as *mut f32);
assert_eq!(rc, medicallib_rust::ffi::ML_OK);
assert!(out > 10.0);
use std::ffi::CString;
let id = CString::new("ffi-test").unwrap();
let p = medicallib_rust::ffi::ml_patient_new(id.as_ptr());
assert!(!p.is_null());
let _ = medicallib_rust::ffi::ml_patient_update(p, 0.1);
let s = medicallib_rust::ffi::ml_patient_summary(p);
assert!(!s.is_null());
medicallib_rust::ffi::ml_string_free(s);
medicallib_rust::ffi::ml_patient_free(p);
}
#[cfg(feature = "ffi")]
#[test]
fn ffi_errors() {
// Null out pointer arguments should error gracefully
let rc = medicallib_rust::ffi::medicallib_bmi(70.0, 1.75, std::ptr::null_mut());
assert_eq!(rc, medicallib_rust::ffi::ML_EINVAL);
let p = medicallib_rust::ffi::ml_patient_new(std::ptr::null());
assert!(p.is_null());
// Summary with null patient returns null
let s = medicallib_rust::ffi::ml_patient_summary(std::ptr::null());
assert!(s.is_null());
}