use std::collections::HashSet;
use super::*;
#[test]
fn both_gte_new_entries_hold_the_published_shape() {
let gte_new: Vec<_> = all()
.into_iter()
.filter(|d| d.family == Family::GteNew)
.collect();
assert_eq!(
gte_new.len(),
2,
"gte-multilingual-base and gte-base-en-v1.5, the family's only two catalog entries"
);
for d in >e_new {
assert_eq!(d.dim, 768, "{}", d.id);
assert_eq!(d.default_max_length, 8192, "{}", d.id);
assert_eq!(d.pooling, Pooling::Cls, "{}", d.id);
assert!(
d.query_template.is_none() && d.passage_template.is_none(),
"{}",
d.id
);
assert!(d.default_instruction.is_none(), "{}", d.id);
assert!(d.dense_dirs.is_empty(), "{}", d.id);
assert!(!d.layer_norm_after_pooling, "{}", d.id);
assert_eq!(d.default_dtype, DType::F32, "{}", d.id);
assert_eq!(d.license, "Apache-2.0", "{}", d.id);
assert_eq!(d.phase, 2, "{}", d.id);
assert!(!d.gated, "{}", d.id);
assert_eq!(
weights_format(&d.id),
WeightsFormat::Safetensors,
"{}",
d.id
);
for dtype in [DType::F32, DType::F16] {
assert!(!dtype_needs_accelerator(&d.id, dtype), "{} {dtype:?}", d.id);
}
assert!(dtype_needs_accelerator(&d.id, DType::BF16), "{}", d.id);
}
}
#[test]
fn the_two_entries_differ_only_in_mrl_and_size() {
let m = lookup("Alibaba-NLP/gte-multilingual-base").expect("registered");
assert!(m.mrl, "{}", m.id);
assert_eq!(m.size_gb, 0.61, "{}", m.id);
let e = lookup("Alibaba-NLP/gte-base-en-v1.5").expect("registered");
assert!(!e.mrl, "{}", e.id);
assert_eq!(e.size_gb, 0.55, "{}", e.id);
}
#[test]
fn mrl_is_the_previous_five_plus_the_multilingual_checkpoint() {
let expected: HashSet<String> = [
"Qwen/Qwen3-Embedding-0.6B",
"Qwen/Qwen3-Embedding-4B",
"Qwen/Qwen3-Embedding-8B",
"google/embeddinggemma-300m",
"nomic-ai/nomic-embed-text-v1.5",
"Alibaba-NLP/gte-multilingual-base",
]
.into_iter()
.map(str::to_string)
.collect();
let actual: HashSet<String> = all().into_iter().filter(|d| d.mrl).map(|d| d.id).collect();
assert_eq!(actual, expected);
}