Add tests for Subclassing the built-in ArrayBuffer Objects

This commit is contained in:
Leonardo Balter 2016-01-11 17:55:01 -05:00
parent 4ad09e5060
commit 0c40ed0cf0
2 changed files with 64 additions and 0 deletions

View File

@ -0,0 +1,31 @@
// Copyright (C) 2016 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
es6id: 24.1.2
description: Subclassing the ArrayBuffer object
info: >
24.1.2 The ArrayBuffer Constructor
...
The ArrayBuffer constructor is designed to be subclassable. It may be used as
the value of an extends clause of a class definition. Subclass constructors
that intend to inherit the specified ArrayBuffer behaviour must include a
super call to the ArrayBuffer constructor to create and initialize subclass
instances with the internal state necessary to support the
ArrayBuffer.prototype built-in methods.
---*/
class AB extends ArrayBuffer {}
var ab = new AB(4);
var sliced = ab.slice(0, 1);
assert(sliced instanceof AB);
assert(sliced instanceof ArrayBuffer);
assert.notSameValue(ab, sliced);
assert.throws(RangeError, function() {
new AB();
});

View File

@ -0,0 +1,33 @@
// Copyright (C) 2016 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
es6id: 24.1.2
description: Super need to be called to initialize internals
info: >
24.1.2 The ArrayBuffer Constructor
...
The ArrayBuffer constructor is designed to be subclassable. It may be used as
the value of an extends clause of a class definition. Subclass constructors
that intend to inherit the specified ArrayBuffer behaviour must include a
super call to the ArrayBuffer constructor to create and initialize subclass
instances with the internal state necessary to support the
ArrayBuffer.prototype built-in methods.
---*/
class AB1 extends ArrayBuffer {
constructor() {}
}
assert.throws(ReferenceError, function() {
new AB1(1);
});
class AB2 extends ArrayBuffer {
constructor(length) {
super(length);
}
}
new AB2(1);