{ lib, validate }: let inherit (lib) runTests; in runTests { testIsValidIpBasic = { expr = validate.isValidIp "192.168.1.1"; expected = true; }; testIsValidIpZeros = { expr = validate.isValidIp "0.0.0.0"; expected = true; }; testIsValidIpMax = { expr = validate.isValidIp "255.255.255.255"; expected = true; }; testIsValidIpInvalidOctet = { expr = validate.isValidIp "256.1.1.1"; expected = false; }; testIsValidIpTooFewOctets = { expr = validate.isValidIp "192.168.1"; expected = false; }; testIsValidIpTooManyOctets = { expr = validate.isValidIp "192.168.1.1.1"; expected = false; }; testIsValidIpEmpty = { expr = validate.isValidIp ""; expected = false; }; testIsValidIpLetters = { expr = validate.isValidIp "abc.def.ghi.jkl"; expected = false; }; testIsValidIpNegative = { expr = validate.isValidIp "-1.0.0.0"; expected = false; }; testIsValidIpNotString = { expr = validate.isValidIp 12345; expected = false; }; testIsValidCidrBasic = { expr = validate.isValidCidr "192.168.1.0/24"; expected = true; }; testIsValidCidrSlash0 = { expr = validate.isValidCidr "0.0.0.0/0"; expected = true; }; testIsValidCidrSlash32 = { expr = validate.isValidCidr "192.168.1.1/32"; expected = true; }; testIsValidCidrInvalidPrefix = { expr = validate.isValidCidr "192.168.1.0/33"; expected = false; }; testIsValidCidrNoPrefix = { expr = validate.isValidCidr "192.168.1.0"; expected = false; }; testIsValidCidrInvalidIp = { expr = validate.isValidCidr "256.168.1.0/24"; expected = false; }; testIsValidCidrEmpty = { expr = validate.isValidCidr ""; expected = false; }; testIsValidCidrNotString = { expr = validate.isValidCidr 12345; expected = false; }; testTryParseIpValid = { expr = validate.tryParseIp "192.168.1.1"; expected = 3232235777; }; testTryParseIpInvalid = { expr = validate.tryParseIp "invalid"; expected = null; }; testTryParseCidrValid = { expr = validate.tryParseCidr "192.168.1.0/24"; expected = { address = 3232235776; prefixLen = 24; }; }; testTryParseCidrInvalid = { expr = validate.tryParseCidr "invalid"; expected = null; }; testIsPrivate10 = { expr = validate.isPrivate "10.1.2.3"; expected = true; }; testIsPrivate172 = { expr = validate.isPrivate "172.16.5.10"; expected = true; }; testIsPrivate172Edge = { expr = validate.isPrivate "172.31.255.255"; expected = true; }; testIsPrivate172Outside = { expr = validate.isPrivate "172.32.0.0"; expected = false; }; testIsPrivate192 = { expr = validate.isPrivate "192.168.100.50"; expected = true; }; testIsPrivatePublic = { expr = validate.isPrivate "8.8.8.8"; expected = false; }; testIsLoopback127 = { expr = validate.isLoopback "127.0.0.1"; expected = true; }; testIsLoopback127Any = { expr = validate.isLoopback "127.255.255.254"; expected = true; }; testIsLoopbackFalse = { expr = validate.isLoopback "128.0.0.1"; expected = false; }; testIsLinkLocalTrue = { expr = validate.isLinkLocal "169.254.1.1"; expected = true; }; testIsLinkLocalFalse = { expr = validate.isLinkLocal "169.255.1.1"; expected = false; }; testIsMulticastTrue = { expr = validate.isMulticast "224.0.0.1"; expected = true; }; testIsMulticastMax = { expr = validate.isMulticast "239.255.255.255"; expected = true; }; testIsMulticastFalse = { expr = validate.isMulticast "223.255.255.255"; expected = false; }; testIsBroadcastTrue = { expr = validate.isBroadcast "255.255.255.255"; expected = true; }; testIsBroadcastFalse = { expr = validate.isBroadcast "255.255.255.254"; expected = false; }; testIsUnspecifiedTrue = { expr = validate.isUnspecified "0.0.0.0"; expected = true; }; testIsUnspecifiedFalse = { expr = validate.isUnspecified "0.0.0.1"; expected = false; }; testIsDocumentation192 = { expr = validate.isDocumentation "192.0.2.1"; expected = true; }; testIsDocumentation198 = { expr = validate.isDocumentation "198.51.100.50"; expected = true; }; testIsDocumentation203 = { expr = validate.isDocumentation "203.0.113.100"; expected = true; }; testIsDocumentationFalse = { expr = validate.isDocumentation "192.0.3.1"; expected = false; }; testIsGlobalUnicastPublic = { expr = validate.isGlobalUnicast "8.8.8.8"; expected = true; }; testIsGlobalUnicastPrivate = { expr = validate.isGlobalUnicast "192.168.1.1"; expected = false; }; testIsGlobalUnicastLoopback = { expr = validate.isGlobalUnicast "127.0.0.1"; expected = false; }; testClassifyLoopback = { expr = validate.classify "127.0.0.1"; expected = "loopback"; }; testClassifyPrivate = { expr = validate.classify "192.168.1.1"; expected = "private"; }; testClassifyLinkLocal = { expr = validate.classify "169.254.1.1"; expected = "link-local"; }; testClassifyMulticast = { expr = validate.classify "224.0.0.1"; expected = "multicast"; }; testClassifyGlobal = { expr = validate.classify "8.8.8.8"; expected = "global-unicast"; }; }