You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					34 lines
				
				1.1 KiB
			
		
		
			
		
	
	
					34 lines
				
				1.1 KiB
			| 
								 
											4 years ago
										 
									 | 
							
								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';
							 | 
						||
| 
								 | 
							
								});
							 |