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 |
|---|---|---|---|---|
| 004800 | named-hellip-no-semicolon Focused regression |
&hellip
|
7 B | |
| 004801 | named-hellip Focused regression |
…
|
8 B | |
| 004802 | named-upper-amp Focused regression |
&&
|
9 B | |
| 004803 | named-mixed-case-unknown Focused regression |
&Amp;&aMp;
|
10 B | |
| 004804 | named-lt-tag Focused regression |
<<b>>
|
9 B | |
| 004805 | named-lt-gt-run Focused regression |
><<
|
10 B | |
| 004806 | named-two-letter-prefix Focused regression |
<x>x<x>x
|
16 B | |
| 004807 | named-unknown Focused regression |
&foo; &no; &qwerty
|
18 B | |
| 004808 | query-string Focused regression |
/search?q=1&lang=en©=2¬=3®¶=4§=5×=6
|
58 B | |
| 004809 | named-CounterClockwiseContourIntegral Focused regression |
∳&CounterClockwiseContourIntegral
|
65 B | |
| 004810 | named-DoubleLongLeftRightArrow Focused regression |
⟺&DoubleLongLeftRightArrow
|
51 B | |
| 004811 | named-ThickSpace Focused regression |
&ThickSpace
|
23 B | |
| 004812 | named-nGt Focused regression |
≫⃒&nGt
|
9 B | |
| 004813 | named-nLt Focused regression |
≪⃒&nLt
|
9 B | |
| 004814 | named-fjlig Focused regression |
fj&fjlig
|
13 B | |
| 004815 | named-acE Focused regression |
∾̳&acE
|
9 B | |
| 004816 | named-NotNestedGreaterGreater Focused regression |
⪢̸&NotNestedGreaterGreater
|
49 B | |
| 004817 | named-bne Focused regression |
=⃥&bne
|
9 B | |
| 004818 | named-race Focused regression |
∽̱&race
|
11 B | |
| 004819 | named-Lt Focused regression |
≪&Lt
|
7 B | |
| 004820 | named-LT Focused regression |
<<
|
7 B | |
| 004821 | named-lt Focused regression |
<<
|
7 B | |
| 004822 | long-name-after-legacy Focused regression |
&xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;
|
45 B | |
| 004823 | long-unknown-name Focused regression |
&aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa…
|
62 B | |
| 004824 | no-double-decode Focused regression |
& & <
|
28 B | |
| 004825 | terminators Focused regression |
&␉&␊&␌& &<&&&#&
|
40 B | |
| 004826 | raw-cr-lf-nul Focused regression |
a␍␊b␍c␀d
|
8 B | |
| 004827 | reference-then-raw Focused regression |
&␀A␍&␍
|
12 B | |
| 004828 | zero-width Focused regression |
⟨U+200D⟩⟨U+200C⟩⟨U+200B⟩⟨U+2060⟩
|
36 B | |
| 004829 | large-expansion Focused regression |
≫⃒≫⃒≫⃒≫⃒≫⃒≫⃒≫⃒≫⃒≫⃒≫⃒≫⃒≫⃒≫⃒≫⃒≫⃒≫⃒≫⃒≫⃒≫⃒≫⃒≫⃒≫⃒≫⃒≫⃒≫⃒≫⃒≫⃒≫⃒≫⃒≫⃒≫⃒≫⃒≫⃒≫⃒≫⃒≫⃒≫⃒≫⃒≫⃒≫⃒≫⃒≫⃒≫⃒≫⃒≫⃒≫⃒≫⃒≫⃒…
|
97.7 KiB | |
| 004830 | large-amp Focused regression |
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&…
|
97.7 KiB | |
| 004831 | large-plain Focused regression |
abcdefghijabcdefghijabcdefghijabcdefghijabcdefgh…
|
97.7 KiB | |
| 004832 | large-ampersands Focused regression |
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&…
|
48.8 KiB | |
| 004833 | large-max-code-point Focused regression |
⟨U+10FFFF⟩⟨U+10FFFF⟩⟨U+10FFFF⟩⟨U+10FFFF⟩⟨U+10FFFF⟩⟨U+10FFFF⟩⟨U+10FFFF⟩⟨U+10FFFF⟩⟨U+10FFFF⟩⟨U+10FFFF⟩⟨U+10FFFF⟩⟨U+10FFFF⟩⟨U+10FFFF⟩⟨U+10FFFF⟩⟨U+10FFFF⟩⟨U+10FFFF⟩⟨U+10FFFF⟩⟨U+10FFFF⟩⟨U+10FFFF⟩⟨U+10FFFF⟩⟨U+10FFFF⟩⟨U+10FFFF⟩⟨U+10FFFF⟩⟨U+10FFFF⟩⟨U+10FFFF⟩⟨U+10FFFF⟩⟨U+10FFFF⟩⟨U+10FFFF⟩⟨U+10FFFF⟩⟨U+10FFFF⟩⟨U+10FFFF⟩⟨U+10FFFF⟩⟨U+10FFFF⟩⟨U+10FFFF⟩⟨U+10FFFF⟩⟨U+10FFFF⟩⟨U+10FFFF⟩⟨U+10FFFF⟩⟨U+10FFFF⟩⟨U+10FFFF⟩⟨U+10FFFF⟩⟨U+10FFFF⟩⟨U+10FFFF⟩⟨U+10FFFF⟩⟨U+10FFFF⟩⟨U+10FFFF⟩⟨U+10FFFF⟩⟨U+10FFFF⟩…
|
97.7 KiB | |
| 004834 | large-legacy-mix Focused regression |
© ∉ &x €© ∉ &x €© ∉ &x €© ∉ &x €© ∉ &x €© ∉ &x €…
|
101.6 KiB | |
| 004835 | generated/0000 Generated |
x-A €--�€ ⪥<9ø&"
|
53 B | |
| 004836 | generated/0001 Generated |
⤓>&Zfr␍&NestedGreaterG&a🎉•
|
49 B | |
| 004837 | generated/0002 Generated |
9⪮⟨U+00A0⟩&g␉␉&gla␊f🎉日
|
47 B | |
| 004838 | generated/0003 Generated |
�Ÿ ∉&andan␊&boxhé
|
50 B | |
| 004839 | generated/0004 Generated |
日gA;▪🎉⟨U+2061⟩&odi
|
60 B | |
| 004840 | generated/0005 Generated |
&€&varph&bump €;…g&u&lbrkslϑ-&b
|
76 B | |
| 004841 | generated/0006 Generated |
==ℂ#␊␀␉-�&subd�䠧ggé
|
63 B | |
| 004842 | generated/0007 Generated |
␉ gx€∻9&n␀
|
52 B | |
| 004843 | generated/0008 Generated |
␊F>g9A€FaÊ&cir� &blackt
|
59 B | |
| 004844 | generated/0009 Generated |
&cc'&Aogo🎉9g⇙F…␊'&=�
|
62 B | |
| 004845 | generated/0010 Generated |
…Ģ&p-& ␍g␉&i
|
44 B | |
| 004846 | generated/0011 Generated |
-␍␀f␍∽€&ŸΘ
|
27 B | |
| 004847 | generated/0012 Generated |
␍g&€x9&>�x
|
30 B | |
| 004848 | generated/0013 Generated |
=&riggF
|
23 B | |
| 004849 | generated/0014 Generated |
&coĩFf&AEliН&NotRightTriangl9Z<
|
42 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