use super::*;
#[test]
fn most_keys_are_the_flag_with_dashes() {
assert_eq!(
flag_for("gpu_memory_utilization").as_deref(),
Some("gpu-memory-utilization")
);
assert_eq!(flag_for("port").as_deref(), Some("port"));
}
#[test]
fn the_three_renames_are_applied() {
assert_eq!(flag_for("max_model_len").as_deref(), Some("max-seq-len"));
assert_eq!(flag_for("tensor_parallel").as_deref(), Some("tp-size"));
assert_eq!(flag_for("host").as_deref(), Some("bind"));
}
#[test]
fn a_presence_only_boolean_is_a_bare_flag_and_a_false_one_is_omitted() {
assert_eq!(
argv_for("speculative", "true"),
Some(vec!["--speculative".to_string()])
);
assert_eq!(argv_for("speculative", "false"), None);
assert_eq!(argv_for("enable_prefix_caching", "false"), None);
assert_eq!(
argv_for("video_allow_ffmpeg", "true"),
Some(vec!["--video-allow-ffmpeg".to_string()])
);
}
#[test]
fn an_enum_keeps_its_value_and_a_boolean_never_carries_one() {
assert_eq!(
argv_for("tool_grammar", "on"),
Some(vec!["--tool-grammar".into(), "on".into()])
);
assert_eq!(argv_for("gdn_fused_norm", "false"), None);
assert_eq!(
argv_for("no_ssm_tail_midchunk", "true"),
Some(vec!["--no-ssm-tail-midchunk".into()])
);
}
#[test]
fn a_recipe_default_may_only_turn_a_boolean_on() {
assert_eq!(check_recipe_default("speculative", "true"), Ok(()));
let err = check_recipe_default("speculative", "false").unwrap_err();
assert!(err.contains("restates the default"), "{err}");
assert!(err.contains("--speculative"), "names the flag: {err}");
let err = check_recipe_default("no_ssm_tail_midchunk", "yes").unwrap_err();
assert!(err.contains("takes no value"), "{err}");
assert_eq!(check_recipe_default("tool_grammar", "auto"), Ok(()));
assert_eq!(check_recipe_default("scheduler", "fifo"), Ok(()));
assert_eq!(check_recipe_default("max_model_len", "false"), Ok(()));
}
#[test]
fn values_pass_through_verbatim() {
assert_eq!(
argv_for("max_model_len", "65536"),
Some(vec!["--max-seq-len".into(), "65536".into()])
);
}