diff options
Diffstat (limited to 'tests/js/utils.mjs')
-rw-r--r-- | tests/js/utils.mjs | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/tests/js/utils.mjs b/tests/js/utils.mjs index 425a09f..d8a8ded 100644 --- a/tests/js/utils.mjs +++ b/tests/js/utils.mjs @@ -10,6 +10,10 @@ import { partial, strSortFn, undefinedAsNull, + first, + rest, + butlast, + last, } from "../../src/utils.mjs"; @@ -268,6 +272,76 @@ const test_undefinedAsNull = async t => { }); }; +const test_first = async t => { + t.start("first()"); + + await t.test("undefined for an empty array", () => { + assert.equal(undefined, first([])); + assert.equal(undefined, first("")); + }); + + await t.test("the first element otherwise", () => { + assert.equal(1, first([1, 2, 3])); + assert.equal("a", first("abc")); + }); +}; + +const test_rest = async t => { + t.start("rest()"); + + await t.test("an empty array when no more elements are available", () => { + assert.deepEqual([], rest([])); + assert.deepEqual([], rest([1])); + assert.equal("", rest("")); + assert.equal("bc", rest("abc")); + }); + + await t.test("the rest of the collection otherwise", () => { + assert.deepEqual([2, 3], rest([1, 2, 3])); + assert.equal("bc", rest("abc")); + }); + + await t.test("combines with first() well", () => { + const arr = ["anything", "can", "go", "here"]; + assert.deepEqual(arr, [ first(arr), ...rest(arr) ]); + }); +}; + +const test_butlast = async t => { + t.start("butlast()"); + + await t.test("empty array when ther are no more elements", () => { + assert.deepEqual([], butlast([])); + assert.deepEqual([], butlast([1])); + assert.equal("", butlast("")); + assert.equal("", butlast("c")); + }); + + await t.test("the beginning of the array otherwise", () => { + assert.deepEqual([1, 2], butlast([1, 2, 3])); + assert.equal("ab", butlast("abc")); + }); +}; + +const test_last = async t => { + t.start("last()"); + + await t.test("undefined for an empty array", () => { + assert.equal(undefined, last([])); + assert.equal(undefined, last("")); + }); + + await t.test("the last element otherwise", () => { + assert.equal(3, last([1, 2, 3])); + assert.equal("c", last("abc")); + }); + + await t.test("combines with butlast() well", () => { + const arr = ["anything", "goes", "here", "too"]; + assert.deepEqual(arr, [ ...butlast(arr), last(arr) ]); + }); +}; + await runner.runTests([ test_keys, @@ -278,4 +352,8 @@ await runner.runTests([ test_partial, test_strSortFn, test_undefinedAsNull, + test_first, + test_rest, + test_butlast, + test_last, ]); |