diff options
Diffstat (limited to 'deps/v8/test/mjsunit/es6/typedarray-set-length.js')
-rw-r--r-- | deps/v8/test/mjsunit/es6/typedarray-set-length.js | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/deps/v8/test/mjsunit/es6/typedarray-set-length.js b/deps/v8/test/mjsunit/es6/typedarray-set-length.js new file mode 100644 index 0000000000..6dd5bf76e0 --- /dev/null +++ b/deps/v8/test/mjsunit/es6/typedarray-set-length.js @@ -0,0 +1,54 @@ +// 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. + +var typedArrayConstructors = [ + Uint8Array, + Int8Array, + Uint16Array, + Int16Array, + Uint32Array, + Int32Array, + Uint8ClampedArray, + Float32Array, + Float64Array +]; + +var lengthCalled = false; +function lengthValue() { + assertFalse(lengthCalled); + lengthCalled = true; + return 5; +} + +// ToLength should convert these to usable lengths. +var goodNonIntegerLengths = [ + function() { return 4.6; }, + function() { return -5; }, + function() { return NaN; }, + function() { return "5"; }, + function() { return "abc"; }, + function() { return true; }, + function() { return null; }, + function() { return undefined; } +]; + +// This will fail if you use ToLength on it. +function badNonIntegerLength() { + return Symbol("5"); +} + +for (var constructor of typedArrayConstructors) { + lengthCalled = false; + var a = new constructor(10); + a.set({length: {valueOf: lengthValue}}); + assertTrue(lengthCalled); + + for (var lengthFun of goodNonIntegerLengths) { + a.set({length: {valueOf: lengthFun}}); + } + + assertThrows(function() { + a.set({length: {valueOf: badNonIntegerLength}}); + }, TypeError); +} |