|
| 1 | +import { describe, it, expect } from "vitest"; |
| 2 | +import { decodePunycode } from "./punycode"; |
| 3 | + |
| 4 | +const getPunycode = (x: string) => { |
| 5 | + return new URL(`http://${x}.io`).hostname.slice(0, -3); |
| 6 | +}; |
| 7 | + |
| 8 | +describe.concurrent("punycode - decode only", () => { |
| 9 | + it.concurrent("basic", () => { |
| 10 | + expect(decodePunycode("xn--viertelvergngen-bwb")).toBe("viertelvergnügen"); |
| 11 | + expect(decodePunycode("xn--maana-pta")).toBe("mañana"); |
| 12 | + expect(decodePunycode("xn--bcher-kva")).toBe("b\xFCcher"); |
| 13 | + expect(decodePunycode("xn--caf-dma")).toBe("caf\xE9"); |
| 14 | + expect(decodePunycode("xn----dqo34k")).toBe("\u2603-\u2318"); |
| 15 | + expect(decodePunycode("xn----dqo34kn65z")).toBe("\uD400\u2603-\u2318"); |
| 16 | + expect(decodePunycode("xn--ls8h")).toBe("\uD83D\uDCA9"); |
| 17 | + expect(decodePunycode("xn--p-8sbkgc5ag7bhce")).toBe("джpумлатест"); |
| 18 | + expect(decodePunycode("xn--ba-lmcq")).toBe("bрфa"); |
| 19 | + |
| 20 | + const codes = { |
| 21 | + "为什么选择scriptcat-脚本猫": "xn--scriptcat--xx2pif85dpx1n4mn5i9brrzc1f2c", |
| 22 | + "scriptcat脚本猫完全兼容油猴脚本-同时提供后台脚本运行框架-丰富的api扩展-让你的浏览体验更出色": |
| 23 | + "xn--scriptcat--api--803xq5lxg84bn7x9law6gwxrftatbw476a18aopi2ky56dycj3jr6wh00beah022clsg5u6cb6en53e7ka292jha3303jiai546nxt1eksp1sw6k3c251h", |
| 24 | + "为什么选择scriptcat-基于油猴的设计理念-完全兼容油猴脚本-提供更多丰富的api让脚本能够完成更多强大的功能": |
| 25 | + "xn--scriptcat---api-903xremky1ci2a25kznmfnap9t8q1beegea3l0js49dka54lbs864gsvf33vulhm9i656aja69tka9912dga2675eha679g784aral7387kja72mma6139lpna01bz17n", |
| 26 | + "为什么选择scriptcat-基于油猴的设计理念-完全兼容油猴脚本-提供更多丰富的api-脚本猫不仅兼容油猴脚本-还支持后台脚本运行-功能更强大-覆盖范围广-安装脚本管理器-寻找适合的脚本一键安装即可": |
| 27 | + "xn--scriptcat---api-------ql07anix3aghnnp9dxybze30yj7pksaja010heqhtxe3a13grg250g79e2zm98lzqas99fea7iu6hla65gc3exv9ccdi39j2m0b43e9pbw40acmuh6ysa365alaefkf5967ggar9528i6rahat638mlb3788ara0bz70d1o7id3te56bnaignj0264b5n7g88ioa140pgu0cyicj71n8vat3kmrap232b", |
| 28 | + "asmdksmklcmdsk-寻找-lmklamdkjqdenakjc-njkqelnuiconwerj-ksfnvcslkjdmc-jweasjkndjk-sandkjasnjxksakjkxnjaksn适合的-xj-kqwnjkxnqjas-nxsjkanxjksnjxansjk-cnajskn-cjkaxjksn-kxjasnjkxansjk-xnasjkxnksaj-cnjkdcnjksdncjsdnjcsdjkc-nmckj脚本": |
| 29 | + "xn--asmdksmklcmdsk--lmklamdkjqdenakjc-njkqelnuiconwerj-ksfnvcslkjdmc-jweasjkndjk-sandkjasnjxksakjkxnjaksn-xj-kqwnjkxnqjas-nxsjkanxjksnjxansjk-cnajskn-cjkaxjksn-kxjasnjkxansjk-xnasjkxnksaj-cnjkdcnjksdncjsdnjcsdjkc-nmckj-0g768an264bok8jtmrh2e00as1gp9lgw", |
| 30 | + }; |
| 31 | + |
| 32 | + let testRaw: keyof typeof codes; |
| 33 | + |
| 34 | + testRaw = "为什么选择scriptcat-脚本猫"; |
| 35 | + |
| 36 | + expect(codes[testRaw]).toBe(getPunycode(testRaw)); |
| 37 | + expect(decodePunycode(codes[testRaw])).toBe(testRaw); |
| 38 | + |
| 39 | + testRaw = "scriptcat脚本猫完全兼容油猴脚本-同时提供后台脚本运行框架-丰富的api扩展-让你的浏览体验更出色"; |
| 40 | + |
| 41 | + expect(codes[testRaw]).toBe(getPunycode(testRaw)); |
| 42 | + expect(decodePunycode(codes[testRaw])).toBe(testRaw); |
| 43 | + |
| 44 | + testRaw = "为什么选择scriptcat-基于油猴的设计理念-完全兼容油猴脚本-提供更多丰富的api让脚本能够完成更多强大的功能"; |
| 45 | + |
| 46 | + expect(codes[testRaw]).toBe(getPunycode(testRaw)); |
| 47 | + expect(decodePunycode(codes[testRaw])).toBe(testRaw); |
| 48 | + |
| 49 | + testRaw = |
| 50 | + "为什么选择scriptcat-基于油猴的设计理念-完全兼容油猴脚本-提供更多丰富的api-脚本猫不仅兼容油猴脚本-还支持后台脚本运行-功能更强大-覆盖范围广-安装脚本管理器-寻找适合的脚本一键安装即可"; |
| 51 | + |
| 52 | + expect(codes[testRaw]).toBe(getPunycode(testRaw)); |
| 53 | + expect(decodePunycode(codes[testRaw])).toBe(testRaw); |
| 54 | + |
| 55 | + testRaw = |
| 56 | + "asmdksmklcmdsk-寻找-lmklamdkjqdenakjc-njkqelnuiconwerj-ksfnvcslkjdmc-jweasjkndjk-sandkjasnjxksakjkxnjaksn适合的-xj-kqwnjkxnqjas-nxsjkanxjksnjxansjk-cnajskn-cjkaxjksn-kxjasnjkxansjk-xnasjkxnksaj-cnjkdcnjksdncjsdnjcsdjkc-nmckj脚本"; |
| 57 | + |
| 58 | + expect(codes[testRaw]).toBe(getPunycode(testRaw)); |
| 59 | + expect(decodePunycode(codes[testRaw])).toBe(testRaw); |
| 60 | + }); |
| 61 | +}); |
0 commit comments