summaryrefslogtreecommitdiffstats
path: root/js/src/tests/non262/Array/sort-non-function.js
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);