Compliance cases
These are the 6,835 inputs a submission must decode. Each output must match the expected text byte for byte. You can run the suite without reading it, or open any case to see its input and expected output.
Run the full compliance suite locally. Replace your-component.wasm
with your compiled component.
Download the suite
curl -fLo unescape_html.comply.wasm https://calculated.world/comply/unescape_html.wasm
qipx comply your-component.wasm --with unescape_html.comply.wasm
97 of 6,835 cases
| Case | Name | Expected | Note | Size |
|---|---|---|---|---|
| 004617 | empty Focused regression |
|
0 B | |
| 004618 | no-references Focused regression |
Plain text with <tags> and "quotes" stays as it …
|
51 B | |
| 004619 | utf8-passthrough Focused regression |
naïve café — 日本語 🎉
|
31 B | |
| 004620 | ampersand-lone Focused regression |
&
|
1 B | |
| 004621 | ampersand-double Focused regression |
&&
|
2 B | |
| 004622 | ampersand-space Focused regression |
&
|
2 B | |
| 004623 | ampersand-between-words Focused regression |
a & b
|
5 B | |
| 004625 | ampersand-trailing Focused regression |
x&
|
2 B | |
| 004626 | numeric-no-digits-2623 Focused regression |
&#
|
2 B | |
| 004627 | numeric-no-digits-26233b Focused regression |
&#;
|
3 B | |
| 004628 | numeric-no-digits-262378 Focused regression |
&#x
|
3 B | |
| 004629 | numeric-no-digits-262358 Focused regression |
&#X
|
3 B | |
| 004630 | numeric-no-digits-2623783b Focused regression |
&#x;
|
4 B | |
| 004631 | numeric-no-digits-262378673b Focused regression |
&#xg;
|
5 B | |
| 004632 | numeric-no-digits-26232d313b Focused regression |
&#-1;
|
5 B | |
| 004633 | numeric-no-digits-26232036353b Focused regression |
&# 65;
|
6 B | |
| 004634 | numeric-no-digits-26232b36353b Focused regression |
&#+65;
|
6 B | |
| 004826 | raw-cr-lf-nul Focused regression |
a␍␊b␍c␀d
|
8 B | |
| 004831 | large-plain Focused regression |
abcdefghijabcdefghijabcdefghijabcdefghijabcdefgh…
|
97.7 KiB | |
| 004832 | large-ampersands Focused regression |
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&…
|
48.8 KiB | |
| 004851 | generated/0016 Generated |
Z
|
1 B | |
| 004858 | generated/0023 Generated |
"
|
1 B | |
| 004879 | generated/0044 Generated |
x7
|
2 B | |
| 004898 | generated/0063 Generated |
日#
|
4 B | |
| 004907 | generated/0072 Generated |
>␍
|
2 B | |
| 004918 | generated/0083 Generated |
a>f
|
4 B | |
| 004933 | generated/0098 Generated |
#
|
1 B | |
| 004965 | generated/0130 Generated |
␊
|
1 B | |
| 004986 | generated/0151 Generated |
␉éxf
|
5 B | |
| 005000 | generated/0165 Generated |
🎉🎉␉
|
9 B | |
| 005063 | generated/0228 Generated |
🎉␍日€x␍;
|
14 B | |
| 005081 | generated/0246 Generated |
;
|
1 B | |
| 005086 | generated/0251 Generated |
9
|
1 B | |
| 005098 | generated/0263 Generated |
日<éf
|
7 B | |
| 005141 | generated/0306 Generated |
'€␊9f
|
7 B | |
| 005144 | generated/0309 Generated |
9-
|
2 B | |
| 005146 | generated/0311 Generated |
>
|
1 B | |
| 005149 | generated/0314 Generated |
f'
|
2 B | |
| 005159 | generated/0324 Generated |
xa日&'x
|
8 B | |
| 005163 | generated/0328 Generated |
␉">
|
3 B | |
| 005165 | generated/0330 Generated |
␀
|
1 B | |
| 005175 | generated/0340 Generated |
x<
|
2 B | |
| 005190 | generated/0355 Generated |
␀-
|
2 B | |
| 005212 | generated/0377 Generated |
f
|
1 B | |
| 005220 | generated/0385 Generated |
€
|
3 B | |
| 005233 | generated/0398 Generated |
-
|
1 B | |
| 005330 | generated/0495 Generated |
9&
|
2 B | |
| 005333 | generated/0498 Generated |
€€
|
7 B | |
| 005342 | generated/0507 Generated |
0
|
1 B | |
| 005362 | generated/0527 Generated |
|
1 B | |
| 005373 | generated/0538 Generated |
=
|
1 B | |
| 005374 | generated/0539 Generated |
=0
|
2 B | |
| 005377 | generated/0542 Generated |
日€
|
7 B | |
| 005379 | generated/0544 Generated |
=a
|
2 B | |
| 005380 | generated/0545 Generated |
é
|
2 B | |
| 005426 | generated/0591 Generated |
7␀
|
2 B | |
| 005442 | generated/0607 Generated |
a
|
1 B | |
| 005445 | generated/0610 Generated |
'a
|
2 B | |
| 005488 | generated/0653 Generated |
"0
|
2 B | |
| 005599 | generated/0764 Generated |
&␊aé
|
5 B | |
| 005645 | generated/0810 Generated |
'
|
1 B | |
| 005647 | generated/0812 Generated |
日€
|
6 B | |
| 005731 | generated/0896 Generated |
&␊F&-
|
5 B | |
| 005751 | generated/0916 Generated |
␉#
|
2 B | |
| 005767 | generated/0932 Generated |
F
|
1 B | |
| 005811 | generated/0976 Generated |
7
|
1 B | |
| 005871 | generated/1036 Generated |
a␉␀;␉
|
5 B | |
| 005880 | generated/1045 Generated |
--
|
2 B | |
| 005895 | generated/1060 Generated |
-9
|
2 B | |
| 005916 | generated/1081 Generated |
Z␍f
|
3 B | |
| 005923 | generated/1088 Generated |
␍
|
1 B | |
| 005932 | generated/1097 Generated |
␀ >0;
|
5 B | |
| 005950 | generated/1115 Generated |
F'␍ 日␍
|
8 B | |
| 005960 | generated/1125 Generated |
&␀-Z
|
4 B | |
| 005985 | generated/1150 Generated |
0x&
|
3 B | |
| 006076 | generated/1241 Generated |
␉
|
1 B | |
| 006101 | generated/1266 Generated |
x
|
1 B | |
| 006225 | generated/1390 Generated |
;é-xx
|
6 B | |
| 006247 | generated/1412 Generated |
␀;
|
2 B | |
| 006269 | generated/1434 Generated |
🎉
|
4 B | |
| 006271 | generated/1436 Generated |
#;
|
2 B | |
| 006276 | generated/1441 Generated |
9>
|
2 B | |
| 006288 | generated/1453 Generated |
aZ-9=
|
5 B | |
| 006306 | generated/1471 Generated |
aé␍ 7日x<
|
11 B | |
| 006403 | generated/1568 Generated |
7=
|
2 B | |
| 006417 | generated/1582 Generated |
␀f
|
2 B | |
| 006433 | generated/1598 Generated |
a;
|
2 B | |
| 006466 | generated/1631 Generated |
#x日
|
5 B | |
| 006472 | generated/1637 Generated |
x€
|
4 B | |
| 006496 | generated/1661 Generated |
;&🎉
|
6 B | |
| 006538 | generated/1703 Generated |
#🎉
|
5 B | |
| 006548 | generated/1713 Generated |
日
|
3 B | |
| 006556 | generated/1721 Generated |
<<
|
2 B | |
| 006624 | generated/1789 Generated |
9 9-
|
4 B | |
| 006666 | generated/1831 Generated |
🎉␀Z
|
6 B | |
| 006734 | generated/1899 Generated |
0€
|
4 B | |
| 006789 | generated/1954 Generated |
7-x
|
3 B |
Where these rules come from
Expected outputs come from Python’s html.unescape, changed to keep references to controls and noncharacters the way the WHATWG tokenizer does.
- Named character references — the table of 2,231 names, including the legacy ones that work without a semicolon
- Numeric character reference end state — the Windows-1252 remapping and the rules for 0, surrogates and out-of-range numbers
- html5lib-tests tokenizer tests — the source of the 4,617 html5lib cases