11cb0ef41Sopenharmony_citest(function() {
21cb0ef41Sopenharmony_ci    var params = new URLSearchParams('a=b&c=d');
31cb0ef41Sopenharmony_ci    params.delete('a');
41cb0ef41Sopenharmony_ci    assert_equals(params + '', 'c=d');
51cb0ef41Sopenharmony_ci    params = new URLSearchParams('a=a&b=b&a=a&c=c');
61cb0ef41Sopenharmony_ci    params.delete('a');
71cb0ef41Sopenharmony_ci    assert_equals(params + '', 'b=b&c=c');
81cb0ef41Sopenharmony_ci    params = new URLSearchParams('a=a&=&b=b&c=c');
91cb0ef41Sopenharmony_ci    params.delete('');
101cb0ef41Sopenharmony_ci    assert_equals(params + '', 'a=a&b=b&c=c');
111cb0ef41Sopenharmony_ci    params = new URLSearchParams('a=a&null=null&b=b');
121cb0ef41Sopenharmony_ci    params.delete(null);
131cb0ef41Sopenharmony_ci    assert_equals(params + '', 'a=a&b=b');
141cb0ef41Sopenharmony_ci    params = new URLSearchParams('a=a&undefined=undefined&b=b');
151cb0ef41Sopenharmony_ci    params.delete(undefined);
161cb0ef41Sopenharmony_ci    assert_equals(params + '', 'a=a&b=b');
171cb0ef41Sopenharmony_ci}, 'Delete basics');
181cb0ef41Sopenharmony_ci
191cb0ef41Sopenharmony_citest(function() {
201cb0ef41Sopenharmony_ci    var params = new URLSearchParams();
211cb0ef41Sopenharmony_ci    params.append('first', 1);
221cb0ef41Sopenharmony_ci    assert_true(params.has('first'), 'Search params object has name "first"');
231cb0ef41Sopenharmony_ci    assert_equals(params.get('first'), '1', 'Search params object has name "first" with value "1"');
241cb0ef41Sopenharmony_ci    params.delete('first');
251cb0ef41Sopenharmony_ci    assert_false(params.has('first'), 'Search params object has no "first" name');
261cb0ef41Sopenharmony_ci    params.append('first', 1);
271cb0ef41Sopenharmony_ci    params.append('first', 10);
281cb0ef41Sopenharmony_ci    params.delete('first');
291cb0ef41Sopenharmony_ci    assert_false(params.has('first'), 'Search params object has no "first" name');
301cb0ef41Sopenharmony_ci}, 'Deleting appended multiple');
311cb0ef41Sopenharmony_ci
321cb0ef41Sopenharmony_citest(function() {
331cb0ef41Sopenharmony_ci    var url = new URL('http://example.com/?param1&param2');
341cb0ef41Sopenharmony_ci    url.searchParams.delete('param1');
351cb0ef41Sopenharmony_ci    url.searchParams.delete('param2');
361cb0ef41Sopenharmony_ci    assert_equals(url.href, 'http://example.com/', 'url.href does not have ?');
371cb0ef41Sopenharmony_ci    assert_equals(url.search, '', 'url.search does not have ?');
381cb0ef41Sopenharmony_ci}, 'Deleting all params removes ? from URL');
391cb0ef41Sopenharmony_ci
401cb0ef41Sopenharmony_citest(function() {
411cb0ef41Sopenharmony_ci    var url = new URL('http://example.com/?');
421cb0ef41Sopenharmony_ci    url.searchParams.delete('param1');
431cb0ef41Sopenharmony_ci    assert_equals(url.href, 'http://example.com/', 'url.href does not have ?');
441cb0ef41Sopenharmony_ci    assert_equals(url.search, '', 'url.search does not have ?');
451cb0ef41Sopenharmony_ci}, 'Removing non-existent param removes ? from URL');
461cb0ef41Sopenharmony_ci
471cb0ef41Sopenharmony_citest(() => {
481cb0ef41Sopenharmony_ci  const url = new URL('data:space    ?test');
491cb0ef41Sopenharmony_ci  assert_true(url.searchParams.has('test'));
501cb0ef41Sopenharmony_ci  url.searchParams.delete('test');
511cb0ef41Sopenharmony_ci  assert_false(url.searchParams.has('test'));
521cb0ef41Sopenharmony_ci  assert_equals(url.search, '');
531cb0ef41Sopenharmony_ci  assert_equals(url.pathname, 'space');
541cb0ef41Sopenharmony_ci  assert_equals(url.href, 'data:space');
551cb0ef41Sopenharmony_ci}, 'Changing the query of a URL with an opaque path can impact the path');
561cb0ef41Sopenharmony_ci
571cb0ef41Sopenharmony_citest(() => {
581cb0ef41Sopenharmony_ci  const url = new URL('data:space    ?test#test');
591cb0ef41Sopenharmony_ci  url.searchParams.delete('test');
601cb0ef41Sopenharmony_ci  assert_equals(url.search, '');
611cb0ef41Sopenharmony_ci  assert_equals(url.pathname, 'space    ');
621cb0ef41Sopenharmony_ci  assert_equals(url.href, 'data:space    #test');
631cb0ef41Sopenharmony_ci}, 'Changing the query of a URL with an opaque path can impact the path if the URL has no fragment');
641cb0ef41Sopenharmony_ci
651cb0ef41Sopenharmony_citest(() => {
661cb0ef41Sopenharmony_ci  const params = new URLSearchParams();
671cb0ef41Sopenharmony_ci  params.append('a', 'b');
681cb0ef41Sopenharmony_ci  params.append('a', 'c');
691cb0ef41Sopenharmony_ci  params.append('a', 'd');
701cb0ef41Sopenharmony_ci  params.delete('a', 'c');
711cb0ef41Sopenharmony_ci  assert_equals(params.toString(), 'a=b&a=d');
721cb0ef41Sopenharmony_ci}, "Two-argument delete()");
73