From ab373b495c8ed659e64158b764206dd2eaa35336 Mon Sep 17 00:00:00 2001 From: Martin Fischer Date: Mon, 11 Sep 2023 18:24:20 +0200 Subject: refactor: decouple run_test_inner from DefaultEmitter --- integration_tests/tests/test_html5lib.rs | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) (limited to 'integration_tests') diff --git a/integration_tests/tests/test_html5lib.rs b/integration_tests/tests/test_html5lib.rs index 8fedc1a..a682cb3 100644 --- a/integration_tests/tests/test_html5lib.rs +++ b/integration_tests/tests/test_html5lib.rs @@ -1,11 +1,12 @@ -use std::{fs::File, io::BufReader, path::Path}; +use std::{fs::File, io::BufReader, ops::Range, path::Path}; use html5lib_tests::{ parse_tests, Error as TestError, InitialState, Output, Test, Token as TestToken, }; use html5tokenizer::{ - offset::NoopOffset, reader::Reader, CdataAction, DefaultEmitter, Event, InternalState, Token, - Tokenizer, + offset::{Offset, Position}, + reader::Reader, + CdataAction, DefaultEmitter, Emitter, Error, Event, InternalState, Token, Tokenizer, }; use similar_asserts::assert_eq; @@ -90,14 +91,19 @@ fn run_test(fname: &str, test_i: usize, test: Test) { } } -fn run_test_inner( +fn run_test_inner( fname: &str, test_i: usize, test: &Test, state: &InitialState, - mut tokenizer: Tokenizer, + mut tokenizer: Tokenizer, tokenizer_info: &str, -) { +) where + R: Reader + Position, + O: Offset, + E: Emitter + Iterator + DrainErrors, + T: Into>, +{ println!( "==== FILE {}, TEST {}, STATE {:?}, TOKENIZER {} ====", fname, test_i, state, tokenizer_info, @@ -123,7 +129,7 @@ fn run_test_inner( tokenizer.handle_cdata_open(CdataAction::BogusComment); continue; } - Event::Token(token) => token, + Event::Token(token) => token.into(), }; match token { @@ -170,3 +176,13 @@ fn run_test_inner( test.output, ); } + +trait DrainErrors { + fn drain_errors(&mut self) -> Box)> + '_>; +} + +impl DrainErrors for DefaultEmitter { + fn drain_errors(&mut self) -> Box)> + '_> { + Box::new(self.drain_errors()) + } +} -- cgit v1.2.3