diff options
Diffstat (limited to '')
-rw-r--r-- | js/src/tests/non262/Tuple/prototype/length/length-getter.js | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/js/src/tests/non262/Tuple/prototype/length/length-getter.js b/js/src/tests/non262/Tuple/prototype/length/length-getter.js new file mode 100644 index 0000000000..7d07c152e3 --- /dev/null +++ b/js/src/tests/non262/Tuple/prototype/length/length-getter.js @@ -0,0 +1,42 @@ +// |reftest| skip-if(!this.hasOwnProperty("Tuple")) +/*--- +esid: sec-get-%tuple%.prototype.length +description: > +info: | + get %Tuple%.prototype.length + +Tuple.prototype.length is an accessor property whose set accessor function is undefined. Its get accessor function performs the following steps: + +1. Let T be ? thisTupleValue(this value). +2. Let size be the length of T.[[Sequence]]. +3. Return size. + +features: [Tuple] +---*/ + +/* Section 8.2.3.2 */ + +let TuplePrototype = Tuple.prototype; +let desc = Object.getOwnPropertyDescriptor(TuplePrototype, "length"); + +assertEq(typeof desc.get, "function"); + +assertEq(desc.enumerable, false); +assertEq(desc.configurable, true); + +assertEq(desc.set, undefined); + +let values = [[#[1,2,3], 3], [#[1], 1], [#[], 0]]; + +for (pair of values) { + let tup = pair[0]; + let len = pair[1]; + assertEq(desc.get.call(tup), len); + assertEq(desc.get.call(Object(tup)), len); + assertEq(tup["length"], len); +} + +assertThrowsInstanceOf(() => desc.get.call("monkeys"), TypeError, "get length method called on incompatible string"); +assertThrowsInstanceOf(() => desc.get.call(new Object()), TypeError, "get length method called on incompatible Object"); + +reportCompare(0, 0); |