node/deps/v8/test/mjsunit/harmony/array-sort-comparefn.js
Michaël Zasso 09a8440b45
deps: update V8 to 12.2.281.27
PR-URL: https://github.com/nodejs/node/pull/51362
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
2024-03-31 15:36:07 +02:00

43 lines
1.4 KiB
JavaScript

// Copyright 2017 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.
// Array.prototype.sort + TypedArray.prototype.sort: comparefn must be either a
// function or undefined.
// https://github.com/tc39/ecma262/pull/785
const types = [
Array,
Int8Array, Uint8Array,
Int16Array, Uint16Array,
Int32Array, Uint32Array,
Uint8ClampedArray,
Float32Array, Float64Array,
];
for (const type of types) {
const array = new type();
array[0] = 1;
array[1] = 2;
array[2] = 3;
array.sort();
array.sort(undefined);
array.sort(() => {});
assertThrows(() => { array.sort(null); }, TypeError);
assertThrows(() => { array.sort(true); }, TypeError);
assertThrows(() => { array.sort(false); }, TypeError);
assertThrows(() => { array.sort(''); }, TypeError);
assertThrows(() => { array.sort(0); }, TypeError);
assertThrows(() => { array.sort(42); }, TypeError);
assertThrows(() => { array.sort([]); }, TypeError);
assertThrows(() => { array.sort(/./); }, TypeError);
assertThrows(() => { array.sort({}); }, TypeError);
assertThrows(() => { array.sort(Symbol()); }, TypeError);
}
assertThrows(
() => Array.prototype.sort.call(null, 42), TypeError,
'The comparison function must be either a function or undefined: 42');