Files
aha/tests/test_load_spec.rs
T
2026-03-26 13:40:24 +08:00

103 lines
2.8 KiB
Rust

use aha::models::{ArtifactKind, LoadSpec, ModelPaths, WhichModel};
#[test]
fn load_spec_auto_resolves_to_safetensors_default() {
let spec = LoadSpec {
model: WhichModel::Qwen3Embedding0_6B,
artifact: ArtifactKind::Auto,
paths: ModelPaths {
weight_dir: Some("D:/model_download/Qwen3-Embedding-0.6B".to_string()),
..Default::default()
},
};
assert_eq!(spec.resolved_artifact(), ArtifactKind::Safetensors);
assert!(spec.validate().is_ok());
}
#[test]
fn load_spec_all_minilm_accepts_onnx() {
let spec = LoadSpec {
model: WhichModel::AllMiniLML6V2,
artifact: ArtifactKind::Onnx,
paths: ModelPaths {
onnx_path: Some("D:/model_download/all-MiniLM-L6-v2/onnx".to_string()),
tokenizer_dir: Some("D:/model_download/all-MiniLM-L6-v2".to_string()),
..Default::default()
},
};
assert!(spec.validate().is_ok());
}
#[test]
fn load_spec_all_minilm_accepts_gguf() {
let spec = LoadSpec {
model: WhichModel::AllMiniLML6V2,
artifact: ArtifactKind::Gguf,
paths: ModelPaths {
gguf_path: Some(
"D:/model_download/All-MiniLM-L6-v2-Embedding-GGUF/all-MiniLM-L6-v2-ggml-model-f16.gguf"
.to_string(),
),
tokenizer_dir: Some("D:/model_download/all-MiniLM-L6-v2".to_string()),
..Default::default()
},
};
assert!(spec.validate().is_ok());
}
#[test]
fn load_spec_gguf_requires_gguf_path() {
let spec = LoadSpec {
model: WhichModel::Qwen3_5Gguf,
artifact: ArtifactKind::Gguf,
paths: ModelPaths::default(),
};
let err = spec.validate().unwrap_err().to_string();
assert!(err.contains("gguf_path is required"));
}
#[test]
fn load_spec_onnx_requires_onnx_path() {
let spec = LoadSpec {
model: WhichModel::Qwen3Embedding0_6B,
artifact: ArtifactKind::Onnx,
paths: ModelPaths::default(),
};
let err = spec.validate().unwrap_err().to_string();
assert!(err.contains("onnx_path is required"));
}
#[test]
fn load_spec_rejects_unsupported_artifact() {
let spec = LoadSpec {
model: WhichModel::MiniCPM4_0_5B,
artifact: ArtifactKind::Onnx,
paths: ModelPaths {
onnx_path: Some("D:/tmp/model.onnx".to_string()),
..Default::default()
},
};
let err = spec.validate().unwrap_err().to_string();
assert!(err.contains("does not support artifact"));
}
#[test]
fn load_spec_accepts_qwen3_5_onnx() {
let spec = LoadSpec {
model: WhichModel::Qwen3_5_0_8B,
artifact: ArtifactKind::Onnx,
paths: ModelPaths {
onnx_path: Some("D:/model_download/Qwen3.5-0.8B-ONNX".to_string()),
..Default::default()
},
};
assert!(spec.validate().is_ok());
}