Add tests for DataView.prototype.buffer

This commit is contained in:
Leonardo Balter 2016-05-10 15:08:58 -04:00 committed by Mike Pennisi
parent 332be5b8bc
commit 7b529f00cb
7 changed files with 198 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-dataview.prototype.buffer
es6id: 24.2.4.1
description: The getter method does not throw with a detached buffer
info: |
24.2.4.1 get DataView.prototype.buffer
...
5. Let buffer be the value of O's [[ViewedArrayBuffer]] internal slot.
6. Return buffer.
includes: [detachArrayBuffer.js]
---*/
var buffer = new ArrayBuffer(8);
var sample = new DataView(buffer, 0);
$DETACHBUFFER(sample.buffer);
assert.sameValue(sample.buffer, buffer);

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-dataview.prototype.buffer
es6id: 24.2.4.1
description: >
Requires this value to have a [[DataView]] internal slot
info: |
24.2.4.1 get DataView.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 [[DataView]] internal slot, throw a TypeError
exception.
...
---*/
assert.throws(TypeError, function() {
DataView.prototype.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.
/*---
esid: sec-get-dataview.prototype.buffer
es6id: 24.2.4.1
description: Throws a TypeError exception when invoked as a function
info: |
24.2.4.1 get DataView.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 [[DataView]] internal slot, throw a TypeError
exception.
...
---*/
var getter = Object.getOwnPropertyDescriptor(
DataView.prototype, 'buffer'
).get;
assert.throws(TypeError, function() {
getter();
});

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.
/*---
esid: sec-get-dataview.prototype.buffer
es6id: 24.2.4.1
description: >
"buffer" property of DataView.prototype
info: |
DataView.prototype.buffer is an accessor property whose set accessor function
is undefined.
Section 17: Every accessor property described in clauses 18 through 26 and in
Annex B.2 has the attributes {[[Enumerable]]: false, [[Configurable]]: true }
includes: [propertyHelper.js]
---*/
var desc = Object.getOwnPropertyDescriptor(DataView.prototype, "buffer");
assert.sameValue(desc.set, undefined);
assert.sameValue(typeof desc.get, "function");
verifyNotEnumerable(DataView.prototype, "buffer");
verifyConfigurable(DataView.prototype, "buffer");

View File

@ -0,0 +1,20 @@
// 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-dataview.prototype.buffer
es6id: 24.2.4.1
description: >
Return buffer from [[ViewedArrayBuffer]] internal slot
info: |
24.2.4.1 get DataView.prototype.buffer
...
5. Let buffer be the value of O's [[ViewedArrayBuffer]] internal slot.
6. Return buffer.
---*/
var buffer = new ArrayBuffer(1);
var dv = new DataView(buffer, 0);
assert.sameValue(dv.buffer, buffer);

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-dataview.prototype.buffer
description: >
Throws a TypeError exception when `this` does not have a [[DataView]] internal
slot
info: |
24.2.4.1 get DataView.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 [[DataView]] internal slot, throw a TypeError
exception.
...
features: [Int8Array]
---*/
var getter = Object.getOwnPropertyDescriptor(
DataView.prototype, "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);
}, "ArrayBuffer");
var ta = new Int8Array();
assert.throws(TypeError, function() {
getter.call(ta);
}, "TypedArray");

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.
/*---
esid: sec-get-dataview.prototype.buffer
es6id: 24.2.4.1
description: Throws a TypeError exception when `this` is not Object
info: |
24.2.4.1 get DataView.prototype.buffer
1. Let O be the this value.
2. If Type(O) is not Object, throw a TypeError exception.
...
features: [Symbol]
---*/
var getter = Object.getOwnPropertyDescriptor(
DataView.prototype, "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");