Add tests for %TypedArray%.prototype get methods

Includes buffer, byteLength, byteOffset, length, and @@toStringTag
This commit is contained in:
Leonardo Balter 2016-02-22 13:44:39 -05:00 committed by Gorkem Yakin
parent 6c56658974
commit 02cdfacd31
19 changed files with 610 additions and 0 deletions

View File

@ -0,0 +1,21 @@
// Copyright (C) 2016 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-get-%typedarray%.prototype-@@tostringtag
description: |
Return value from the [[TypedArrayName]] internal slot
info: >
22.2.3.32 get %TypedArray%.prototype [ @@toStringTag ]
...
4. Let name be the value of O's [[TypedArrayName]] internal slot.
5. Assert: name is a String value.
6. Return name.
includes: [testTypedArray.js]
features: [Symbol.toStringTag]
---*/
testWithTypedArrayConstructors(function(TA) {
var ta = new TA();
assert.sameValue(ta[Symbol.toStringTag], TA.name, "property value");
});

View File

@ -0,0 +1,29 @@
// Copyright (C) 2016 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-get-%typedarray%.prototype-@@tostringtag
description: >
Return undefined when `this` does not have a [[TypedArrayName]] internal slot
info: >
22.2.3.32 get %TypedArray%.prototype [ @@toStringTag ]
1. Let O be the this value.
...
3. If O does not have a [[TypedArrayName]] internal slot, return undefined.
...
includes: [testTypedArray.js]
features: [Symbol.toStringTag, DataView]
---*/
var TypedArrayPrototype = TypedArray.prototype;
var getter = Object.getOwnPropertyDescriptor(
TypedArrayPrototype, Symbol.toStringTag
).get;
assert.sameValue(getter.call({}), undefined);
assert.sameValue(getter.call([]), undefined);
assert.sameValue(getter.call(new ArrayBuffer(8)), undefined);
var ab = new ArrayBuffer(8);
var dv = new DataView(ab, 0, 1);
assert.sameValue(getter.call(dv), undefined);

View File

@ -0,0 +1,27 @@
// Copyright (C) 2016 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-get-%typedarray%.prototype-@@tostringtag
description: Return undefined when `this` is not Object
info: >
22.2.3.32 get %TypedArray%.prototype [ @@toStringTag ]
1. Let O be the this value.
2. If Type(O) is not Object, return undefined.
...
includes: [testTypedArray.js]
features: [Symbol, Symbol.toStringTag]
---*/
var TypedArrayPrototype = TypedArray.prototype;
var getter = Object.getOwnPropertyDescriptor(
TypedArrayPrototype, Symbol.toStringTag
).get;
assert.sameValue(getter.call(undefined), undefined, "this is undefined");
assert.sameValue(getter.call(42), undefined, "this is 42");
assert.sameValue(getter.call("foo"), undefined, "this is a string");
assert.sameValue(getter.call(true), undefined, "this is true");
assert.sameValue(getter.call(false), undefined, "this is false");
assert.sameValue(getter.call(Symbol("s")), undefined, "this is a Symbol");
assert.sameValue(getter.call(null), undefined, "this is null");

View File

@ -0,0 +1,21 @@
// Copyright (C) 2016 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
es6id: 22.2.3.1
description: |
Return buffer from [[ViewedArrayBuffer]] internal slot
info: >
22.2.3.1 get %TypedArray%.prototype.buffer
...
4. Let buffer be the value of O's [[ViewedArrayBuffer]] internal slot.
5. Return buffer.
includes: [testTypedArray.js]
---*/
testWithTypedArrayConstructors(function(TA) {
var buffer = new ArrayBuffer(TA.BYTES_PER_ELEMENT);
var ta = new TA(buffer);
assert.sameValue(ta.buffer, buffer);
});

View File

@ -0,0 +1,24 @@
// Copyright (C) 2016 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
es6id: 22.2.3.1
description: |
Return buffer from DataView's instance [[ViewedArrayBuffer]] internal slot
info: >
22.2.3.1 get %TypedArray%.prototype.buffer
...
4. Let buffer be the value of O's [[ViewedArrayBuffer]] internal slot.
5. Return buffer.
includes: [testTypedArray.js]
features: [DataView]
---*/
var getter = Object.getOwnPropertyDescriptor(
TypedArray.prototype, "buffer"
).get;
var buffer = new ArrayBuffer(8);
var dv = new DataView(buffer, 0);
assert.sameValue(getter.call(dv), buffer);

View File

@ -0,0 +1,35 @@
// Copyright (C) 2016 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
es6id: 22.2.3.1
description: |
Throws a TypeError exception when `this` does not have a [[ViewedArrayBuffer]]
internal slot
info: >
22.2.3.1 get %TypedArray%.prototype.buffer
1. Let O be the this value.
2. If Type(O) is not Object, throw a TypeError exception.
3. If O does not have a [[ViewedArrayBuffer]] internal slot, throw a TypeError
exception.
...
includes: [testTypedArray.js]
---*/
var TypedArrayPrototype = TypedArray.prototype;
var getter = Object.getOwnPropertyDescriptor(
TypedArrayPrototype, "buffer"
).get;
assert.throws(TypeError, function() {
getter.call({});
});
assert.throws(TypeError, function() {
getter.call([]);
});
var ab = new ArrayBuffer(8);
assert.throws(TypeError, function() {
getter.call(ab);
});

View File

@ -0,0 +1,48 @@
// Copyright (C) 2016 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
es6id: 22.2.3.1
description: Throws a TypeError exception when `this` is not Object
info: >
22.2.3.1 get %TypedArray%.prototype.buffer
1. Let O be the this value.
2. If Type(O) is not Object, throw a TypeError exception.
...
includes: [testTypedArray.js]
features: [Symbol]
---*/
var TypedArrayPrototype = TypedArray.prototype;
var getter = Object.getOwnPropertyDescriptor(
TypedArrayPrototype, "buffer"
).get;
assert.throws(TypeError, function() {
getter.call(undefined);
}, "this is undefined");
assert.throws(TypeError, function() {
getter.call(null);
}, "this is null");
assert.throws(TypeError, function() {
getter.call(42);
}, "this is 42");
assert.throws(TypeError, function() {
getter.call("1");
}, "this is a string");
assert.throws(TypeError, function() {
getter.call(true);
}, "this is true");
assert.throws(TypeError, function() {
getter.call(false);
}, "this is false");
var s = Symbol("s");
assert.throws(TypeError, function() {
getter.call(s);
}, "this is a Symbol");

View File

@ -0,0 +1,23 @@
// Copyright (C) 2016 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
es6id: 22.2.3.2
description: |
Return value from [[ByteLength]] internal slot
info: >
22.2.3.2 get %TypedArray%.prototype.byteLength
...
6. Let size be the value of O's [[ByteLength]] internal slot.
7. Return size.
includes: [testTypedArray.js]
---*/
testWithTypedArrayConstructors(function(TA) {
var bytesPerElement = TA.BYTES_PER_ELEMENT;
var ta1 = new TA();
assert.sameValue(ta1.byteLength, 0);
var ta2 = new TA(42);
assert.sameValue(ta2.byteLength, 42 * bytesPerElement);
});

View File

@ -0,0 +1,24 @@
// Copyright (C) 2016 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
es6id: 22.2.3.2
description: |
Return buffer from DataView's instance [[ViewedArrayBuffer]] internal slot
info: >
22.2.3.2 get %TypedArray%.prototype.byteLength
...
6. Let size be the value of O's [[ByteLength]] internal slot.
7. Return size.
includes: [testTypedArray.js]
features: [DataView]
---*/
var getter = Object.getOwnPropertyDescriptor(
TypedArray.prototype, "byteLength"
).get;
var buffer = new ArrayBuffer(64);
var dv = new DataView(buffer, 0);
assert.sameValue(getter.call(dv), 64);

View File

@ -0,0 +1,35 @@
// Copyright (C) 2016 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
es6id: 22.2.3.2
description: |
Throws a TypeError exception when `this` does not have a [[ViewedArrayBuffer]]
internal slot
info: >
22.2.3.2 get %TypedArray%.prototype.byteLength
1. Let O be the this value.
2. If Type(O) is not Object, throw a TypeError exception.
3. If O does not have a [[ViewedArrayBuffer]] internal slot, throw a TypeError
exception.
...
includes: [testTypedArray.js]
---*/
var TypedArrayPrototype = TypedArray.prototype;
var getter = Object.getOwnPropertyDescriptor(
TypedArrayPrototype, "byteLength"
).get;
assert.throws(TypeError, function() {
getter.call({});
});
assert.throws(TypeError, function() {
getter.call([]);
});
var ab = new ArrayBuffer(8);
assert.throws(TypeError, function() {
getter.call(ab);
});

View File

@ -0,0 +1,48 @@
// Copyright (C) 2016 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
es6id: 22.2.3.2
description: Throws a TypeError exception when `this` is not Object
info: >
22.2.3.2 get %TypedArray%.prototype.byteLength
1. Let O be the this value.
2. If Type(O) is not Object, throw a TypeError exception.
...
includes: [testTypedArray.js]
features: [Symbol]
---*/
var TypedArrayPrototype = TypedArray.prototype;
var getter = Object.getOwnPropertyDescriptor(
TypedArrayPrototype, "byteLength"
).get;
assert.throws(TypeError, function() {
getter.call(undefined);
}, "this is undefined");
assert.throws(TypeError, function() {
getter.call(null);
}, "this is null");
assert.throws(TypeError, function() {
getter.call(42);
}, "this is 42");
assert.throws(TypeError, function() {
getter.call("1");
}, "this is a string");
assert.throws(TypeError, function() {
getter.call(true);
}, "this is true");
assert.throws(TypeError, function() {
getter.call(false);
}, "this is false");
var s = Symbol("s");
assert.throws(TypeError, function() {
getter.call(s);
}, "this is a Symbol");

View File

@ -0,0 +1,30 @@
// Copyright (C) 2016 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
es6id: 22.2.3.3
description: |
Return value from [[ByteOffset]] internal slot
info: >
22.2.3.3 get %TypedArray%.prototype.byteOffset
...
6. Let offset be the value of O's [[ByteOffset]] internal slot.
7. Return size.
includes: [testTypedArray.js]
---*/
testWithTypedArrayConstructors(function(TA) {
var ta1 = new TA();
assert.sameValue(ta1.byteOffset, 0, "Regular typedArray");
var offset = 4 * TA.BYTES_PER_ELEMENT;
var buffer1 = new ArrayBuffer(8 * TA.BYTES_PER_ELEMENT);
var ta2 = new TA(buffer1, offset);
assert.sameValue(ta2.byteOffset, offset, "TA(buffer, offset)");
var buffer2 = new ArrayBuffer(8 * TA.BYTES_PER_ELEMENT);
var sample = new TA(buffer2, offset)
var ta3 = new TA(sample);
assert.sameValue(ta3.byteOffset, 0, "TA(typedArray)");
});

View File

@ -0,0 +1,27 @@
// Copyright (C) 2016 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
es6id: 22.2.3.2
description: |
Return buffer from DataView's instance [[ViewedArrayBuffer]] internal slot
info: >
22.2.3.2 get %TypedArray%.prototype.byteOffset
...
6. Let offset be the value of O's [[ByteOffset]] internal slot.
7. Return size.
includes: [testTypedArray.js]
features: [DataView]
---*/
var getter = Object.getOwnPropertyDescriptor(
TypedArray.prototype, "byteOffset"
).get;
var buffer = new ArrayBuffer(64);
var dv1 = new DataView(buffer, 0);
assert.sameValue(getter.call(dv1), 0);
var dv2 = new DataView(buffer, 32);
assert.sameValue(getter.call(dv2), 32);

View File

@ -0,0 +1,35 @@
// Copyright (C) 2016 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
es6id: 22.2.3.3
description: |
Throws a TypeError exception when `this` does not have a [[ViewedArrayBuffer]]
internal slot
info: >
22.2.3.3 get %TypedArray%.prototype.byteOffset
1. Let O be the this value.
2. If Type(O) is not Object, throw a TypeError exception.
3. If O does not have a [[ViewedArrayBuffer]] internal slot, throw a TypeError
exception.
...
includes: [testTypedArray.js]
---*/
var TypedArrayPrototype = TypedArray.prototype;
var getter = Object.getOwnPropertyDescriptor(
TypedArrayPrototype, "byteOffset"
).get;
assert.throws(TypeError, function() {
getter.call({});
});
assert.throws(TypeError, function() {
getter.call([]);
});
var ab = new ArrayBuffer(8);
assert.throws(TypeError, function() {
getter.call(ab);
});

View File

@ -0,0 +1,48 @@
// Copyright (C) 2016 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
es6id: 22.2.3.3
description: Throws a TypeError exception when `this` is not Object
info: >
22.2.3.3 get %TypedArray%.prototype.byteOffset
1. Let O be the this value.
2. If Type(O) is not Object, throw a TypeError exception.
...
includes: [testTypedArray.js]
features: [Symbol]
---*/
var TypedArrayPrototype = TypedArray.prototype;
var getter = Object.getOwnPropertyDescriptor(
TypedArrayPrototype, "byteOffset"
).get;
assert.throws(TypeError, function() {
getter.call(undefined);
}, "this is undefined");
assert.throws(TypeError, function() {
getter.call(null);
}, "this is null");
assert.throws(TypeError, function() {
getter.call(42);
}, "this is 42");
assert.throws(TypeError, function() {
getter.call("1");
}, "this is a string");
assert.throws(TypeError, function() {
getter.call(true);
}, "this is true");
assert.throws(TypeError, function() {
getter.call(false);
}, "this is false");
var s = Symbol("s");
assert.throws(TypeError, function() {
getter.call(s);
}, "this is a Symbol");

View File

@ -0,0 +1,27 @@
// Copyright (C) 2016 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-get-%typedarray%.prototype.length
description: |
Return value from the [[ArrayLength]] internal slot
info: >
22.2.3.18 get %TypedArray%.prototype.length
...
6. Let length be the value of O's [[ArrayLength]] internal slot.
7. Return length.
---
The current tests on `prop-desc.js` and `length.js` already assert `length` is
not a dynamic property as in regular arrays.
includes: [testTypedArray.js]
---*/
testWithTypedArrayConstructors(function(TA) {
var ta1 = new TA();
assert.sameValue(ta1.length, 0);
var ta2 = new TA(42);
assert.sameValue(ta2.length, 42);
});

View File

@ -0,0 +1,41 @@
// Copyright (C) 2016 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-get-%typedarray%.prototype.length
description: |
Throws a TypeError exception when `this` does not have a [[TypedArrayName]]
internal slot
info: >
22.2.3.18 get %TypedArray%.prototype.length
1. Let O be the this value.
2. If Type(O) is not Object, throw a TypeError exception.
3. If O does not have a [[TypedArrayName]] internal slot, throw a TypeError
exception.
...
includes: [testTypedArray.js]
features: [DataView]
---*/
var TypedArrayPrototype = TypedArray.prototype;
var getter = Object.getOwnPropertyDescriptor(
TypedArrayPrototype, "length"
).get;
assert.throws(TypeError, function() {
getter.call({});
});
assert.throws(TypeError, function() {
getter.call([]);
});
var ab = new ArrayBuffer(8);
assert.throws(TypeError, function() {
getter.call(ab);
});
var dv = new DataView(new ArrayBuffer(8), 0);
assert.throws(TypeError, function() {
getter.call(dv);
});

View File

@ -0,0 +1,27 @@
// Copyright (C) 2016 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-get-%typedarray%.prototype.length
description: Throws a TypeError exception when `this` is null or undefined
info: >
22.2.3.18 get %TypedArray%.prototype.length
1. Let O be the this value.
2. If Type(O) is not Object, throw a TypeError exception.
...
includes: [testTypedArray.js]
flags: [onlyStrict]
---*/
var TypedArrayPrototype = TypedArray.prototype;
var getter = Object.getOwnPropertyDescriptor(
TypedArrayPrototype, "length"
).get;
assert.throws(TypeError, function() {
getter.call(undefined);
});
assert.throws(TypeError, function() {
getter.call(null);
});

View File

@ -0,0 +1,40 @@
// Copyright (C) 2016 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-get-%typedarray%.prototype.length
description: Throws a TypeError exception when `this` is not Object
info: >
22.2.3.18 get %TypedArray%.prototype.length
1. Let O be the this value.
2. If Type(O) is not Object, throw a TypeError exception.
...
includes: [testTypedArray.js]
features: [Symbol]
---*/
var TypedArrayPrototype = TypedArray.prototype;
var getter = Object.getOwnPropertyDescriptor(
TypedArrayPrototype, "length"
).get;
assert.throws(TypeError, function() {
getter.call(42);
});
assert.throws(TypeError, function() {
getter.call("1");
});
assert.throws(TypeError, function() {
getter.call(true);
});
assert.throws(TypeError, function() {
getter.call(false);
});
var s = Symbol("s");
assert.throws(TypeError, function() {
getter.call(s);
});