@@ -4,7 +4,8 @@ const common = require('../common');
44const assert = require ( 'assert' ) ;
55const URLSearchParams = require ( 'url' ) . URLSearchParams ;
66const {
7- test, assert_equals, assert_true, assert_false
7+ test, assert_equals, assert_true,
8+ assert_false, assert_throws, assert_array_equals
89} = common . WPT ;
910
1011/* eslint-disable */
@@ -40,10 +41,10 @@ test(() => {
4041 assert_equals ( params . __proto__ , URLSearchParams . prototype , 'expected URLSearchParams.prototype as prototype.' ) ;
4142} , "URLSearchParams constructor, empty string as argument" )
4243
43- // test(() => {
44- // params = new URLSearchParams({});
45- // assert_equals(params + '', "");
46- // }, 'URLSearchParams constructor, {} as argument');
44+ test ( ( ) => {
45+ params = new URLSearchParams ( { } ) ;
46+ assert_equals ( params + '' , "" ) ;
47+ } , 'URLSearchParams constructor, {} as argument' ) ;
4748
4849test ( function ( ) {
4950 var params = new URLSearchParams ( 'a=b' ) ;
@@ -142,39 +143,39 @@ test(function() {
142143 assert_equals ( params . get ( 'a\uD83D\uDCA9b' ) , 'c' ) ;
143144} , 'Parse %f0%9f%92%a9' ) ; // Unicode Character 'PILE OF POO' (U+1F4A9)
144145
145- // test(function() {
146- // var params = new URLSearchParams([]);
147- // assert_true(params != null, 'constructor returned non-null value.');
148- // params = new URLSearchParams([['a', 'b'], ['c', 'd']]);
149- // assert_equals(params.get("a"), "b");
150- // assert_equals(params.get("c"), "d");
151- // assert_throws(new TypeError(), function() { new URLSearchParams([[1]]); });
152- // assert_throws(new TypeError(), function() { new URLSearchParams([[1,2,3]]); });
153- // }, "Constructor with sequence of sequences of strings");
154-
155- // [
146+ test ( function ( ) {
147+ var params = new URLSearchParams ( [ ] ) ;
148+ assert_true ( params != null , 'constructor returned non-null value.' ) ;
149+ params = new URLSearchParams ( [ [ 'a' , 'b' ] , [ 'c' , 'd' ] ] ) ;
150+ assert_equals ( params . get ( "a" ) , "b" ) ;
151+ assert_equals ( params . get ( "c" ) , "d" ) ;
152+ assert_throws ( new TypeError ( ) , function ( ) { new URLSearchParams ( [ [ 1 ] ] ) ; } ) ;
153+ assert_throws ( new TypeError ( ) , function ( ) { new URLSearchParams ( [ [ 1 , 2 , 3 ] ] ) ; } ) ;
154+ } , "Constructor with sequence of sequences of strings" ) ;
155+
156+ [
156157// { "input": {"+": "%C2"}, "output": [[" ", "\uFFFD"]], "name": "object with +" },
157- // { "input": {c: "x", a: "?"}, "output": [["c", "x"], ["a", "?"]], "name": "object with two keys" },
158- // { "input": [["c", "x"], ["a", "?"]], "output": [["c", "x"], ["a", "?"]], "name": "array with two keys" }
159- // ].forEach((val) => {
160- // test(() => {
161- // let params = new URLSearchParams(val.input),
162- // i = 0
163- // for (let param of params) {
164- // assert_array_equals(param, val.output[i])
165- // i++
166- // }
167- // }, "Construct with " + val.name)
168- // })
158+ { "input" : { c : "x" , a : "?" } , "output" : [ [ "c" , "x" ] , [ "a" , "?" ] ] , "name" : "object with two keys" } ,
159+ { "input" : [ [ "c" , "x" ] , [ "a" , "?" ] ] , "output" : [ [ "c" , "x" ] , [ "a" , "?" ] ] , "name" : "array with two keys" }
160+ ] . forEach ( ( val ) => {
161+ test ( ( ) => {
162+ let params = new URLSearchParams ( val . input ) ,
163+ i = 0
164+ for ( let param of params ) {
165+ assert_array_equals ( param , val . output [ i ] )
166+ i ++
167+ }
168+ } , "Construct with " + val . name )
169+ } )
169170
170- // test(() => {
171- // params = new URLSearchParams()
172- // params[Symbol.iterator] = function *() {
173- // yield ["a", "b"]
174- // }
175- // let params2 = new URLSearchParams(params)
176- // assert_equals(params2.get("a"), "b")
177- // }, "Custom [Symbol.iterator]")
171+ test ( ( ) => {
172+ params = new URLSearchParams ( )
173+ params [ Symbol . iterator ] = function * ( ) {
174+ yield [ "a" , "b" ]
175+ }
176+ let params2 = new URLSearchParams ( params )
177+ assert_equals ( params2 . get ( "a" ) , "b" )
178+ } , "Custom [Symbol.iterator]" )
178179/* eslint-enable */
179180
180181// Tests below are not from WPT.
@@ -192,5 +193,17 @@ test(function() {
192193 params = new URLSearchParams ( undefined ) ;
193194 assert . strictEqual ( params . toString ( ) , '' ) ;
194195 params = new URLSearchParams ( null ) ;
195- assert . strictEqual ( params . toString ( ) , 'null=' ) ;
196+ assert . strictEqual ( params . toString ( ) , '' ) ;
197+ assert . throws ( ( ) => new URLSearchParams ( [ [ 1 ] ] ) ,
198+ / ^ T y p e E r r o r : E a c h q u e r y p a i r m u s t b e a n a m e \/ v a l u e t u p l e $ / ) ;
199+ assert . throws ( ( ) => new URLSearchParams ( [ [ 1 , 2 , 3 ] ] ) ,
200+ / ^ T y p e E r r o r : E a c h q u e r y p a i r m u s t b e a n a m e \/ v a l u e t u p l e $ / ) ;
201+ assert . throws ( ( ) => new URLSearchParams ( { [ Symbol . iterator ] : 42 } ) ,
202+ / ^ T y p e E r r o r : Q u e r y p a i r s m u s t b e i t e r a b l e $ / ) ;
203+ assert . throws ( ( ) => new URLSearchParams ( [ { } ] ) ,
204+ / ^ T y p e E r r o r : E a c h q u e r y p a i r m u s t b e i t e r a b l e $ / ) ;
205+ assert . throws ( ( ) => new URLSearchParams ( [ 'a' ] ) ,
206+ / ^ T y p e E r r o r : E a c h q u e r y p a i r m u s t b e i t e r a b l e $ / ) ;
207+ assert . throws ( ( ) => new URLSearchParams ( [ { [ Symbol . iterator ] : 42 } ] ) ,
208+ / ^ T y p e E r r o r : E a c h q u e r y p a i r m u s t b e i t e r a b l e $ / ) ;
196209}
0 commit comments