use parse_html::{dom::dom_tree::DomTree, lexer::tokenizer::Lexer, parser::ast::Parser};
#[test]
fn test_dom_tree_construction() {
let input = r#"<div id="main"><p>Test</p></div>"#;
let dom = DomTree::new::<Lexer, Parser>(input).unwrap();
assert!(dom.get_by_id("main").is_some());
}
#[test]
fn test_dom_tree_basic_html() {
let input = r#"
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
ok ceci est un texte
<a href="2" id="l1">link1</a>
<a href="1">link2</a>
<form action="d" method="get">
<input type="text" name="name" />
</form>
</body>
</html>"#;
let dom = DomTree::new::<Lexer, Parser>(input).unwrap();
assert!(dom.get_by_id("main").is_none());
assert!(dom.get_by_id("l1").is_some());
}
#[test]
fn test_parser_with_unclosed_tag() {
let input = "<html><body><div>Unclosed div</body></html>";
let result = DomTree::new::<Lexer, Parser>(input);
assert!(result.is_err());
}