2021-08-06 06:16:30 -04:00
|
|
|
use std::collections::HashMap;
|
|
|
|
|
|
|
|
use crate::ast::{ElementClosingTag, NodeData};
|
|
|
|
use crate::parse::element::{parse_element, parse_tag, ParsedTag};
|
|
|
|
use crate::parse::Code;
|
|
|
|
use crate::spec::tag::ns::Namespace;
|
2021-08-06 07:56:54 -04:00
|
|
|
use crate::spec::tag::EMPTY_SLICE;
|
2021-08-06 06:16:30 -04:00
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn test_parse_tag() {
|
|
|
|
let mut code = Code::new(
|
|
|
|
br###"<input type
|
|
|
|
|
|
|
|
|
|
|
|
=
|
2021-08-06 06:36:58 -04:00
|
|
|
"password" "a" = " b " :cd /e /=fg = /\h /i/ /j/k/l m=n=o q==\r/s/ / t] = /u / w=//>"###,
|
2021-08-06 06:16:30 -04:00
|
|
|
);
|
|
|
|
let tag = parse_tag(&mut code);
|
|
|
|
assert_eq!(
|
|
|
|
tag,
|
|
|
|
ParsedTag {
|
|
|
|
attributes: {
|
|
|
|
let mut map = HashMap::<Vec<u8>, Vec<u8>>::new();
|
|
|
|
map.insert(b"type".to_vec(), b"password".to_vec());
|
2021-08-06 06:36:58 -04:00
|
|
|
map.insert(b"\"a\"".to_vec(), b" b ".to_vec());
|
2021-08-06 06:16:30 -04:00
|
|
|
map.insert(b":cd".to_vec(), b"".to_vec());
|
|
|
|
map.insert(b"e".to_vec(), b"".to_vec());
|
|
|
|
map.insert(b"=fg".to_vec(), b"/\\h".to_vec());
|
|
|
|
map.insert(b"i".to_vec(), b"".to_vec());
|
|
|
|
map.insert(b"j".to_vec(), b"".to_vec());
|
|
|
|
map.insert(b"k".to_vec(), b"".to_vec());
|
|
|
|
map.insert(b"l".to_vec(), b"".to_vec());
|
|
|
|
map.insert(b"m".to_vec(), b"n=o".to_vec());
|
|
|
|
map.insert(b"q".to_vec(), b"=\\r/s/".to_vec());
|
|
|
|
map.insert(b"t]".to_vec(), b"/u".to_vec());
|
|
|
|
map.insert(b"w".to_vec(), b"//".to_vec());
|
|
|
|
map
|
|
|
|
},
|
|
|
|
name: b"input".to_vec(),
|
|
|
|
self_closing: false,
|
|
|
|
}
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn test_parse_element() {
|
|
|
|
let mut code = Code::new(br#"<a b=\"c\"></a>"#);
|
2021-08-06 07:56:54 -04:00
|
|
|
let elem = parse_element(&mut code, Namespace::Html, EMPTY_SLICE);
|
2021-08-06 06:16:30 -04:00
|
|
|
assert_eq!(
|
|
|
|
elem,
|
|
|
|
NodeData::Element {
|
|
|
|
attributes: {
|
|
|
|
let mut map = HashMap::<Vec<u8>, Vec<u8>>::new();
|
|
|
|
map.insert(b"b".to_vec(), br#"\"c\""#.to_vec());
|
|
|
|
map
|
|
|
|
},
|
|
|
|
children: vec![],
|
|
|
|
closing_tag: ElementClosingTag::Present,
|
|
|
|
name: b"a".to_vec(),
|
|
|
|
namespace: Namespace::Html,
|
2021-08-06 08:53:33 -04:00
|
|
|
next_sibling_element_name: Vec::new(),
|
2021-08-06 06:16:30 -04:00
|
|
|
}
|
|
|
|
);
|
|
|
|
}
|