blob: 91e304593231e1680e8d04f16bdd7208f0c3e3ff (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
// Array.prototype.sort throws if the comparator is neither undefined nor
// a callable object.
// Use a zero length array, so we can provide any kind of callable object
// without worrying that the function is actually a valid comparator function.
const array = new Array(0);
// Throws if the comparator is neither undefined nor callable.
for (let invalidComparator of [null, 0, true, Symbol(), {}, []]) {
assertThrowsInstanceOf(() => array.sort(invalidComparator), TypeError);
}
// Doesn't throw if the comparator is undefined or a callable object.
for (let validComparator of [undefined, () => {}, Math.max, class {}, new Proxy(function(){}, {})]) {
array.sort(validComparator);
}
// Also doesn't throw if no comparator was provided at all.
array.sort();
if (typeof reportCompare === "function")
reportCompare(0, 0);
|