init
This commit is contained in:
@@ -0,0 +1,8 @@
|
||||
#[test]
|
||||
fn bmi_works() {
|
||||
let bmi = medicallib_rust::calculate_bmi(70.0, 1.75).unwrap();
|
||||
assert!((bmi - 22.857145).abs() < 1e-5);
|
||||
let cls = medicallib_rust::classify_bmi(bmi);
|
||||
assert_eq!(cls, medicallib_rust::BMIClassification::Normal);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
#[cfg(feature = "ffi")]
|
||||
#[test]
|
||||
fn ffi_bmi_and_patient() {
|
||||
unsafe {
|
||||
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() {
|
||||
unsafe {
|
||||
// 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());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
#[test]
|
||||
fn default_patient_heart() {
|
||||
let mut p = medicallib_rust::Patient::new("int-01").unwrap().initialize_default();
|
||||
p.update(0.1);
|
||||
let s = p.patient_summary();
|
||||
assert!(s.contains("Heart"));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user