lib/attrsets: add cartesianProductOfSets function
This commit is contained in:
@@ -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; }
|
||||
];
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user