Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nodejs/node.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'test/parallel/test-icu-punycode.js')
-rw-r--r--test/parallel/test-icu-punycode.js85
1 files changed, 27 insertions, 58 deletions
diff --git a/test/parallel/test-icu-punycode.js b/test/parallel/test-icu-punycode.js
index 62508bc9f78..411704bb8f4 100644
--- a/test/parallel/test-icu-punycode.js
+++ b/test/parallel/test-icu-punycode.js
@@ -6,67 +6,36 @@ if (!common.hasIntl) {
return;
}
-const icu = getPunycode();
+const icu = process.binding('icu');
const assert = require('assert');
-function getPunycode() {
- try {
- return process.binding('icu');
- } catch (err) {
- return undefined;
+const tests = require('../fixtures/url-idna.js');
+
+{
+ for (const [i, { ascii, unicode }] of tests.valid.entries()) {
+ assert.strictEqual(ascii, icu.toASCII(unicode), `toASCII(${i + 1})`);
+ assert.strictEqual(unicode, icu.toUnicode(ascii), `toUnicode(${i + 1})`);
+ assert.strictEqual(ascii, icu.toASCII(icu.toUnicode(ascii)),
+ `toASCII(toUnicode(${i + 1}))`);
+ assert.strictEqual(unicode, icu.toUnicode(icu.toASCII(unicode)),
+ `toUnicode(toASCII(${i + 1}))`);
}
}
-// Credit for list: http://www.i18nguy.com/markup/idna-examples.html
-const tests = [
- 'افغانستا.icom.museum',
- 'الجزائر.icom.museum',
- 'österreich.icom.museum',
- 'বাংলাদেশ.icom.museum',
- 'беларусь.icom.museum',
- 'belgië.icom.museum',
- 'българия.icom.museum',
- 'تشادر.icom.museum',
- '中国.icom.museum',
- 'القمر.icom.museum',
- 'κυπρος.icom.museum',
- 'českárepublika.icom.museum',
- 'مصر.icom.museum',
- 'ελλάδα.icom.museum',
- 'magyarország.icom.museum',
- 'ísland.icom.museum',
- 'भारत.icom.museum',
- 'ايران.icom.museum',
- 'éire.icom.museum',
- 'איקו״ם.ישראל.museum',
- '日本.icom.museum',
- 'الأردن.icom.museum',
- 'қазақстан.icom.museum',
- '한국.icom.museum',
- 'кыргызстан.icom.museum',
- 'ລາວ.icom.museum',
- 'لبنان.icom.museum',
- 'македонија.icom.museum',
- 'موريتانيا.icom.museum',
- 'méxico.icom.museum',
- 'монголулс.icom.museum',
- 'المغرب.icom.museum',
- 'नेपाल.icom.museum',
- 'عمان.icom.museum',
- 'قطر.icom.museum',
- 'românia.icom.museum',
- 'россия.иком.museum',
- 'србијаицрнагора.иком.museum',
- 'இலங்கை.icom.museum',
- 'españa.icom.museum',
- 'ไทย.icom.museum',
- 'تونس.icom.museum',
- 'türkiye.icom.museum',
- 'украина.icom.museum',
- 'việtnam.icom.museum'
-];
+{
+ const errorRe = {
+ ascii: /^Error: Cannot convert name to ASCII$/,
+ unicode: /^Error: Cannot convert name to Unicode$/
+ };
+ const convertFunc = {
+ ascii: icu.toASCII,
+ unicode: icu.toUnicode
+ };
-// Testing the roundtrip
-tests.forEach((i) => {
- assert.strictEqual(i, icu.toUnicode(icu.toASCII(i)));
-});
+ for (const [i, { url, mode }] of tests.invalid.entries()) {
+ assert.throws(() => convertFunc[mode](url), errorRe[mode],
+ `Invalid case ${i + 1}`);
+ assert.doesNotThrow(() => convertFunc[mode](url, true),
+ `Invalid case ${i + 1} in lenient mode`);
+ }
+}