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
Clear

31 of 6,835 cases

Case Name Expected Note Size
004791 named-notit Focused regression I'm ¬it; I tell you Legacy names decode without ; using the longest match 22 B
004792 named-notin-no-semicolon Focused regression ¬in Legacy names decode without ; using the longest match 6 B
004793 named-notin Focused regression ∉ Legacy names decode without ; using the longest match 7 B
004794 named-amp-equals Focused regression &= Legacy names decode without ; using the longest match 5 B
004795 named-copy-query Focused regression ?x=1©=2 Legacy names decode without ; using the longest match 11 B
004796 named-amp-letter Focused regression &x Legacy names decode without ; using the longest match 5 B
004797 named-amp-unicode Focused regression &é Legacy names decode without ; using the longest match 6 B
004798 named-amp-hash Focused regression &# Legacy names decode without ; using the longest match 5 B
004799 named-amp-amp Focused regression & Legacy names decode without ; using the longest match 8 B
004800 named-hellip-no-semicolon Focused regression &hellip Legacy names decode without ; using the longest match 7 B
004801 named-hellip Focused regression … Legacy names decode without ; using the longest match 8 B
004802 named-upper-amp Focused regression && Legacy names decode without ; using the longest match 9 B
004803 named-mixed-case-unknown Focused regression &Amp;&aMp; Legacy names decode without ; using the longest match 10 B
004804 named-lt-tag Focused regression <<b>> Legacy names decode without ; using the longest match 9 B
004805 named-lt-gt-run Focused regression ><< Legacy names decode without ; using the longest match 10 B
004806 named-two-letter-prefix Focused regression <x>x<x>x Legacy names decode without ; using the longest match 16 B
004807 named-unknown Focused regression &foo; &no; &qwerty Legacy names decode without ; using the longest match 18 B
004808 query-string Focused regression /search?q=1&lang=en©=2¬=3®¶=4§=5×=6 Body-text rules: legacy names decode even in URLs 58 B
004809 named-CounterClockwiseContourIntegral Focused regression ∳&CounterClockwiseContourIntegral With and without ; 65 B
004810 named-DoubleLongLeftRightArrow Focused regression ⟺&DoubleLongLeftRightArrow With and without ; 51 B
004811 named-ThickSpace Focused regression   &ThickSpace With and without ; 23 B
004812 named-nGt Focused regression ≫⃒&nGt With and without ; 9 B
004813 named-nLt Focused regression ≪⃒&nLt With and without ; 9 B
004814 named-fjlig Focused regression fj&fjlig With and without ; 13 B
004815 named-acE Focused regression ∾̳&acE With and without ; 9 B
004816 named-NotNestedGreaterGreater Focused regression ⪢̸&NotNestedGreaterGreater With and without ; 49 B
004817 named-bne Focused regression =⃥&bne With and without ; 9 B
004818 named-race Focused regression ∽̱&race With and without ; 11 B
004819 named-Lt Focused regression ≪&Lt With and without ; 7 B
004820 named-LT Focused regression << With and without ; 7 B
004821 named-lt Focused regression << With and without ; 7 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.