summaryrefslogtreecommitdiffstats
path: root/js/src/tests/non262/Array/sort_small.js
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--js/src/tests/non262/Array/sort_small.js33
1 files changed, 33 insertions, 0 deletions
diff --git a/js/src/tests/non262/Array/sort_small.js b/js/src/tests/non262/Array/sort_small.js
new file mode 100644
index 0000000000..fa8b789e10
--- /dev/null
+++ b/js/src/tests/non262/Array/sort_small.js
@@ -0,0 +1,33 @@
+// Sort every possible permutation of some arrays.
+function sortAllPermutations(data, comparefn) {
+ for (let permutation of Permutations(Array.from(data))) {
+ let sorted = (Array.from(permutation)).sort(comparefn);
+ for (let i in sorted) {
+ assertEq(sorted[i], data[i],
+ [`[${permutation}].sort(${comparefn})`,
+ `returned ${sorted}, expected ${data}`].join(' '));
+ }
+ }
+}
+
+let lex = [2112, "bob", "is", "my", "name"];
+let nans = [1/undefined, NaN, Number.NaN]
+
+let num1 = [-11, 0, 0, 100, 101];
+let num2 = [-11, 100, 201234.23, undefined, undefined];
+
+sortAllPermutations(lex);
+sortAllPermutations(nans);
+
+sortAllPermutations(nans, (x, y) => x - y);
+// Multiplication kills comparator optimization.
+sortAllPermutations(nans, (x, y) => (1*x - 1*y));
+
+sortAllPermutations(num1, (x, y) => x - y);
+sortAllPermutations(num1, (x, y) => (1*x - 1*y));
+
+sortAllPermutations(num2, (x, y) => x - y);
+sortAllPermutations(num2, (x, y) => (1*x - 1*y));
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);