DOMTokenList-iteration.html (2739B)
1 <!doctype html> 2 <meta charset=utf-8> 3 <title>DOMTokenList iteration: keys, values, etc.</title> 4 <script src=/resources/testharness.js></script> 5 <script src=/resources/testharnessreport.js></script> 6 <span class=" a a b "></span> 7 <script> 8 test(() => { 9 var list = document.querySelector("span").classList; 10 assert_array_equals([...list], ["a", "b"]); 11 }, "classList"); 12 13 test(() => { 14 var keys = document.querySelector("span").classList.keys(); 15 assert_false(keys instanceof Array, "must not be Array"); 16 keys = [...keys]; 17 assert_array_equals(keys, [0, 1]); 18 }, "classList.keys"); 19 20 test(() => { 21 var values = document.querySelector("span").classList.values(); 22 assert_false(values instanceof Array, "must not be Array"); 23 values = [...values]; 24 assert_array_equals(values, ["a", "b"]); 25 }, "classList.values"); 26 27 test(() => { 28 var entries = document.querySelector("span").classList.entries(); 29 assert_false(entries instanceof Array, "must not be Array"); 30 entries = [...entries]; 31 var keys = [...document.querySelector("span").classList.keys()]; 32 var values = [...document.querySelector("span").classList.values()]; 33 assert_equals(entries.length, keys.length, "entries.length == keys.length"); 34 assert_equals(entries.length, values.length, 35 "entries.length == values.length"); 36 for (var i = 0; i < entries.length; ++i) { 37 assert_array_equals(entries[i], [keys[i], values[i]], 38 "entries[" + i + "]"); 39 } 40 }, "classList.entries"); 41 42 test(() => { 43 var list = document.querySelector("span").classList; 44 var values = [...list.values()]; 45 var keys = [...list.keys()]; 46 var entries = [...list.entries()]; 47 48 var cur = 0; 49 var thisObj = {}; 50 list.forEach(function(value, key, listObj) { 51 assert_equals(listObj, list, "Entry " + cur + " listObj"); 52 assert_equals(this, thisObj, "Entry " + cur + " this"); 53 assert_equals(value, values[cur], "Entry " + cur + " value"); 54 assert_equals(key, keys[cur], "Entry " + cur + " key"); 55 cur++; 56 }, thisObj); 57 assert_equals(cur, entries.length, "length"); 58 }, "classList.forEach"); 59 60 test(() => { 61 var list = document.querySelector("span").classList; 62 assert_equals(list[Symbol.iterator], Array.prototype[Symbol.iterator], 63 "[Symbol.iterator]"); 64 assert_equals(list.keys, Array.prototype.keys, ".keys"); 65 if (Array.prototype.values) { 66 assert_equals(list.values, Array.prototype.values, ".values"); 67 } 68 assert_equals(list.entries, Array.prototype.entries, ".entries"); 69 assert_equals(list.forEach, Array.prototype.forEach, ".forEach"); 70 }, "classList inheritance from Array.prototype"); 71 </script>