use skyscraper::html;
#[test]
fn unclosed_title_eof_in_text_mode() {
let text = "<html><head><title>hello";
let document = html::parse(text).unwrap();
let output = document.to_string();
assert!(
output.contains("<title>"),
"Should contain <title>: {output:?}"
);
assert!(
output.contains("hello"),
"Should contain the title text: {output:?}"
);
}
#[test]
fn unclosed_style_eof_in_text_mode() {
let text = "<html><head><style>body { color: red }";
let document = html::parse(text).unwrap();
let output = document.to_string();
assert!(
output.contains("<style>"),
"Should contain <style>: {output:?}"
);
assert!(
output.contains("body { color: red }"),
"Should contain the style text: {output:?}"
);
}
#[test]
fn unclosed_textarea_eof_in_text_mode() {
let text = "<html><body><textarea>some text";
let document = html::parse(text).unwrap();
let output = document.to_string();
assert!(
output.contains("<textarea>"),
"Should contain <textarea>: {output:?}"
);
assert!(
output.contains("some text"),
"Should contain the textarea content: {output:?}"
);
}
#[test]
fn unclosed_script_eof_in_text_mode() {
let text = "<html><head><script>var x = 1;";
let document = html::parse(text).unwrap();
let output = document.to_string();
assert!(
output.contains("<script>"),
"Should contain <script>: {output:?}"
);
}
#[test]
fn unclosed_empty_title_eof_in_text_mode() {
let text = "<html><head><title>";
let document = html::parse(text).unwrap();
let output = document.to_string();
assert!(
output.contains("<title>"),
"Should contain <title>: {output:?}"
);
}
#[test]
fn closed_title_normal_parsing() {
let text = "<html><head><title>hi</title></head><body><p>body</p></body></html>";
let document = html::parse(text).unwrap();
let output = document.to_string();
assert!(
output.contains("<title>hi</title>"),
"Should contain properly closed title: {output:?}"
);
assert!(
output.contains("<p>body</p>"),
"Should contain body paragraph: {output:?}"
);
}