@@ -70,6 +70,8 @@ public static function provideResolveUrl(): array
70
70
[self ::RFC3986_BASE , '/g ' , 'http://a/g ' ],
71
71
[self ::RFC3986_BASE , '//g ' , 'http://g/ ' ],
72
72
[self ::RFC3986_BASE , '?y ' , 'http://a/b/c/d;p?y ' ],
73
+ [self ::RFC3986_BASE , '?y={"f":1} ' , 'http://a/b/c/d;p?y={%22f%22:1} ' ],
74
+ [self ::RFC3986_BASE , 'g{oof}y ' , 'http://a/b/c/g{oof}y ' ],
73
75
[self ::RFC3986_BASE , 'g?y ' , 'http://a/b/c/g?y ' ],
74
76
[self ::RFC3986_BASE , '#s ' , 'http://a/b/c/d;p?q#s ' ],
75
77
[self ::RFC3986_BASE , 'g#s ' , 'http://a/b/c/g#s ' ],
@@ -154,10 +156,11 @@ public static function provideParseUrl(): iterable
154
156
yield [['https: ' , '//xn--dj-kia8a.example.com:8000 ' , '/ ' , null , null ], 'https://DÉjà.Example.com:8000/ ' ];
155
157
yield [[null , null , '/f%20o.o ' , '?a=b ' , '#c ' ], '/f o%2Eo?a=b#c ' ];
156
158
yield [[null , '//a:b@foo ' , '/bar ' , null , null ], '//a:b@foo/bar ' ];
159
+ yield [[null , '//a:b@foo ' , '/b{} ' , null , null ], '//a:b@foo/b{} ' ];
157
160
yield [['http: ' , null , null , null , null ], 'http: ' ];
158
161
yield [['http: ' , null , 'bar ' , null , null ], 'http:bar ' ];
159
162
yield [[null , null , 'bar ' , '?a=1&c=c ' , null ], 'bar?a=a&b=b ' , ['b ' => null , 'c ' => 'c ' , 'a ' => 1 ]];
160
- yield [[null , null , 'bar ' , '?a=b+c&b=b-._~!$%26/%27()[]*%2B%2C;%3D:@%25 \\^`{|} ' , null ], 'bar?a=b+c ' , ['b ' => 'b-._~!$&/ \'()[]*+,;=:@% \\^`{|} ' ]];
163
+ yield [[null , null , 'bar ' , '?a=b+c&b=b-._~!$%26/%27()[]*%2B%2C;%3D:@%25 \\^`%7B|%7D ' , null ], 'bar?a=b+c ' , ['b ' => 'b-._~!$&/ \'()[]*+,;=:@% \\^`{|} ' ]];
161
164
yield [[null , null , 'bar ' , '?a=b%2B%20c ' , null ], 'bar?a=b+c ' , ['a ' => 'b+ c ' ]];
162
165
yield [[null , null , 'bar ' , '?a[b]=c ' , null ], 'bar ' , ['a ' => ['b ' => 'c ' ]]];
163
166
yield [[null , null , 'bar ' , '?a[b[c]=d ' , null ], 'bar?a[b[c]=d ' , []];
0 commit comments