diff options
Diffstat (limited to 'deps/v8/test/mjsunit/es6/arraybuffer-species.js')
-rw-r--r-- | deps/v8/test/mjsunit/es6/arraybuffer-species.js | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/deps/v8/test/mjsunit/es6/arraybuffer-species.js b/deps/v8/test/mjsunit/es6/arraybuffer-species.js new file mode 100644 index 0000000000..1ac6efbe26 --- /dev/null +++ b/deps/v8/test/mjsunit/es6/arraybuffer-species.js @@ -0,0 +1,34 @@ +// Copyright 2015 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// ArrayBuffer.prototype.slice makes subclass and checks length + +class MyArrayBuffer extends ArrayBuffer { } +assertEquals(MyArrayBuffer, new MyArrayBuffer(0).slice().constructor); + +class MyShortArrayBuffer extends ArrayBuffer { + constructor(length) { super(length - 1); } +} +assertThrows(() => new MyShortArrayBuffer(5).slice(0, 4), TypeError); + +class SingletonArrayBuffer extends ArrayBuffer { + constructor(...args) { + if (SingletonArrayBuffer.cached) return SingletonArrayBuffer.cached; + super(...args); + SingletonArrayBuffer.cached = this; + } +} +assertThrows(() => new SingletonArrayBuffer(5).slice(0, 4), TypeError); + +class NonArrayBuffer extends ArrayBuffer { + constructor() { + return {}; + } +} +assertThrows(() => new NonArrayBuffer(5).slice(0, 4), TypeError); + +// Species fallback is ArrayBuffer +class UndefinedArrayBuffer extends ArrayBuffer { } +UndefinedArrayBuffer.prototype.constructor = undefined; +assertEquals(ArrayBuffer, new UndefinedArrayBuffer(0).slice().constructor); |