| var fails = require('../internals/fails'); |
| var wellKnownSymbol = require('../internals/well-known-symbol'); |
| var IS_PURE = require('../internals/is-pure'); |
| |
| var ITERATOR = wellKnownSymbol('iterator'); |
| |
| module.exports = !fails(function () { |
| var url = new URL('b?a=1&b=2&c=3', 'http://a'); |
| var searchParams = url.searchParams; |
| var result = ''; |
| url.pathname = 'c%20d'; |
| searchParams.forEach(function (value, key) { |
| searchParams['delete']('b'); |
| result += key + value; |
| }); |
| return (IS_PURE && !url.toJSON) |
| || !searchParams.sort |
| || url.href !== 'http://a/c%20d?a=1&c=3' |
| || searchParams.get('c') !== '3' |
| || String(new URLSearchParams('?a=1')) !== 'a=1' |
| || !searchParams[ITERATOR] |
| // throws in Edge |
| || new URL('https://a@b').username !== 'a' |
| || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b' |
| // not punycoded in Edge |
| || new URL('http://тест').host !== 'xn--e1aybc' |
| // not escaped in Chrome 62- |
| || new URL('http://a#б').hash !== '#%D0%B1' |
| // fails in Chrome 66- |
| || result !== 'a1c3' |
| // throws in Safari |
| || new URL('http://x', undefined).host !== 'x'; |
| }); |