use llama_cpp_4::model::params::{LlamaLoadMode, LlamaModelParams};
#[test]
fn model_params_default_load_mode_is_auto() {
let params = LlamaModelParams::default();
assert_eq!(params.load_mode(), LlamaLoadMode::Auto);
}
#[test]
fn model_params_default_reports_mmap_without_mlock() {
let params = LlamaModelParams::default();
assert!(params.use_mmap(), "Auto should report as mmap-capable");
assert!(!params.use_mlock(), "Auto should not imply mlock");
}
#[test]
fn model_params_load_mode_roundtrips() {
for mode in [
LlamaLoadMode::Auto,
LlamaLoadMode::None,
LlamaLoadMode::Mmap,
LlamaLoadMode::Mlock,
LlamaLoadMode::MmapMlock,
LlamaLoadMode::DirectIo,
] {
let params = LlamaModelParams::default().with_load_mode(mode);
assert_eq!(params.load_mode(), mode, "round-trip failed for {mode:?}");
}
}
#[test]
fn model_params_auto_survives_negative_discriminant() {
let params = LlamaModelParams::default().with_load_mode(LlamaLoadMode::Auto);
assert_eq!(params.load_mode(), LlamaLoadMode::Auto);
assert_ne!(params.load_mode(), LlamaLoadMode::None);
}
#[test]
fn model_params_mmap_and_mlock_reporting() {
let cases = [
(LlamaLoadMode::None, false, false),
(LlamaLoadMode::Mmap, true, false),
(LlamaLoadMode::Mlock, false, true),
(LlamaLoadMode::MmapMlock, true, true),
(LlamaLoadMode::DirectIo, false, false),
];
for (mode, want_mmap, want_mlock) in cases {
let params = LlamaModelParams::default().with_load_mode(mode);
assert_eq!(params.use_mmap(), want_mmap, "use_mmap for {mode:?}");
assert_eq!(params.use_mlock(), want_mlock, "use_mlock for {mode:?}");
}
}
#[test]
fn model_params_load_mtp_roundtrips() {
assert!(!LlamaModelParams::default().load_mtp());
assert!(LlamaModelParams::default().with_load_mtp(true).load_mtp());
}