11cb0ef41Sopenharmony_citest(function() { 21cb0ef41Sopenharmony_ci var params = new URLSearchParams('a=1&b=2&c=3'); 31cb0ef41Sopenharmony_ci var keys = []; 41cb0ef41Sopenharmony_ci var values = []; 51cb0ef41Sopenharmony_ci params.forEach(function(value, key) { 61cb0ef41Sopenharmony_ci keys.push(key); 71cb0ef41Sopenharmony_ci values.push(value); 81cb0ef41Sopenharmony_ci }); 91cb0ef41Sopenharmony_ci assert_array_equals(keys, ['a', 'b', 'c']); 101cb0ef41Sopenharmony_ci assert_array_equals(values, ['1', '2', '3']); 111cb0ef41Sopenharmony_ci}, "ForEach Check"); 121cb0ef41Sopenharmony_ci 131cb0ef41Sopenharmony_citest(function() { 141cb0ef41Sopenharmony_ci let a = new URL("http://a.b/c?a=1&b=2&c=3&d=4"); 151cb0ef41Sopenharmony_ci let b = a.searchParams; 161cb0ef41Sopenharmony_ci var c = []; 171cb0ef41Sopenharmony_ci for (const i of b) { 181cb0ef41Sopenharmony_ci a.search = "x=1&y=2&z=3"; 191cb0ef41Sopenharmony_ci c.push(i); 201cb0ef41Sopenharmony_ci } 211cb0ef41Sopenharmony_ci assert_array_equals(c[0], ["a","1"]); 221cb0ef41Sopenharmony_ci assert_array_equals(c[1], ["y","2"]); 231cb0ef41Sopenharmony_ci assert_array_equals(c[2], ["z","3"]); 241cb0ef41Sopenharmony_ci}, "For-of Check"); 251cb0ef41Sopenharmony_ci 261cb0ef41Sopenharmony_citest(function() { 271cb0ef41Sopenharmony_ci let a = new URL("http://a.b/c"); 281cb0ef41Sopenharmony_ci let b = a.searchParams; 291cb0ef41Sopenharmony_ci for (const i of b) { 301cb0ef41Sopenharmony_ci assert_unreached(i); 311cb0ef41Sopenharmony_ci } 321cb0ef41Sopenharmony_ci}, "empty"); 331cb0ef41Sopenharmony_ci 341cb0ef41Sopenharmony_citest(function() { 351cb0ef41Sopenharmony_ci const url = new URL("http://localhost/query?param0=0¶m1=1¶m2=2"); 361cb0ef41Sopenharmony_ci const searchParams = url.searchParams; 371cb0ef41Sopenharmony_ci const seen = []; 381cb0ef41Sopenharmony_ci for (const param of searchParams) { 391cb0ef41Sopenharmony_ci if (param[0] === 'param0') { 401cb0ef41Sopenharmony_ci searchParams.delete('param1'); 411cb0ef41Sopenharmony_ci } 421cb0ef41Sopenharmony_ci seen.push(param); 431cb0ef41Sopenharmony_ci } 441cb0ef41Sopenharmony_ci 451cb0ef41Sopenharmony_ci assert_array_equals(seen[0], ["param0", "0"]); 461cb0ef41Sopenharmony_ci assert_array_equals(seen[1], ["param2", "2"]); 471cb0ef41Sopenharmony_ci}, "delete next param during iteration"); 481cb0ef41Sopenharmony_ci 491cb0ef41Sopenharmony_citest(function() { 501cb0ef41Sopenharmony_ci const url = new URL("http://localhost/query?param0=0¶m1=1¶m2=2"); 511cb0ef41Sopenharmony_ci const searchParams = url.searchParams; 521cb0ef41Sopenharmony_ci const seen = []; 531cb0ef41Sopenharmony_ci for (const param of searchParams) { 541cb0ef41Sopenharmony_ci if (param[0] === 'param0') { 551cb0ef41Sopenharmony_ci searchParams.delete('param0'); 561cb0ef41Sopenharmony_ci // 'param1=1' is now in the first slot, so the next iteration will see 'param2=2'. 571cb0ef41Sopenharmony_ci } else { 581cb0ef41Sopenharmony_ci seen.push(param); 591cb0ef41Sopenharmony_ci } 601cb0ef41Sopenharmony_ci } 611cb0ef41Sopenharmony_ci 621cb0ef41Sopenharmony_ci assert_array_equals(seen[0], ["param2", "2"]); 631cb0ef41Sopenharmony_ci}, "delete current param during iteration"); 641cb0ef41Sopenharmony_ci 651cb0ef41Sopenharmony_citest(function() { 661cb0ef41Sopenharmony_ci const url = new URL("http://localhost/query?param0=0¶m1=1¶m2=2"); 671cb0ef41Sopenharmony_ci const searchParams = url.searchParams; 681cb0ef41Sopenharmony_ci const seen = []; 691cb0ef41Sopenharmony_ci for (const param of searchParams) { 701cb0ef41Sopenharmony_ci seen.push(param[0]); 711cb0ef41Sopenharmony_ci searchParams.delete(param[0]); 721cb0ef41Sopenharmony_ci } 731cb0ef41Sopenharmony_ci 741cb0ef41Sopenharmony_ci assert_array_equals(seen, ["param0", "param2"], "param1 should not have been seen by the loop"); 751cb0ef41Sopenharmony_ci assert_equals(String(searchParams), "param1=1", "param1 should remain"); 761cb0ef41Sopenharmony_ci}, "delete every param seen during iteration"); 77