103 lines
2.8 KiB
Rust
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());
|
|
}
|