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 |
|---|---|---|---|---|
| 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