use metrale_config::ModelConfig;
use super::load_eos_tokens;
const GLM_EOS: [u32; 3] = [154820, 154827, 154829];
fn cfg(primary: u32, all: &[u32]) -> ModelConfig {
let mut c = ModelConfig::qwen3_next_80b_nvfp4();
c.eos_token_id = primary;
c.eos_token_ids = all.to_vec();
c
}
#[test]
fn without_generation_config_the_full_config_set_is_used() {
let dir = tempfile::tempdir().unwrap();
let got = load_eos_tokens(dir.path(), &cfg(GLM_EOS[0], &GLM_EOS));
assert_eq!(got, GLM_EOS.to_vec());
}
#[test]
fn generation_config_array_still_wins() {
let dir = tempfile::tempdir().unwrap();
std::fs::write(
dir.path().join("generation_config.json"),
r#"{"eos_token_id": [154820, 154827, 154829]}"#,
)
.unwrap();
let got = load_eos_tokens(dir.path(), &cfg(GLM_EOS[0], &GLM_EOS));
assert_eq!(got, GLM_EOS.to_vec());
}
#[test]
fn scalar_eos_model_is_unchanged() {
let dir = tempfile::tempdir().unwrap();
let got = load_eos_tokens(dir.path(), &cfg(151645, &[]));
assert_eq!(got, vec![151645]);
}
#[test]
fn unreadable_generation_config_falls_back_to_the_full_set() {
let dir = tempfile::tempdir().unwrap();
std::fs::write(dir.path().join("generation_config.json"), "not json").unwrap();
let got = load_eos_tokens(dir.path(), &cfg(GLM_EOS[0], &GLM_EOS));
assert_eq!(got, GLM_EOS.to_vec());
}