Files
nix-ip-utils/tests/iterate-tests.nix
2026-02-20 20:07:52 +00:00

196 lines
3.6 KiB
Nix

{
lib,
iterate,
ip,
}:
let
inherit (lib) runTests;
in
runTests {
testRangeBasic = {
expr = iterate.rangeStr "10.0.0.1" "10.0.0.3";
expected = [
"10.0.0.1"
"10.0.0.2"
"10.0.0.3"
];
};
testRangeSingle = {
expr = iterate.rangeStr "10.0.0.1" "10.0.0.1";
expected = [ "10.0.0.1" ];
};
testRangeEmpty = {
expr = iterate.rangeStr "10.0.0.5" "10.0.0.1";
expected = [ ];
};
testRangeCrossOctet = {
expr = iterate.rangeStr "10.0.0.254" "10.0.1.2";
expected = [
"10.0.0.254"
"10.0.0.255"
"10.0.1.0"
"10.0.1.1"
"10.0.1.2"
];
};
testCidrAddresses30 = {
expr = iterate.cidrAddressesStr "10.0.0.0/30";
expected = [
"10.0.0.0"
"10.0.0.1"
"10.0.0.2"
"10.0.0.3"
];
};
testCidrAddresses32 = {
expr = iterate.cidrAddressesStr "10.0.0.1/32";
expected = [ "10.0.0.1" ];
};
testCidrAddressesCount = {
expr = builtins.length (iterate.cidrAddresses "10.0.0.0/28");
expected = 16;
};
testCidrHosts30 = {
expr = iterate.cidrHostsStr "10.0.0.0/30";
expected = [
"10.0.0.1"
"10.0.0.2"
];
};
testCidrHosts31 = {
expr = iterate.cidrHostsStr "10.0.0.0/31";
expected = [
"10.0.0.0"
"10.0.0.1"
];
};
testCidrHosts32 = {
expr = iterate.cidrHostsStr "10.0.0.1/32";
expected = [ "10.0.0.1" ];
};
testCidrHostsCount = {
expr = builtins.length (iterate.cidrHosts "10.0.0.0/28");
expected = 14;
};
testInRangeTrue = {
expr = iterate.inRange "10.0.0.1" "10.0.0.5" "10.0.0.3";
expected = true;
};
testInRangeStart = {
expr = iterate.inRange "10.0.0.1" "10.0.0.5" "10.0.0.1";
expected = true;
};
testInRangeEnd = {
expr = iterate.inRange "10.0.0.1" "10.0.0.5" "10.0.0.5";
expected = true;
};
testInRangeFalseLow = {
expr = iterate.inRange "10.0.0.2" "10.0.0.5" "10.0.0.1";
expected = false;
};
testInRangeFalseHigh = {
expr = iterate.inRange "10.0.0.1" "10.0.0.5" "10.0.0.6";
expected = false;
};
testCountRangeBasic = {
expr = iterate.countRange "10.0.0.1" "10.0.0.10";
expected = 10;
};
testCountRangeSingle = {
expr = iterate.countRange "10.0.0.1" "10.0.0.1";
expected = 1;
};
testCountRangeEmpty = {
expr = iterate.countRange "10.0.0.5" "10.0.0.1";
expected = 0;
};
testMapRangeFormat = {
expr = iterate.mapRange ip.format "10.0.0.1" "10.0.0.3";
expected = [
"10.0.0.1"
"10.0.0.2"
"10.0.0.3"
];
};
testMapRangeOctets = {
expr = iterate.mapRange ip.toOctets "10.0.0.1" "10.0.0.2";
expected = [
[
10
0
0
1
]
[
10
0
0
2
]
];
};
testFilterRangeEven = {
expr = builtins.map ip.format (iterate.filterRange (i: lib.mod i 2 == 0) "10.0.0.1" "10.0.0.5");
expected = [
"10.0.0.2"
"10.0.0.4"
];
};
testTakeRangeBasic = {
expr = iterate.takeRangeStr 3 "10.0.0.1" "10.0.0.10";
expected = [
"10.0.0.1"
"10.0.0.2"
"10.0.0.3"
];
};
testTakeRangeMoreThanAvailable = {
expr = iterate.takeRangeStr 10 "10.0.0.1" "10.0.0.3";
expected = [
"10.0.0.1"
"10.0.0.2"
"10.0.0.3"
];
};
testTakeRangeZero = {
expr = iterate.takeRangeStr 0 "10.0.0.1" "10.0.0.10";
expected = [ ];
};
testFindInRangeBasic = {
expr = iterate.findInRangeStr (i: lib.mod i 5 == 0) "10.0.0.1" "10.0.0.10";
expected = "10.0.0.5";
};
testFindInRangeNotFound = {
expr = iterate.findInRange (i: i > 1000000000) "10.0.0.1" "10.0.0.10";
expected = null;
};
}