diff --git a/src/sort.js b/src/sort.js index a96a14b9..8d7a41a3 100644 --- a/src/sort.js +++ b/src/sort.js @@ -4,7 +4,7 @@ export default function sort(values, ...F) { if (typeof values[Symbol.iterator] !== "function") throw new TypeError("values is not iterable"); values = Array.from(values); let [f] = F; - if ((F.length === 1 && f.length === 1) || F.length > 1) { + if ((f && f.length === 1) || F.length > 1) { const index = Uint32Array.from(values, (d, i) => i); if (F.length > 1) { F = F.map(f => values.map(f)); diff --git a/test/sort-test.js b/test/sort-test.js index efa02859..d551fb8c 100644 --- a/test/sort-test.js +++ b/test/sort-test.js @@ -61,11 +61,12 @@ it("sort(values) accepts an iterable", () => { }); it("sort(values) enforces that values is iterable", () => { - assert.throws(() => sort({}), TypeError); + assert.throws(() => sort({}), {name: "TypeError", message: "values is not iterable"}); }); it("sort(values, comparator) enforces that comparator is a function", () => { - assert.throws(() => sort([], {}), TypeError); + assert.throws(() => sort([], {}), {name: "TypeError", message: "compare is not a function"}); + assert.throws(() => sort([], null), {name: "TypeError", message: "compare is not a function"}); }); it("sort(values) does not skip sparse elements", () => {