316 lines
5.9 KiB
Nix
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;
|
|
};
|
|
}
|