diff options
author | Jacek Galowicz <jacek@galowicz.de> | 2021-01-25 16:59:46 +0100 |
---|---|---|
committer | Jacek Galowicz <jacek@galowicz.de> | 2021-01-28 23:08:59 +0100 |
commit | 123045a57056b997165be4963cbf62120a967fec (patch) | |
tree | df971067e1c59e11fba585a121f060a3a49bd93d /lib/tests/misc.nix | |
parent | d9353519d70454b53c6c302205272ccac81e1b7f (diff) | |
download | nixpkgs-123045a57056b997165be4963cbf62120a967fec.tar nixpkgs-123045a57056b997165be4963cbf62120a967fec.tar.gz nixpkgs-123045a57056b997165be4963cbf62120a967fec.tar.bz2 nixpkgs-123045a57056b997165be4963cbf62120a967fec.tar.lz nixpkgs-123045a57056b997165be4963cbf62120a967fec.tar.xz nixpkgs-123045a57056b997165be4963cbf62120a967fec.tar.zst nixpkgs-123045a57056b997165be4963cbf62120a967fec.zip |
lib/attrsets: add cartesianProductOfSets function
Diffstat (limited to 'lib/tests/misc.nix')
-rw-r--r-- | lib/tests/misc.nix | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/lib/tests/misc.nix b/lib/tests/misc.nix index 35a5801c724..0d249968402 100644 --- a/lib/tests/misc.nix +++ b/lib/tests/misc.nix @@ -660,4 +660,71 @@ runTests { expected = [ [ "foo" ] [ "foo" "<name>" "bar" ] [ "foo" "bar" ] ]; }; + testCartesianProductOfEmptySet = { + expr = cartesianProductOfSets {}; + expected = [ {} ]; + }; + + testCartesianProductOfOneSet = { + expr = cartesianProductOfSets { a = [ 1 2 3 ]; }; + expected = [ { a = 1; } { a = 2; } { a = 3; } ]; + }; + + testCartesianProductOfTwoSets = { + expr = cartesianProductOfSets { a = [ 1 ]; b = [ 10 20 ]; }; + expected = [ + { a = 1; b = 10; } + { a = 1; b = 20; } + ]; + }; + + testCartesianProductOfTwoSetsWithOneEmpty = { + expr = cartesianProductOfSets { a = [ ]; b = [ 10 20 ]; }; + expected = [ ]; + }; + + testCartesianProductOfThreeSets = { + expr = cartesianProductOfSets { + a = [ 1 2 3 ]; + b = [ 10 20 30 ]; + c = [ 100 200 300 ]; + }; + expected = [ + { a = 1; b = 10; c = 100; } + { a = 1; b = 10; c = 200; } + { a = 1; b = 10; c = 300; } + + { a = 1; b = 20; c = 100; } + { a = 1; b = 20; c = 200; } + { a = 1; b = 20; c = 300; } + + { a = 1; b = 30; c = 100; } + { a = 1; b = 30; c = 200; } + { a = 1; b = 30; c = 300; } + + { a = 2; b = 10; c = 100; } + { a = 2; b = 10; c = 200; } + { a = 2; b = 10; c = 300; } + + { a = 2; b = 20; c = 100; } + { a = 2; b = 20; c = 200; } + { a = 2; b = 20; c = 300; } + + { a = 2; b = 30; c = 100; } + { a = 2; b = 30; c = 200; } + { a = 2; b = 30; c = 300; } + + { a = 3; b = 10; c = 100; } + { a = 3; b = 10; c = 200; } + { a = 3; b = 10; c = 300; } + + { a = 3; b = 20; c = 100; } + { a = 3; b = 20; c = 200; } + { a = 3; b = 20; c = 300; } + + { a = 3; b = 30; c = 100; } + { a = 3; b = 30; c = 200; } + { a = 3; b = 30; c = 300; } + ]; + }; } |