about summary refs log tree commit diff
path: root/lib/tests
diff options
context:
space:
mode:
authorSilvan Mosberger <silvan.mosberger@tweag.io>2023-07-18 18:24:45 +0200
committerSilvan Mosberger <silvan.mosberger@tweag.io>2023-07-18 20:27:15 +0200
commitfa503f4b921b3af86a7fcf9b2e02a00fd79bc1a8 (patch)
treeb22d1917d5d97264195648bbdbb82e6b8ccef7f6 /lib/tests
parent446b09fd3dc352e31056db37a1b14cc5087f9c4d (diff)
lib.attrsets.mergeAttrsList: init
Co-authored-by: Robert Hensing <roberth@users.noreply.github.com>
Diffstat (limited to 'lib/tests')
-rw-r--r--lib/tests/misc.nix25
1 files changed, 25 insertions, 0 deletions
diff --git a/lib/tests/misc.nix b/lib/tests/misc.nix
index ce980436c1bcb..8686169546099 100644
--- a/lib/tests/misc.nix
+++ b/lib/tests/misc.nix
@@ -609,6 +609,31 @@ runTests {
     };
   };
 
+
+  testMergeAttrsListExample1 = {
+    expr = attrsets.mergeAttrsList [ { a = 0; b = 1; } { c = 2; d = 3; } ];
+    expected = { a = 0; b = 1; c = 2; d = 3; };
+  };
+  testMergeAttrsListExample2 = {
+    expr = attrsets.mergeAttrsList [ { a = 0; } { a = 1; } ];
+    expected = { a = 1; };
+  };
+  testMergeAttrsListExampleMany =
+    let
+      list = genList (n:
+        listToAttrs (genList (m:
+          let
+            # Integer divide n by two to create duplicate attributes
+            str = "halfn${toString (n / 2)}m${toString m}";
+          in
+          nameValuePair str str
+        ) 100)
+      ) 100;
+    in {
+      expr = attrsets.mergeAttrsList list;
+      expected = foldl' mergeAttrs { } list;
+    };
+
   # code from the example
   testRecursiveUpdateUntil = {
     expr = recursiveUpdateUntil (path: l: r: path == ["foo"]) {