diff options
Diffstat (limited to 'integration_tests')
-rw-r--r-- | integration_tests/tests/test_html5lib.rs | 44 |
1 files changed, 31 insertions, 13 deletions
diff --git a/integration_tests/tests/test_html5lib.rs b/integration_tests/tests/test_html5lib.rs index 3236f0f..23adec0 100644 --- a/integration_tests/tests/test_html5lib.rs +++ b/integration_tests/tests/test_html5lib.rs @@ -1,6 +1,8 @@ use std::{fs::File, io::BufReader, path::Path}; -use html5lib_tests::{parse_tests, InitialState, ParseError, ParseErrorInner, Test}; +use html5lib_tests::{ + parse_tests, Error as TestError, InitialState, Output, Test, Token as TestToken, +}; use html5tokenizer::{InternalState, Reader, Token, Tokenizer}; use pretty_assertions::assert_eq; @@ -107,22 +109,38 @@ fn run_test_inner<R: Reader>( tokenizer.set_last_start_tag(last_start_tag); } - let mut actual_tokens = Vec::new(); - let mut actual_errors = Vec::new(); + let mut actual = Output { + errors: Vec::new(), + tokens: Vec::new(), + }; for token in tokenizer { let token = token.unwrap(); - if let Token::Error { error, .. } = token { - actual_errors.push(ParseError { - code: ParseErrorInner(error), - }); - } else { - actual_tokens.push(token); - } + match token { + Token::Error { error, .. } => actual.errors.push(TestError { + code: error.to_string(), + }), + Token::StartTag(tag) => actual.tokens.push(TestToken::StartTag { + name: tag.name, + attributes: tag + .attributes + .into_iter() + .map(|(name, map_val)| (name, map_val.value)) + .collect(), + self_closing: tag.self_closing, + }), + Token::EndTag(tag) => actual.tokens.push(TestToken::EndTag { name: tag.name }), + Token::String(data) => actual.tokens.push(TestToken::Character(data)), + Token::Comment(data) => actual.tokens.push(TestToken::Comment(data)), + Token::Doctype(doctype) => actual.tokens.push(TestToken::Doctype { + name: Some(doctype.name).filter(|name| !name.is_empty()), + public_id: doctype.public_identifier, + system_id: doctype.system_identifier, + force_quirks: doctype.force_quirks, + }), + }; } - assert_eq!(test.output.0, actual_tokens); - - assert_eq!(test.errors, actual_errors); + assert_eq!(test.output, actual); } |