diff options
author | Silvan Mosberger <silvan.mosberger@tweag.io> | 2023-09-22 02:38:15 +0200 |
---|---|---|
committer | Silvan Mosberger <silvan.mosberger@tweag.io> | 2023-09-26 18:55:54 +0200 |
commit | 9893fee947ceba487f0475bbecfea6d5959e2e6f (patch) | |
tree | 4f3e06ac4ff2ab654f4d41b8d628fe9bf434db3b /lib/tests/misc.nix | |
parent | 7a0b5c36c943f4f257c93f3c3e7fed22ffe2d67c (diff) | |
download | nixpkgs-9893fee947ceba487f0475bbecfea6d5959e2e6f.tar nixpkgs-9893fee947ceba487f0475bbecfea6d5959e2e6f.tar.gz nixpkgs-9893fee947ceba487f0475bbecfea6d5959e2e6f.tar.bz2 nixpkgs-9893fee947ceba487f0475bbecfea6d5959e2e6f.tar.lz nixpkgs-9893fee947ceba487f0475bbecfea6d5959e2e6f.tar.xz nixpkgs-9893fee947ceba487f0475bbecfea6d5959e2e6f.tar.zst nixpkgs-9893fee947ceba487f0475bbecfea6d5959e2e6f.zip |
lib.lists.foldl': Add tests
Diffstat (limited to 'lib/tests/misc.nix')
-rw-r--r-- | lib/tests/misc.nix | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/lib/tests/misc.nix b/lib/tests/misc.nix index 80223dccb26..50d615c5be3 100644 --- a/lib/tests/misc.nix +++ b/lib/tests/misc.nix @@ -505,6 +505,38 @@ runTests { }; }; + testFoldl'Empty = { + expr = foldl' (acc: el: abort "operation not called") 0 [ ]; + expected = 0; + }; + + testFoldl'IntegerAdding = { + expr = foldl' (acc: el: acc + el) 0 [ 1 2 3 ]; + expected = 6; + }; + + # The accumulator isn't forced deeply + testFoldl'NonDeep = { + expr = take 3 (foldl' + (acc: el: [ el ] ++ acc) + [ (abort "unevaluated list entry") ] + [ 1 2 3 ]); + expected = [ 3 2 1 ]; + }; + + # The same as builtins.foldl', lib.foldl' doesn't evaluate the first accumulator strictly + testFoldl'StrictInitial = { + expr = (builtins.tryEval (foldl' (acc: el: el) (throw "hello") [])).success; + expected = true; + }; + + # Make sure we don't get a stack overflow for large lists + # This number of elements would notably cause a stack overflow if it was implemented without the `foldl'` builtin + testFoldl'Large = { + expr = foldl' (acc: el: acc + el) 0 (range 0 100000); + expected = 5000050000; + }; + testTake = testAllTrue [ ([] == (take 0 [ 1 2 3 ])) ([1] == (take 1 [ 1 2 3 ])) |