headers-combine.any.js (2299B)
1 // META: title=Headers have combined (and sorted) values 2 // META: global=window,worker 3 4 "use strict"; 5 6 var headerSeqCombine = [["single", "singleValue"], 7 ["double", "doubleValue1"], 8 ["double", "doubleValue2"], 9 ["triple", "tripleValue1"], 10 ["triple", "tripleValue2"], 11 ["triple", "tripleValue3"] 12 ]; 13 var expectedDict = {"single": "singleValue", 14 "double": "doubleValue1, doubleValue2", 15 "triple": "tripleValue1, tripleValue2, tripleValue3" 16 }; 17 18 test(function() { 19 var headers = new Headers(headerSeqCombine); 20 for (const name in expectedDict) 21 assert_equals(headers.get(name), expectedDict[name]); 22 }, "Create headers using same name for different values"); 23 24 test(function() { 25 var headers = new Headers(headerSeqCombine); 26 for (const name in expectedDict) { 27 assert_true(headers.has(name), "name: " + name + " has value(s)"); 28 headers.delete(name); 29 assert_false(headers.has(name), "name: " + name + " has no value(s) anymore"); 30 } 31 }, "Check delete and has methods when using same name for different values"); 32 33 test(function() { 34 var headers = new Headers(headerSeqCombine); 35 for (const name in expectedDict) { 36 headers.set(name,"newSingleValue"); 37 assert_equals(headers.get(name), "newSingleValue", "name: " + name + " has value: newSingleValue"); 38 } 39 }, "Check set methods when called with already used name"); 40 41 test(function() { 42 var headers = new Headers(headerSeqCombine); 43 for (const name in expectedDict) { 44 var value = headers.get(name); 45 headers.append(name,"newSingleValue"); 46 assert_equals(headers.get(name), (value + ", " + "newSingleValue")); 47 } 48 }, "Check append methods when called with already used name"); 49 50 test(() => { 51 const headers = new Headers([["1", "a"],["1", "b"]]); 52 for(let header of headers) { 53 assert_array_equals(header, ["1", "a, b"]); 54 } 55 }, "Iterate combined values"); 56 57 test(() => { 58 const headers = new Headers([["2", "a"], ["1", "b"], ["2", "b"]]), 59 expected = [["1", "b"], ["2", "a, b"]]; 60 let i = 0; 61 for(let header of headers) { 62 assert_array_equals(header, expected[i]); 63 i++; 64 } 65 assert_equals(i, 2); 66 }, "Iterate combined values in sorted order")