Set-surfaces-1.js (1554B)
1 // Set surfaces 2 3 load(libdir + "iteration.js"); 4 5 var desc = Object.getOwnPropertyDescriptor(this, "Set"); 6 assertEq(desc.enumerable, false); 7 assertEq(desc.configurable, true); 8 assertEq(desc.writable, true); 9 10 assertEq(typeof Set, 'function'); 11 assertEq(Object.keys(Set).length, 0); 12 assertEq(Set.length, 0); 13 assertEq(Set.name, "Set"); 14 15 assertEq(Object.getPrototypeOf(Set.prototype), Object.prototype); 16 assertEq(Object.prototype.toString.call(Set.prototype), "[object Set]"); 17 assertEq(Object.prototype.toString.call(new Set()), "[object Set]"); 18 assertEq(Object.keys(Set.prototype).join(), ""); 19 assertEq(Set.prototype.constructor, Set); 20 21 function checkMethod(name, arity) { 22 var desc = Object.getOwnPropertyDescriptor(Set.prototype, name); 23 assertEq(desc.enumerable, false); 24 assertEq(desc.configurable, true); 25 assertEq(desc.writable, true); 26 assertEq(typeof desc.value, 'function'); 27 assertEq(desc.value.name, name); 28 assertEq(desc.value.length, arity); 29 } 30 31 checkMethod("has", 1); 32 checkMethod("add", 1); 33 checkMethod("delete", 1); 34 checkMethod("values", 0); 35 checkMethod("entries", 0); 36 37 var desc = Object.getOwnPropertyDescriptor(Set.prototype, "size"); 38 assertEq(desc.enumerable, false); 39 assertEq(desc.configurable, true); 40 assertEq(typeof desc.get, 'function'); 41 assertEq(desc.get.length, 0); 42 assertEq(desc.set, undefined); 43 checkMethod("clear", 0); 44 45 // Set.prototype.keys, .values, and .iterator are the same function object 46 assertEq(Set.prototype.keys, Set.prototype.values); 47 assertEq(Set.prototype[Symbol.iterator], Set.prototype.values);