mirror of https://github.com/lukechilds/node.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
1.2 KiB
54 lines
1.2 KiB
// 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);
|
|
}
|
|
|