use super::super::{CONTEXT_REMEDY, provider_rows};
use super::LIVE_LISTING;
#[test]
fn the_tool_capability_is_read_off_the_protocol_column() {
let rows = provider_rows(LIVE_LISTING);
assert_eq!(rows[2].protocol, "claude_code");
let why = rows[2].tools_blocked().expect("claude_code declines tools");
assert!(why.starts_with("claude_code declares no tools"), "{why}");
assert!(why.contains("`clients` tool"), "{why}");
assert!(why.contains("can serve no role"), "{why}");
for i in [0, 1, 3, 4] {
assert_eq!(rows[i].tools_blocked(), None, "row {i} carries tools");
}
}
#[test]
fn an_unspellable_protocol_answers_nothing_about_tools() {
let rows = provider_rows(
r#"{"providers":[{"name":"x","protocol":"mystery_wire","auth":"none"},{"name":"y","auth":"none"}]}"#,
);
assert_eq!(rows[0].tools_blocked(), None);
assert_eq!(
rows[1].tools_blocked(),
None,
"an absent column asks nothing"
);
}
#[test]
fn the_context_caveat_is_read_off_the_same_column() {
let rows = provider_rows(LIVE_LISTING);
assert_eq!(rows[1].protocol, "ollama_chat");
let caveat = rows[1]
.context_caveat()
.expect("ollama_chat declares no context size");
assert!(
caveat.starts_with("ollama_chat declares no context size"),
"{caveat}"
);
assert!(
caveat.contains("the server's own default governs"),
"{caveat}"
);
assert!(
caveat.contains("tool payload alone can exhaust it"),
"{caveat}"
);
for i in [0, 2, 3, 4] {
assert_eq!(
rows[i].context_caveat(),
None,
"row {i} carries its own context size"
);
}
}
#[test]
fn the_context_remedy_carries_both_halves() {
let remedy = CONTEXT_REMEDY;
assert!(
remedy.contains("unsupported_body_keys = [\"max_tokens\"]"),
"{remedy}"
);
assert!(remedy.contains("num_ctx = <your context>"), "{remedy}");
assert!(
remedy.contains("num_predict = <your output cap>"),
"{remedy}"
);
assert!(remedy.contains("dropped whole and silently"), "{remedy}");
}
#[test]
fn an_unspellable_protocol_answers_nothing_about_context() {
let rows =
provider_rows(r#"{"providers":[{"name":"x","protocol":"mystery_wire","auth":"none"}]}"#);
assert_eq!(rows[0].context_caveat(), None);
}