mirror of
https://github.com/oven-sh/bun
synced 2026-02-09 18:38:55 +00:00
102 lines
4.7 KiB
JavaScript
102 lines
4.7 KiB
JavaScript
import { describe, expect, test } from "bun:test";
|
||
import url from "node:url";
|
||
|
||
const pairs = [
|
||
["ıíd", "xn--d-iga7r"],
|
||
["يٴ", "xn--mhb8f"],
|
||
["www.ϧƽəʐ.com", "www.xn--cja62apfr6c.com"],
|
||
["новини.com", "xn--b1amarcd.com"],
|
||
["名がドメイン.com", "xn--v8jxj3d1dzdz08w.com"],
|
||
["افغانستا.icom.museum", "xn--mgbaal8b0b9b2b.icom.museum"],
|
||
["الجزائر.icom.fake", "xn--lgbbat1ad8j.icom.fake"],
|
||
["भारत.org", "xn--h2brj9c.org"],
|
||
["افغانستا.icom.museum", "xn--mgbaal8b0b9b2b.icom.museum"],
|
||
["الجزائر.icom.museum", "xn--lgbbat1ad8j.icom.museum"],
|
||
["österreich.icom.museum", "xn--sterreich-z7a.icom.museum"],
|
||
["বাংলাদেশ.icom.museum", "xn--54b6eqazv8bc7e.icom.museum"],
|
||
["беларусь.icom.museum", "xn--80abmy0agn7e.icom.museum"],
|
||
["belgië.icom.museum", "xn--belgi-rsa.icom.museum"],
|
||
["българия.icom.museum", "xn--80abgvm6a7d2b.icom.museum"],
|
||
["تشادر.icom.museum", "xn--mgbfqim.icom.museum"],
|
||
["中国.icom.museum", "xn--fiqs8s.icom.museum"],
|
||
["القمر.icom.museum", "xn--mgbu4chg.icom.museum"],
|
||
["κυπρος.icom.museum", "xn--vxakcego.icom.museum"],
|
||
["českárepublika.icom.museum", "xn--eskrepublika-ebb62d.icom.museum"],
|
||
["مصر.icom.museum", "xn--wgbh1c.icom.museum"],
|
||
["ελλάδα.icom.museum", "xn--hxakic4aa.icom.museum"],
|
||
["magyarország.icom.museum", "xn--magyarorszg-t7a.icom.museum"],
|
||
["ísland.icom.museum", "xn--sland-ysa.icom.museum"],
|
||
["भारत.icom.museum", "xn--h2brj9c.icom.museum"],
|
||
["ايران.icom.museum", "xn--mgba3a4fra.icom.museum"],
|
||
["éire.icom.museum", "xn--ire-9la.icom.museum"],
|
||
["איקו״ם.ישראל.museum", "xn--4dbklr2c8d.xn--4dbrk0ce.museum"],
|
||
["日本.icom.museum", "xn--wgv71a.icom.museum"],
|
||
["الأردن.icom.museum", "xn--igbhzh7gpa.icom.museum"],
|
||
["қазақстан.icom.museum", "xn--80aaa0a6awh12ed.icom.museum"],
|
||
["한국.icom.museum", "xn--3e0b707e.icom.museum"],
|
||
["кыргызстан.icom.museum", "xn--80afmksoji0fc.icom.museum"],
|
||
["ລາວ.icom.museum", "xn--q7ce6a.icom.museum"],
|
||
["لبنان.icom.museum", "xn--mgbb7fjb.icom.museum"],
|
||
["македонија.icom.museum", "xn--80aaldqjmmi6x.icom.museum"],
|
||
["موريتانيا.icom.museum", "xn--mgbah1a3hjkrd.icom.museum"],
|
||
["méxico.icom.museum", "xn--mxico-bsa.icom.museum"],
|
||
["монголулс.icom.museum", "xn--c1aqabffc0aq.icom.museum"],
|
||
["المغرب.icom.museum", "xn--mgbc0a9azcg.icom.museum"],
|
||
["नेपाल.icom.museum", "xn--l2bey1c2b.icom.museum"],
|
||
["عمان.icom.museum", "xn--mgb9awbf.icom.museum"],
|
||
["قطر.icom.museum", "xn--wgbl6a.icom.museum"],
|
||
["românia.icom.museum", "xn--romnia-yta.icom.museum"],
|
||
["россия.иком.museum", "xn--h1alffa9f.xn--h1aegh.museum"],
|
||
["србијаицрнагора.иком.museum", "xn--80aaabm1ab4blmeec9e7n.xn--h1aegh.museum"],
|
||
["இலங்கை.icom.museum", "xn--xkc2al3hye2a.icom.museum"],
|
||
["españa.icom.museum", "xn--espaa-rta.icom.museum"],
|
||
["ไทย.icom.museum", "xn--o3cw4h.icom.museum"],
|
||
["تونس.icom.museum", "xn--pgbs0dh.icom.museum"],
|
||
["türkiye.icom.museum", "xn--trkiye-3ya.icom.museum"],
|
||
["украина.icom.museum", "xn--80aaxgrpt.icom.museum"],
|
||
["việtnam.icom.museum", "xn--vitnam-jk8b.icom.museum"],
|
||
[`${"a".repeat(64)}.com`, `${"a".repeat(64)}.com`],
|
||
[`${`${"a".repeat(64)}.`.repeat(4)}com`, `${`${"a".repeat(64)}.`.repeat(4)}com`],
|
||
["r4---sn-a5mlrn7s.gevideo.com", "r4---sn-a5mlrn7s.gevideo.com"],
|
||
["-sn-a5mlrn7s.gevideo.com", "-sn-a5mlrn7s.gevideo.com"],
|
||
["sn-a5mlrn7s-.gevideo.com", "sn-a5mlrn7s-.gevideo.com"],
|
||
["-sn-a5mlrn7s-.gevideo.com", "-sn-a5mlrn7s-.gevideo.com"],
|
||
["-sn--a5mlrn7s-.gevideo.com", "-sn--a5mlrn7s-.gevideo.com"],
|
||
];
|
||
|
||
const invalids = [
|
||
["@", ""],
|
||
["a@b", ""],
|
||
[null, null],
|
||
[undefined, undefined],
|
||
["2001:0db8:85a3:0000:0000:8a2e:0370:7334", ""],
|
||
];
|
||
|
||
describe("url.domainToASCII", () => {
|
||
for (const [domain, ascii] of pairs) {
|
||
test(`convert from '${domain}' to '${ascii}'`, () => {
|
||
const domainConvertedToASCII = url.domainToASCII(domain);
|
||
expect(domainConvertedToASCII).toEqual(ascii);
|
||
});
|
||
}
|
||
for (const [input, expected] of invalids) {
|
||
test(`-> '${input}' is '${expected}'`, () => {
|
||
expect(url.domainToASCII(input)).toEqual(expected);
|
||
});
|
||
}
|
||
});
|
||
|
||
describe("url.domainToUnicode", () => {
|
||
for (const [domain, ascii] of pairs) {
|
||
test(`convert from '${ascii}' to '${domain}'`, () => {
|
||
const asciiConvertedToUnicode = url.domainToUnicode(ascii);
|
||
expect(asciiConvertedToUnicode).toEqual(domain);
|
||
});
|
||
}
|
||
for (const [input, expected] of invalids) {
|
||
test(`-> '${input}' is '${expected}'`, () => {
|
||
expect(url.domainToASCII(input)).toEqual(expected);
|
||
});
|
||
}
|
||
});
|