#[test]
fn language_dispatch_covers_all_code_language_variants() {
use pmcp_code_mode::CodeLanguage;
let derive_accepted = ["graphql", "javascript", "js", "sql", "mcp"];
for lang in &derive_accepted {
assert!(
CodeLanguage::from_attr(lang).is_some(),
"derive macro accepts \"{lang}\" but CodeLanguage::from_attr does not"
);
}
let all_variants = [
CodeLanguage::GraphQL,
CodeLanguage::JavaScript,
CodeLanguage::Sql,
CodeLanguage::Mcp,
];
for variant in &all_variants {
assert!(
derive_accepted.contains(&variant.as_str()),
"CodeLanguage::{variant:?} has as_str()=\"{}\" but derive macro does not list it",
variant.as_str()
);
}
}
#[test]
fn code_mode_compile_tests() {
let t = trybuild::TestCases::new();
t.compile_fail("tests/ui/missing_config.rs");
t.compile_fail("tests/ui/missing_policy_evaluator.rs");
t.compile_fail("tests/ui/missing_token_secret.rs");
t.compile_fail("tests/ui/missing_code_executor.rs");
t.compile_fail("tests/ui/non_send_field.rs");
t.compile_fail("tests/ui/wrong_token_type.rs");
t.pass("tests/ui/valid_code_mode.rs");
t.pass("tests/ui/valid_code_mode_context.rs");
t.pass("tests/ui/valid_code_mode_language.rs");
}