pub fn set_max_operations(n: i32) {
unsafe { vips_sys::vips_cache_set_max(n) }
}
pub fn set_max_mem_bytes(n: usize) {
unsafe { vips_sys::vips_cache_set_max_mem(n) }
}
pub fn set_max_files(n: i32) {
unsafe { vips_sys::vips_cache_set_max_files(n) }
}
pub fn size_operations() -> i32 {
unsafe { vips_sys::vips_cache_get_size() }
}
pub fn max_operations() -> i32 {
unsafe { vips_sys::vips_cache_get_max() }
}
pub fn max_mem_bytes() -> usize {
unsafe { vips_sys::vips_cache_get_max_mem() }
}
pub fn max_files() -> i32 {
unsafe { vips_sys::vips_cache_get_max_files() }
}
pub fn tracked_mem_bytes() -> usize {
unsafe { vips_sys::vips_tracked_get_mem() }
}
pub fn tracked_mem_highwater_bytes() -> usize {
unsafe { vips_sys::vips_tracked_get_mem_highwater() }
}
pub fn set_trace(trace: bool) {
unsafe { vips_sys::vips_cache_set_trace(if trace { 1 } else { 0 }) }
}
#[cfg(test)]
mod tests {
use super::*;
use crate::init;
use std::sync::Mutex;
fn vips_test_lock() -> std::sync::MutexGuard<'static, ()> {
static LOCK: Mutex<()> = Mutex::new(());
LOCK.lock().unwrap_or_else(|e| e.into_inner())
}
#[test]
fn version_works() {
let _guard = vips_test_lock();
let v = crate::version::version();
assert!(v.0 >= 8);
assert!(crate::version::version_string().contains("8."));
}
#[test]
fn init_is_idempotent() {
let _guard = vips_test_lock();
init::init(Some("test-app")).unwrap();
init::init(Some("test-app")).unwrap();
assert!(init::is_initialized());
}
#[test]
fn cache_controls() {
let _guard = vips_test_lock();
init::init(Some("cache-test")).unwrap();
set_max_operations(256);
set_max_mem_bytes(64 * 1024 * 1024);
set_max_files(64);
assert!(max_operations() >= 1);
assert!(max_mem_bytes() >= 1);
assert!(max_files() >= 1);
}
}