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

316 lines
5.9 KiB
Nix

{
lib,
cidr,
}:
let
inherit (lib) runTests;
in
runTests {
testParseBasic = {
expr = cidr.parse "192.168.1.0/24";
expected = {
address = 3232235776;
prefixLen = 24;
};
};
testParseSlash32 = {
expr = cidr.parse "10.0.0.1/32";
expected = {
address = 167772161;
prefixLen = 32;
};
};
testParseSlash0 = {
expr = cidr.parse "0.0.0.0/0";
expected = {
address = 0;
prefixLen = 0;
};
};
testMakeBasic = {
expr = cidr.make "192.168.1.0" 24;
expected = {
address = 3232235776;
prefixLen = 24;
};
};
testFormatBasic = {
expr = cidr.format {
address = 3232235776;
prefixLen = 24;
};
expected = "192.168.1.0/24";
};
testNetmask24 = {
expr = cidr.netmaskStr 24;
expected = "255.255.255.0";
};
testNetmask16 = {
expr = cidr.netmaskStr 16;
expected = "255.255.0.0";
};
testNetmask8 = {
expr = cidr.netmaskStr 8;
expected = "255.0.0.0";
};
testNetmask32 = {
expr = cidr.netmaskStr 32;
expected = "255.255.255.255";
};
testNetmask0 = {
expr = cidr.netmaskStr 0;
expected = "0.0.0.0";
};
testNetmask25 = {
expr = cidr.netmaskStr 25;
expected = "255.255.255.128";
};
testWildcard24 = {
expr = cidr.wildcardStr 24;
expected = "0.0.0.255";
};
testWildcard16 = {
expr = cidr.wildcardStr 16;
expected = "0.0.255.255";
};
testNetworkBasic = {
expr = cidr.networkStr "192.168.1.50/24";
expected = "192.168.1.0";
};
testNetworkAlreadyNetwork = {
expr = cidr.networkStr "192.168.1.0/24";
expected = "192.168.1.0";
};
testNetworkSlash16 = {
expr = cidr.networkStr "172.16.45.67/16";
expected = "172.16.0.0";
};
testBroadcastBasic = {
expr = cidr.broadcastStr "192.168.1.0/24";
expected = "192.168.1.255";
};
testBroadcastSlash16 = {
expr = cidr.broadcastStr "172.16.0.0/16";
expected = "172.16.255.255";
};
testBroadcastSlash30 = {
expr = cidr.broadcastStr "192.168.1.0/30";
expected = "192.168.1.3";
};
testFirstHostBasic = {
expr = cidr.firstHostStr "192.168.1.0/24";
expected = "192.168.1.1";
};
testLastHostBasic = {
expr = cidr.lastHostStr "192.168.1.0/24";
expected = "192.168.1.254";
};
testFirstHostSlash31 = {
expr = cidr.firstHostStr "192.168.1.0/31";
expected = "192.168.1.0";
};
testLastHostSlash31 = {
expr = cidr.lastHostStr "192.168.1.0/31";
expected = "192.168.1.1";
};
testFirstHostSlash32 = {
expr = cidr.firstHostStr "192.168.1.1/32";
expected = "192.168.1.1";
};
testSize24 = {
expr = cidr.size "192.168.1.0/24";
expected = 256;
};
testSize16 = {
expr = cidr.size "172.16.0.0/16";
expected = 65536;
};
testSize32 = {
expr = cidr.size "192.168.1.1/32";
expected = 1;
};
testSize30 = {
expr = cidr.size "192.168.1.0/30";
expected = 4;
};
testHostCount24 = {
expr = cidr.hostCount "192.168.1.0/24";
expected = 254;
};
testHostCount30 = {
expr = cidr.hostCount "192.168.1.0/30";
expected = 2;
};
testHostCount31 = {
expr = cidr.hostCount "192.168.1.0/31";
expected = 2;
};
testHostCount32 = {
expr = cidr.hostCount "192.168.1.1/32";
expected = 1;
};
testContainsTrue = {
expr = cidr.contains "10.0.0.0/8" "10.1.2.3";
expected = true;
};
testContainsFalse = {
expr = cidr.contains "10.0.0.0/8" "192.168.1.1";
expected = false;
};
testContainsNetwork = {
expr = cidr.contains "192.168.1.0/24" "192.168.1.0";
expected = true;
};
testContainsBroadcast = {
expr = cidr.contains "192.168.1.0/24" "192.168.1.255";
expected = true;
};
testContainsEdgeFalse = {
expr = cidr.contains "192.168.1.0/24" "192.168.2.0";
expected = false;
};
testIsSubnetOfTrue = {
expr = cidr.isSubnetOf "10.0.0.0/8" "10.1.0.0/16";
expected = true;
};
testIsSubnetOfFalse = {
expr = cidr.isSubnetOf "10.0.0.0/8" "192.168.0.0/16";
expected = false;
};
testIsSubnetOfSame = {
expr = cidr.isSubnetOf "10.0.0.0/8" "10.0.0.0/8";
expected = true;
};
testIsSubnetOfLarger = {
expr = cidr.isSubnetOf "10.1.0.0/16" "10.0.0.0/8";
expected = false;
};
testHostBasic = {
expr = cidr.hostStr "192.168.1.0/24" 5;
expected = "192.168.1.5";
};
testHostZero = {
expr = cidr.hostStr "192.168.1.0/24" 0;
expected = "192.168.1.0";
};
testHostLast = {
expr = cidr.hostStr "192.168.1.0/24" 255;
expected = "192.168.1.255";
};
testSubnetFirst = {
expr = cidr.format (cidr.subnet "192.168.0.0/24" 26 0);
expected = "192.168.0.0/26";
};
testSubnetSecond = {
expr = cidr.format (cidr.subnet "192.168.0.0/24" 26 1);
expected = "192.168.0.64/26";
};
testSubnetLast = {
expr = cidr.format (cidr.subnet "192.168.0.0/24" 26 3);
expected = "192.168.0.192/26";
};
testSubnetsCount = {
expr = builtins.length (cidr.subnets "192.168.0.0/24" 26);
expected = 4;
};
testSubnetsStr = {
expr = cidr.subnetsStr "192.168.0.0/24" 26;
expected = [
"192.168.0.0/26"
"192.168.0.64/26"
"192.168.0.128/26"
"192.168.0.192/26"
];
};
testOverlapsTrue = {
expr = cidr.overlaps "192.168.1.0/24" "192.168.0.0/16";
expected = true;
};
testOverlapsFalse = {
expr = cidr.overlaps "192.168.1.0/24" "10.0.0.0/8";
expected = false;
};
testOverlapsAdjacent = {
expr = cidr.overlaps "192.168.1.0/24" "192.168.2.0/24";
expected = false;
};
testPrefixForHosts100 = {
expr = cidr.prefixForHosts 100;
expected = 25;
};
testPrefixForHosts254 = {
expr = cidr.prefixForHosts 254;
expected = 24;
};
testPrefixForHosts1 = {
expr = cidr.prefixForHosts 1;
expected = 32;
};
testPrefixForSize256 = {
expr = cidr.prefixForSize 256;
expected = 24;
};
testPrefixForSize1 = {
expr = cidr.prefixForSize 1;
expected = 32;
};
}