#![cfg(feature = "ffi")]
use librsigstopup::calculate_topup_ffi;
#[test]
fn test_ffi_success() {
let mut result: f64 = 0.0;
let status = unsafe {
calculate_topup_ffi(
10_000_000.0,
500_000.0,
5,
200_000.0,
150_000.0,
&mut result,
)
};
assert_eq!(status, 0);
assert_eq!(result as i64, 7_400_000);
}
#[test]
fn test_ffi_null_buffer() {
let status = unsafe {
calculate_topup_ffi(
10_000_000.0,
500_000.0,
5,
200_000.0,
150_000.0,
std::ptr::null_mut(),
)
};
assert_eq!(status, -1);
}
#[test]
fn test_ffi_invalid_input() {
let mut result: f64 = 0.0;
let status =
unsafe { calculate_topup_ffi(-1000.0, 500_000.0, 5, 200_000.0, 150_000.0, &mut result) };
assert_eq!(status, -2);
}