1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
|
use crate::token::*;
test!(text_01, "<p>text</p>",
Token::ElementStart("", "p", 0..2),
Token::ElementEnd(ElementEnd::Open, 2..3),
Token::Text("text", 3..7),
Token::ElementEnd(ElementEnd::Close("", "p"), 7..11)
);
test!(text_02, "<p> text </p>",
Token::ElementStart("", "p", 0..2),
Token::ElementEnd(ElementEnd::Open, 2..3),
Token::Text(" text ", 3..9),
Token::ElementEnd(ElementEnd::Close("", "p"), 9..13)
);
// 欄 is EF A4 9D. And EF can be mistreated for UTF-8 BOM.
test!(text_03, "<p>欄</p>",
Token::ElementStart("", "p", 0..2),
Token::ElementEnd(ElementEnd::Open, 2..3),
Token::Text("欄", 3..6),
Token::ElementEnd(ElementEnd::Close("", "p"), 6..10)
);
test!(text_04, "<p> </p>",
Token::ElementStart("", "p", 0..2),
Token::ElementEnd(ElementEnd::Open, 2..3),
Token::Text(" ", 3..4),
Token::ElementEnd(ElementEnd::Close("", "p"), 4..8)
);
test!(text_05, "<p> \r\n\t </p>",
Token::ElementStart("", "p", 0..2),
Token::ElementEnd(ElementEnd::Open, 2..3),
Token::Text(" \r\n\t ", 3..8),
Token::ElementEnd(ElementEnd::Close("", "p"), 8..12)
);
test!(text_06, "<p> </p>",
Token::ElementStart("", "p", 0..2),
Token::ElementEnd(ElementEnd::Open, 2..3),
Token::Text(" ", 3..9),
Token::ElementEnd(ElementEnd::Close("", "p"), 9..13)
);
test!(text_07, "<p>]></p>",
Token::ElementStart("", "p", 0..2),
Token::ElementEnd(ElementEnd::Open, 2..3),
Token::Text("]>", 3..5),
Token::ElementEnd(ElementEnd::Close("", "p"), 5..9)
);
test!(text_err_01, "<p>]]></p>",
Token::ElementStart("", "p", 0..2),
Token::ElementEnd(ElementEnd::Open, 2..3),
Token::Error("invalid character data at 1:4 cause ']]>' is not allowed inside a character data".to_string())
);
test!(text_err_02, "<p>\u{0c}</p>",
Token::ElementStart("", "p", 0..2),
Token::ElementEnd(ElementEnd::Open, 2..3),
Token::Error("invalid character data at 1:4 cause a non-XML character '\\u{c}' found at 1:4".to_string())
);
|