toascii.json (9043B)
1 [ 2 "This contains assorted IDNA tests that IdnaTestV2 might not cover.", 3 "Feel free to deduplicate with a clear commit message.", 4 "", 5 "If the test only applies to the URL Standard's 'domain to ASCII', ", 6 "and not to TR46's ToASCII, then tag it with `urlStandardOnly`", 7 { 8 "comment": "Label with hyphens in 3rd and 4th position", 9 "input": "aa--", 10 "output": "aa--" 11 }, 12 { 13 "input": "a†--", 14 "output": "xn--a---kp0a" 15 }, 16 { 17 "input": "ab--c", 18 "output": "ab--c" 19 }, 20 { 21 "comment": "Label with leading hyphen", 22 "input": "-x", 23 "output": "-x" 24 }, 25 { 26 "input": "-†", 27 "output": "xn----xhn" 28 }, 29 { 30 "input": "-x.xn--zca", 31 "output": "-x.xn--zca" 32 }, 33 { 34 "input": "-x.ß", 35 "output": "-x.xn--zca" 36 }, 37 { 38 "comment": "Label with trailing hyphen", 39 "input": "x-.xn--zca", 40 "output": "x-.xn--zca" 41 }, 42 { 43 "input": "x-.ß", 44 "output": "x-.xn--zca" 45 }, 46 { 47 "comment": "Empty labels", 48 "input": "x..xn--zca", 49 "output": "x..xn--zca" 50 }, 51 { 52 "input": "x..ß", 53 "output": "x..xn--zca" 54 }, 55 { 56 "comment": "Invalid Punycode", 57 "input": "xn--a", 58 "output": null 59 }, 60 { 61 "input": "xn--a.xn--zca", 62 "output": null 63 }, 64 { 65 "input": "xn--a.ß", 66 "output": null 67 }, 68 { 69 "input": "xn--ls8h=", 70 "output": null 71 }, 72 { 73 "comment": "Invalid Punycode (contains non-ASCII character)", 74 "input": "xn--tešla", 75 "output": null 76 }, 77 { 78 "comment": "Valid Punycode", 79 "input": "xn--zca.xn--zca", 80 "output": "xn--zca.xn--zca" 81 }, 82 { 83 "comment": "Mixed", 84 "input": "xn--zca.ß", 85 "output": "xn--zca.xn--zca" 86 }, 87 { 88 "input": "ab--c.xn--zca", 89 "output": "ab--c.xn--zca" 90 }, 91 { 92 "input": "ab--c.ß", 93 "output": "ab--c.xn--zca" 94 }, 95 { 96 "comment": "CheckJoiners is true", 97 "input": "\u200D.example", 98 "output": null 99 }, 100 { 101 "input": "xn--1ug.example", 102 "output": null 103 }, 104 { 105 "comment": "CheckBidi is true", 106 "input": "يa", 107 "output": null 108 }, 109 { 110 "input": "xn--a-yoc", 111 "output": null 112 }, 113 { 114 "comment": "processing_option is Nontransitional_Processing", 115 "input": "ශ්රී", 116 "output": "xn--10cl1a0b660p" 117 }, 118 { 119 "input": "نامهای", 120 "output": "xn--mgba3gch31f060k" 121 }, 122 { 123 "comment": "U+FFFD", 124 "input": "\uFFFD.com", 125 "output": null 126 }, 127 { 128 "comment": "U+FFFD character encoded in Punycode", 129 "input": "xn--zn7c.com", 130 "output": null 131 }, 132 { 133 "comment": "Label longer than 63 code points", 134 "input": "x01234567890123456789012345678901234567890123456789012345678901x", 135 "output": "x01234567890123456789012345678901234567890123456789012345678901x" 136 }, 137 { 138 "input": "x01234567890123456789012345678901234567890123456789012345678901†", 139 "output": "xn--x01234567890123456789012345678901234567890123456789012345678901-6963b" 140 }, 141 { 142 "input": "x01234567890123456789012345678901234567890123456789012345678901x.xn--zca", 143 "output": "x01234567890123456789012345678901234567890123456789012345678901x.xn--zca" 144 }, 145 { 146 "input": "x01234567890123456789012345678901234567890123456789012345678901x.ß", 147 "output": "x01234567890123456789012345678901234567890123456789012345678901x.xn--zca" 148 }, 149 { 150 "comment": "Domain excluding TLD longer than 253 code points", 151 "input": "01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.0123456789012345678901234567890123456789012345678.x", 152 "output": "01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.0123456789012345678901234567890123456789012345678.x" 153 }, 154 { 155 "input": "01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.0123456789012345678901234567890123456789012345678.xn--zca", 156 "output": "01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.0123456789012345678901234567890123456789012345678.xn--zca" 157 }, 158 { 159 "input": "01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.0123456789012345678901234567890123456789012345678.ß", 160 "output": "01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.01234567890123456789012345678901234567890123456789.0123456789012345678901234567890123456789012345678.xn--zca" 161 }, 162 { 163 "comment": "IDNA ignored code points", 164 "input": "a\u00ADb", 165 "output": "ab" 166 }, 167 { 168 "comment": "Interesting UseSTD3ASCIIRules=false cases", 169 "input": "≠", 170 "output": "xn--1ch" 171 }, 172 { 173 "input": "≮", 174 "output": "xn--gdh" 175 }, 176 { 177 "input": "≯", 178 "output": "xn--hdh" 179 }, 180 { 181 "comment": "NFC normalization (forbidden < and > characters are normalized to valid ones)", 182 "input": "=\u0338", 183 "output": "xn--1ch" 184 }, 185 { 186 "input": "<\u0338", 187 "output": "xn--gdh" 188 }, 189 { 190 "input": ">\u0338", 191 "output": "xn--hdh" 192 }, 193 { 194 "comment": "Same with inserted IDNA ignored code point", 195 "input": "=\u00AD\u0338", 196 "output": "xn--1ch" 197 }, 198 { 199 "input": "<\u00AD\u0338", 200 "output": "xn--gdh" 201 }, 202 { 203 "input": ">\u00AD\u0338", 204 "output": "xn--hdh" 205 }, 206 "Tests below are from WebKit (fast/url/idna2003.html & fast/url/idna2008.html; contributed by Chris Weber back in 2011).", 207 { 208 "input": "fa\u00DF.de", 209 "output": "xn--fa-hia.de" 210 }, 211 { 212 "input": "\u03B2\u03CC\u03BB\u03BF\u03C2.com", 213 "output": "xn--nxasmm1c.com" 214 }, 215 { 216 "input": "\u0DC1\u0DCA\u200D\u0DBB\u0DD3.com", 217 "output": "xn--10cl1a0b660p.com" 218 }, 219 { 220 "input": "\u0646\u0627\u0645\u0647\u200C\u0627\u06CC.com", 221 "output": "xn--mgba3gch31f060k.com" 222 }, 223 { 224 "input": "www.loo\u0138out.net", 225 "output": "www.xn--looout-5bb.net" 226 }, 227 { 228 "input": "\u15EF\u15EF\u15EF.lookout.net", 229 "output": "xn--1qeaa.lookout.net" 230 }, 231 { 232 "input": "www.lookout.\u0441\u043E\u043C", 233 "output": "www.lookout.xn--l1adi" 234 }, 235 { 236 "input": "www\u2025lookout.net", 237 "output": null 238 }, 239 { 240 "input": "www.lookout\u2027net", 241 "output": "www.xn--lookoutnet-406e" 242 }, 243 { 244 "input": "www.lookout.net\u2A7480", 245 "output": null, 246 "urlStandardOnly": true 247 }, 248 { 249 "input": "www\u00A0.lookout.net", 250 "output": null, 251 "urlStandardOnly": true 252 }, 253 { 254 "input": "\u1680lookout.net", 255 "output": null 256 }, 257 { 258 "input": "\u001flookout.net", 259 "output": null, 260 "urlStandardOnly": true 261 }, 262 { 263 "input": "look\u06DDout.net", 264 "output": null 265 }, 266 { 267 "input": "look\u180Eout.net", 268 "output": "lookout.net" 269 }, 270 { 271 "input": "look\u2060out.net", 272 "output": "lookout.net" 273 }, 274 { 275 "input": "look\uFEFFout.net", 276 "output": "lookout.net" 277 }, 278 { 279 "input": "look\uD83F\uDFFEout.net", 280 "output": null 281 }, 282 { 283 "input": "look\uFFFAout.net", 284 "output": null 285 }, 286 { 287 "input": "look\u2FF0out.net", 288 "output": null 289 }, 290 { 291 "input": "look\u0341out.net", 292 "output": "xn--looout-kp7b.net" 293 }, 294 { 295 "input": "look\u202Eout.net", 296 "output": null 297 }, 298 { 299 "input": "look\u206Bout.net", 300 "output": "lookout.net" 301 }, 302 { 303 "input": "look\uDB40\uDC01out.net", 304 "output": null 305 }, 306 { 307 "input": "look\uDB40\uDC20out.net", 308 "output": null 309 }, 310 { 311 "input": "look\u05BEout.net", 312 "output": null 313 }, 314 { 315 "input": "B\u00FCcher.de", 316 "output": "xn--bcher-kva.de" 317 }, 318 { 319 "input": "\u2665.net", 320 "output": "xn--g6h.net" 321 }, 322 { 323 "input": "\u0378.net", 324 "output": null 325 }, 326 { 327 "input": "\u04C0.com", 328 "output": "xn--s5a.com" 329 }, 330 { 331 "input": "\uD87E\uDC68.com", 332 "output": "xn--snl.com" 333 }, 334 { 335 "input": "\u2183.com", 336 "output": "xn--r5g.com" 337 }, 338 { 339 "input": "look\u034Fout.net", 340 "output": "lookout.net" 341 }, 342 { 343 "input": "gOoGle.com", 344 "output": "google.com" 345 }, 346 { 347 "input": "\u09dc.com", 348 "output": "xn--15b8c.com" 349 }, 350 { 351 "input": "\u1E9E.com", 352 "output": "xn--zca.com" 353 }, 354 { 355 "input": "\u1E9E.foo.com", 356 "output": "xn--zca.foo.com" 357 }, 358 { 359 "input": "-foo.bar.com", 360 "output": "-foo.bar.com" 361 }, 362 { 363 "input": "foo-.bar.com", 364 "output": "foo-.bar.com" 365 }, 366 { 367 "input": "ab--cd.com", 368 "output": "ab--cd.com" 369 }, 370 { 371 "input": "xn--0.com", 372 "output": null 373 }, 374 { 375 "input": "foo\u0300.bar.com", 376 "output": "xn--fo-3ja.bar.com" 377 } 378 ]