use proc_macro2::Span;
use syn::LitStr;
use super::{MAX_PLUGIN_NAME_LEN, validate_name};
fn lit(value: &str) -> LitStr {
LitStr::new(value, Span::call_site())
}
#[test]
fn empty_name_rejected() {
let err = validate_name(&lit("")).unwrap_err();
assert!(err.to_string().contains("non-empty"));
}
#[test]
fn nul_byte_in_name_rejected() {
let err = validate_name(&lit("rust\0engine")).unwrap_err();
assert!(err.to_string().contains("NUL byte"));
}
#[test]
fn overlong_name_rejected() {
let too_long = "a".repeat(MAX_PLUGIN_NAME_LEN + 1);
let err = validate_name(&lit(&too_long)).unwrap_err();
assert!(err.to_string().contains("at most"));
}
#[test]
fn name_at_limit_accepted() {
let at_limit = "a".repeat(MAX_PLUGIN_NAME_LEN);
validate_name(&lit(&at_limit)).unwrap();
}
#[test]
fn typical_name_accepted() {
validate_name(&lit("my_engine")).unwrap();
}