use super::{QuoteType, TokenEvent, tokenize};
#[test]
fn test_entity_attr_single_quote_and_text() {
let cb = tokenize("<div data='&'>>&</div>");
assert!(cb.events.contains(&TokenEvent::AttribEntity('&', 11, 16)));
assert!(cb.events.contains(&TokenEvent::TextEntity('&', 19, 24)));
}
#[test]
fn test_entity_in_double_quoted_attr_lt() {
let cb = tokenize(r#"<div a="<">"#);
assert!(cb.events.contains(&TokenEvent::AttribEntity('<', 8, 12)));
assert!(
cb.events
.contains(&TokenEvent::AttribEnd(QuoteType::Double, 12))
);
}
#[test]
fn test_entity_in_double_quoted_attr_with_literal_suffix() {
let cb = tokenize(r#"<div a="&b">"#);
assert!(cb.events.contains(&TokenEvent::AttribEntity('&', 8, 13)));
assert!(cb.events.contains(&TokenEvent::AttribData(13, 14)));
assert!(
cb.events
.contains(&TokenEvent::AttribEnd(QuoteType::Double, 14))
);
}
#[test]
fn test_entity_in_single_quoted_attr() {
let cb = tokenize("<div a='&'>");
assert!(cb.events.contains(&TokenEvent::AttribEntity('&', 8, 13)));
assert!(
cb.events
.contains(&TokenEvent::AttribEnd(QuoteType::Single, 13))
);
}
#[test]
fn test_entity_text_named_amp() {
let cb = tokenize("a&b");
assert!(cb.events.contains(&TokenEvent::Text(0, 1)));
assert!(cb.events.contains(&TokenEvent::TextEntity('&', 1, 6)));
assert!(cb.events.contains(&TokenEvent::Text(6, 7)));
}
#[test]
fn test_entity_text_lt_semicolon() {
let cb = tokenize("1<2");
assert!(cb.events.contains(&TokenEvent::Text(0, 1)));
assert!(cb.events.contains(&TokenEvent::TextEntity('<', 1, 5)));
assert!(cb.events.contains(&TokenEvent::Text(5, 6)));
}
#[test]
fn test_entity_text_numeric_dec() {
let cb = tokenize("&x");
assert!(cb.events.contains(&TokenEvent::TextEntity('&', 0, 5)));
assert!(cb.events.contains(&TokenEvent::Text(5, 6)));
}
#[test]
fn test_entity_double_ampersand_then_amp() {
let cb = tokenize("&&");
assert!(cb.events.contains(&TokenEvent::Text(0, 1)));
assert!(cb.events.contains(&TokenEvent::TextEntity('&', 1, 6)));
}
#[test]
fn test_entity_in_unquoted_attr_value() {
let cb = tokenize("<div x=a&b>");
assert!(cb.events.contains(&TokenEvent::AttribName(5, 6)));
assert!(cb.events.contains(&TokenEvent::AttribData(7, 8)));
assert!(cb.events.contains(&TokenEvent::AttribEntity('&', 8, 13)));
assert!(cb.events.contains(&TokenEvent::AttribData(13, 14)));
assert!(
cb.events
.contains(&TokenEvent::AttribEnd(QuoteType::Unquoted, 14))
);
}