%PDF- <> %âãÏÓ endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 28 0 R 29 0 R] /MediaBox[ 0 0 595.5 842.25] /Contents 4 0 R/Group<>/Tabs/S>> endobj ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<> endobj 2 0 obj<>endobj 2 0 obj<>es 3 0 R>> endobj 2 0 obj<> ox[ 0.000000 0.000000 609.600000 935.600000]/Fi endobj 3 0 obj<> endobj 7 1 obj<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Subtype/Form>> stream
'use strict'; // Tests below are not from WPT. require('../common'); const assert = require('assert'); function makeIterableFunc(array) { return Object.assign(() => {}, { [Symbol.iterator]() { return array[Symbol.iterator](); } }); } { const iterableError = { code: 'ERR_ARG_NOT_ITERABLE', name: 'TypeError', message: 'Query pairs must be iterable' }; const tupleError = { code: 'ERR_INVALID_TUPLE', name: 'TypeError', message: 'Each query pair must be an iterable [name, value] tuple' }; let params; params = new URLSearchParams(undefined); assert.strictEqual(params.toString(), ''); params = new URLSearchParams(null); assert.strictEqual(params.toString(), ''); params = new URLSearchParams( makeIterableFunc([['key', 'val'], ['key2', 'val2']]) ); assert.strictEqual(params.toString(), 'key=val&key2=val2'); params = new URLSearchParams( makeIterableFunc([['key', 'val'], ['key2', 'val2']].map(makeIterableFunc)) ); assert.strictEqual(params.toString(), 'key=val&key2=val2'); assert.throws(() => new URLSearchParams([[1]]), tupleError); assert.throws(() => new URLSearchParams([[1, 2, 3]]), tupleError); assert.throws(() => new URLSearchParams({ [Symbol.iterator]: 42 }), iterableError); assert.throws(() => new URLSearchParams([{}]), tupleError); assert.throws(() => new URLSearchParams(['a']), tupleError); assert.throws(() => new URLSearchParams([null]), tupleError); assert.throws(() => new URLSearchParams([{ [Symbol.iterator]: 42 }]), tupleError); } { const obj = { toString() { throw new Error('toString'); }, valueOf() { throw new Error('valueOf'); } }; const sym = Symbol(); const toStringError = /^Error: toString$/; const symbolError = /^TypeError: Cannot convert a Symbol value to a string$/; assert.throws(() => new URLSearchParams({ a: obj }), toStringError); assert.throws(() => new URLSearchParams([['a', obj]]), toStringError); assert.throws(() => new URLSearchParams(sym), symbolError); assert.throws(() => new URLSearchParams({ [sym]: 'a' }), symbolError); assert.throws(() => new URLSearchParams({ a: sym }), symbolError); assert.throws(() => new URLSearchParams([[sym, 'a']]), symbolError); assert.throws(() => new URLSearchParams([['a', sym]]), symbolError); }