11cb0ef41Sopenharmony_ci'use strict'; 21cb0ef41Sopenharmony_ci 31cb0ef41Sopenharmony_ci// Tests below are not from WPT. 41cb0ef41Sopenharmony_ci 51cb0ef41Sopenharmony_ciconst common = require('../common'); 61cb0ef41Sopenharmony_ci 71cb0ef41Sopenharmony_ciif (!common.hasIntl) 81cb0ef41Sopenharmony_ci common.skip('missing Intl'); 91cb0ef41Sopenharmony_ci 101cb0ef41Sopenharmony_ciconst assert = require('assert'); 111cb0ef41Sopenharmony_ciconst { domainToASCII, domainToUnicode } = require('url'); 121cb0ef41Sopenharmony_ci 131cb0ef41Sopenharmony_ciconst tests = require('../fixtures/url-idna'); 141cb0ef41Sopenharmony_ciconst fixtures = require('../common/fixtures'); 151cb0ef41Sopenharmony_ciconst wptToASCIITests = require( 161cb0ef41Sopenharmony_ci fixtures.path('wpt', 'url', 'resources', 'toascii.json') 171cb0ef41Sopenharmony_ci); 181cb0ef41Sopenharmony_ci 191cb0ef41Sopenharmony_ci{ 201cb0ef41Sopenharmony_ci const expectedError = { code: 'ERR_MISSING_ARGS', name: 'TypeError' }; 211cb0ef41Sopenharmony_ci assert.throws(() => domainToASCII(), expectedError); 221cb0ef41Sopenharmony_ci assert.throws(() => domainToUnicode(), expectedError); 231cb0ef41Sopenharmony_ci assert.strictEqual(domainToASCII(undefined), 'undefined'); 241cb0ef41Sopenharmony_ci assert.strictEqual(domainToUnicode(undefined), 'undefined'); 251cb0ef41Sopenharmony_ci} 261cb0ef41Sopenharmony_ci 271cb0ef41Sopenharmony_ci{ 281cb0ef41Sopenharmony_ci for (const [i, { ascii, unicode }] of tests.entries()) { 291cb0ef41Sopenharmony_ci assert.strictEqual(ascii, domainToASCII(unicode), 301cb0ef41Sopenharmony_ci `domainToASCII(${i + 1})`); 311cb0ef41Sopenharmony_ci assert.strictEqual(unicode, domainToUnicode(ascii), 321cb0ef41Sopenharmony_ci `domainToUnicode(${i + 1})`); 331cb0ef41Sopenharmony_ci assert.strictEqual(ascii, domainToASCII(domainToUnicode(ascii)), 341cb0ef41Sopenharmony_ci `domainToASCII(domainToUnicode(${i + 1}))`); 351cb0ef41Sopenharmony_ci assert.strictEqual(unicode, domainToUnicode(domainToASCII(unicode)), 361cb0ef41Sopenharmony_ci `domainToUnicode(domainToASCII(${i + 1}))`); 371cb0ef41Sopenharmony_ci } 381cb0ef41Sopenharmony_ci} 391cb0ef41Sopenharmony_ci 401cb0ef41Sopenharmony_ci{ 411cb0ef41Sopenharmony_ci for (const [i, test] of wptToASCIITests.entries()) { 421cb0ef41Sopenharmony_ci if (typeof test === 'string') 431cb0ef41Sopenharmony_ci continue; // skip comments 441cb0ef41Sopenharmony_ci const { comment, input, output } = test; 451cb0ef41Sopenharmony_ci let caseComment = `Case ${i + 1}`; 461cb0ef41Sopenharmony_ci if (comment) 471cb0ef41Sopenharmony_ci caseComment += ` (${comment})`; 481cb0ef41Sopenharmony_ci if (output === null) { 491cb0ef41Sopenharmony_ci assert.strictEqual(domainToASCII(input), '', caseComment); 501cb0ef41Sopenharmony_ci assert.strictEqual(domainToUnicode(input), '', caseComment); 511cb0ef41Sopenharmony_ci } else { 521cb0ef41Sopenharmony_ci assert.strictEqual(domainToASCII(input), output, caseComment); 531cb0ef41Sopenharmony_ci const roundtripped = domainToASCII(domainToUnicode(input)); 541cb0ef41Sopenharmony_ci assert.strictEqual(roundtripped, output, caseComment); 551cb0ef41Sopenharmony_ci } 561cb0ef41Sopenharmony_ci } 571cb0ef41Sopenharmony_ci} 58