|
@ -136,7 +136,7 @@ class TestTokenizer extends \PHPUnit\Framework\TestCase { |
|
|
} |
|
|
} |
|
|
$test['initialStates'] = $test['initialStates'] ?? ["Data state"]; |
|
|
$test['initialStates'] = $test['initialStates'] ?? ["Data state"]; |
|
|
// check if a test needs a patch due to trivial differences in implementation |
|
|
// check if a test needs a patch due to trivial differences in implementation |
|
|
$this->patchTest($testId, $test); |
|
|
$this->patchTest($test); |
|
|
for ($a = 0; $a < sizeof($test['initialStates']); $a++) { |
|
|
for ($a = 0; $a < sizeof($test['initialStates']); $a++) { |
|
|
$tokens = []; |
|
|
$tokens = []; |
|
|
foreach ($test['output'] as $token) { |
|
|
foreach ($test['output'] as $token) { |
|
@ -179,23 +179,39 @@ class TestTokenizer extends \PHPUnit\Framework\TestCase { |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
protected function patchTest(string $id, &$test): void { |
|
|
protected function patchTest(&$test): void { |
|
|
|
|
|
$id = [$test['input'], $test['initialStates']]; |
|
|
switch ($id) { |
|
|
switch ($id) { |
|
|
// test emits input stream error first despite peeking |
|
|
// test emits input stream error first despite peeking |
|
|
case "test3.test #30": |
|
|
case ["<!\u{B}", ["Data state"]]: |
|
|
$test['errors'] = array_reverse($test['errors']); |
|
|
$test['errors'] = array_reverse($test['errors']); |
|
|
break; |
|
|
break; |
|
|
// eof-in-comment positions in some tests don't make sense |
|
|
// eof-in-<whatever> positions in some tests don't make sense |
|
|
// https://github.com/html5lib/html5lib-tests/issues/125 |
|
|
// https://github.com/html5lib/html5lib-tests/issues/125 |
|
|
case "test3.test #143": |
|
|
case ["", ["CDATA section state"]]: |
|
|
$test['errors'][0]['col'] = 10; |
|
|
// there is no position 2 |
|
|
|
|
|
$test['errors'][0]['col']--; |
|
|
break; |
|
|
break; |
|
|
case "test3.test #144": |
|
|
case ["\u{A}", ["CDATA section state"]]: |
|
|
case "test3.test #145": |
|
|
// the line break is, for some reason, not counted in the test |
|
|
case "test3.test #146": |
|
|
$test['errors'][0]['line']++; |
|
|
$test['errors'][0]['line'] = 2; |
|
|
$test['errors'][0]['col'] = 1; |
|
|
|
|
|
break; |
|
|
|
|
|
case ["<!----!\r\n>", ["Data state"]]: |
|
|
|
|
|
case ["<!----!\n>", ["Data state"]]: |
|
|
|
|
|
case ["<!----!\r>", ["Data state"]]: |
|
|
|
|
|
// the line break is, for some reason, not counted in the test |
|
|
|
|
|
$test['errors'][0]['line']++; |
|
|
$test['errors'][0]['col'] = 2; |
|
|
$test['errors'][0]['col'] = 2; |
|
|
break; |
|
|
break; |
|
|
|
|
|
case ["<!----! >", ["Data state"]]: |
|
|
|
|
|
$test['errors'][0]['col']++; |
|
|
|
|
|
break; |
|
|
|
|
|
case [hex2bin("f4808080"), ["CDATA section state"]]: |
|
|
|
|
|
case [hex2bin("3bf4808080"), ["CDATA section state"]]: |
|
|
|
|
|
// malpaired surrogates count as two characters |
|
|
|
|
|
$test['errors'][0]['col']++; |
|
|
|
|
|
break; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|