use secure_output::OutputEncoder;
use secure_output::XmlEncoder;
use std::borrow::Cow;
#[test]
fn xml_angle_brackets_encoded() {
let enc = XmlEncoder;
let result = enc.encode("<tag>");
assert_eq!(result, "<tag>");
}
#[test]
fn xml_ampersand_encoded() {
let enc = XmlEncoder;
let result = enc.encode("a&b");
assert_eq!(result, "a&b");
}
#[test]
fn xml_double_quotes_encoded() {
let enc = XmlEncoder;
let result = enc.encode("\"value\"");
assert_eq!(result, ""value"");
}
#[test]
fn xml_single_quotes_encoded() {
let enc = XmlEncoder;
let result = enc.encode("it's");
assert_eq!(result, "it's");
}
#[test]
fn xml_safe_string_zero_copy() {
let enc = XmlEncoder;
let result = enc.encode("hello world");
assert!(
matches!(result, Cow::Borrowed(_)),
"expected Cow::Borrowed for safe input"
);
}
#[test]
fn xml_null_bytes_stripped() {
let enc = XmlEncoder;
let result = enc.encode("a\0b");
assert!(!result.contains('\0'));
}
#[test]
fn xml_combined_dangerous_chars() {
let enc = XmlEncoder;
let result = enc.encode("<script>alert('xss')</script>");
assert_eq!(
result,
"<script>alert('xss')</script>"
);
}