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
All 6,835 cases
| Case | Name | Expected | Note | Size |
|---|---|---|---|---|
| 004600 | html5lib/namedEntities/4193 html5lib-tests |
ℨ
|
8 B | |
| 004601 | html5lib/namedEntities/4194 html5lib-tests |
&zeta
|
5 B | |
| 004602 | html5lib/namedEntities/4195 html5lib-tests |
ζ
|
6 B | |
| 004603 | html5lib/namedEntities/4196 html5lib-tests |
&zfr
|
4 B | |
| 004604 | html5lib/namedEntities/4197 html5lib-tests |
𝔷
|
5 B | |
| 004605 | html5lib/namedEntities/4198 html5lib-tests |
&zhcy
|
5 B | |
| 004606 | html5lib/namedEntities/4199 html5lib-tests |
ж
|
6 B | |
| 004607 | html5lib/namedEntities/4200 html5lib-tests |
&zigrarr
|
8 B | |
| 004608 | html5lib/namedEntities/4201 html5lib-tests |
⇝
|
9 B | |
| 004609 | html5lib/namedEntities/4202 html5lib-tests |
&zopf
|
5 B | |
| 004610 | html5lib/namedEntities/4203 html5lib-tests |
𝕫
|
6 B | |
| 004611 | html5lib/namedEntities/4204 html5lib-tests |
&zscr
|
5 B | |
| 004612 | html5lib/namedEntities/4205 html5lib-tests |
𝓏
|
6 B | |
| 004613 | html5lib/namedEntities/4206 html5lib-tests |
&zwj
|
4 B | |
| 004614 | html5lib/namedEntities/4207 html5lib-tests |
⟨U+200D⟩
|
5 B | |
| 004615 | html5lib/namedEntities/4208 html5lib-tests |
&zwnj
|
5 B | |
| 004616 | html5lib/namedEntities/4209 html5lib-tests |
⟨U+200C⟩
|
6 B | |
| 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 | |
| 004624 | ampersand-before-amp Focused regression |
&&
|
6 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 | |
| 004635 | control-01-decimal Focused regression |
␁
|
4 B | |
| 004636 | control-01-hex Focused regression |
␁
|
5 B | |
| 004637 | control-02-decimal Focused regression |
␂
|
4 B | |
| 004638 | control-02-hex Focused regression |
␂
|
5 B | |
| 004639 | control-03-decimal Focused regression |
␃
|
4 B | |
| 004640 | control-03-hex Focused regression |
␃
|
5 B | |
| 004641 | control-04-decimal Focused regression |
␄
|
4 B | |
| 004642 | control-04-hex Focused regression |
␄
|
5 B | |
| 004643 | control-05-decimal Focused regression |
␅
|
4 B | |
| 004644 | control-05-hex Focused regression |
␅
|
5 B | |
| 004645 | control-06-decimal Focused regression |
␆
|
4 B | |
| 004646 | control-06-hex Focused regression |
␆
|
5 B | |
| 004647 | control-07-decimal Focused regression |
␇
|
4 B | |
| 004648 | control-07-hex Focused regression |
␇
|
5 B | |
| 004649 | control-08-decimal Focused regression |
␈
|
4 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