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 ℨ Named entity: zeetrf; with a semi-colon 8 B
004601 html5lib/namedEntities/4194 html5lib-tests &zeta Bad named entity: zeta without a semi-colon 5 B
004602 html5lib/namedEntities/4195 html5lib-tests ζ Named entity: zeta; with a semi-colon 6 B
004603 html5lib/namedEntities/4196 html5lib-tests &zfr Bad named entity: zfr without a semi-colon 4 B
004604 html5lib/namedEntities/4197 html5lib-tests 𝔷 Named entity: zfr; with a semi-colon 5 B
004605 html5lib/namedEntities/4198 html5lib-tests &zhcy Bad named entity: zhcy without a semi-colon 5 B
004606 html5lib/namedEntities/4199 html5lib-tests ж Named entity: zhcy; with a semi-colon 6 B
004607 html5lib/namedEntities/4200 html5lib-tests &zigrarr Bad named entity: zigrarr without a semi-colon 8 B
004608 html5lib/namedEntities/4201 html5lib-tests ⇝ Named entity: zigrarr; with a semi-colon 9 B
004609 html5lib/namedEntities/4202 html5lib-tests &zopf Bad named entity: zopf without a semi-colon 5 B
004610 html5lib/namedEntities/4203 html5lib-tests 𝕫 Named entity: zopf; with a semi-colon 6 B
004611 html5lib/namedEntities/4204 html5lib-tests &zscr Bad named entity: zscr without a semi-colon 5 B
004612 html5lib/namedEntities/4205 html5lib-tests 𝓏 Named entity: zscr; with a semi-colon 6 B
004613 html5lib/namedEntities/4206 html5lib-tests &zwj Bad named entity: zwj without a semi-colon 4 B
004614 html5lib/namedEntities/4207 html5lib-tests ⟨U+200D⟩ Named entity: zwj; with a semi-colon 5 B
004615 html5lib/namedEntities/4208 html5lib-tests &zwnj Bad named entity: zwnj without a semi-colon 5 B
004616 html5lib/namedEntities/4209 html5lib-tests ⟨U+200C⟩ Named entity: zwnj; with a semi-colon 6 B
004617 empty Focused regression Empty input renders empty output 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é — 日本語 🎉 Multi-byte UTF-8 is copied byte for byte 31 B
004620 ampersand-lone Focused regression & An & that starts no reference is copied 1 B
004621 ampersand-double Focused regression && An & that starts no reference is copied 2 B
004622 ampersand-space Focused regression & An & that starts no reference is copied 2 B
004623 ampersand-between-words Focused regression a & b An & that starts no reference is copied 5 B
004624 ampersand-before-amp Focused regression && An & that starts no reference is copied 6 B
004625 ampersand-trailing Focused regression x& An & that starts no reference is copied 2 B
004626 numeric-no-digits-2623 Focused regression &# No digits: copied unchanged 2 B
004627 numeric-no-digits-26233b Focused regression &#; No digits: copied unchanged 3 B
004628 numeric-no-digits-262378 Focused regression &#x No digits: copied unchanged 3 B
004629 numeric-no-digits-262358 Focused regression &#X No digits: copied unchanged 3 B
004630 numeric-no-digits-2623783b Focused regression &#x; No digits: copied unchanged 4 B
004631 numeric-no-digits-262378673b Focused regression &#xg; No digits: copied unchanged 5 B
004632 numeric-no-digits-26232d313b Focused regression &#-1; No digits: copied unchanged 5 B
004633 numeric-no-digits-26232036353b Focused regression &# 65; No digits: copied unchanged 6 B
004634 numeric-no-digits-26232b36353b Focused regression &#+65; No digits: copied unchanged 6 B
004635 control-01-decimal Focused regression ␁ Kept, unlike CPython's html.unescape 4 B
004636 control-01-hex Focused regression ␁ Kept, unlike CPython's html.unescape 5 B
004637 control-02-decimal Focused regression ␂ Kept, unlike CPython's html.unescape 4 B
004638 control-02-hex Focused regression ␂ Kept, unlike CPython's html.unescape 5 B
004639 control-03-decimal Focused regression ␃ Kept, unlike CPython's html.unescape 4 B
004640 control-03-hex Focused regression ␃ Kept, unlike CPython's html.unescape 5 B
004641 control-04-decimal Focused regression ␄ Kept, unlike CPython's html.unescape 4 B
004642 control-04-hex Focused regression ␄ Kept, unlike CPython's html.unescape 5 B
004643 control-05-decimal Focused regression ␅ Kept, unlike CPython's html.unescape 4 B
004644 control-05-hex Focused regression ␅ Kept, unlike CPython's html.unescape 5 B
004645 control-06-decimal Focused regression ␆ Kept, unlike CPython's html.unescape 4 B
004646 control-06-hex Focused regression ␆ Kept, unlike CPython's html.unescape 5 B
004647 control-07-decimal Focused regression ␇ Kept, unlike CPython's html.unescape 4 B
004648 control-07-hex Focused regression ␇ Kept, unlike CPython's html.unescape 5 B
004649 control-08-decimal Focused regression ␈ Kept, unlike CPython's html.unescape 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.