#!/usr/bin/env bash set -euo pipefail ROOT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." && pwd) # shellcheck source=tests/lib/assert.sh source "${ROOT_DIR}/tests/lib/assert.sh" # shellcheck source=lib/common.sh source "${ROOT_DIR}/lib/common.sh" status_of() { set +e "$@" >/dev/null 2>&1 local rc=$? set -e printf '%s\n' "${rc}" } assert_status 0 "$(status_of validate_ipv4 '0.0.0.0')" 'validate_ipv4 should accept 0.0.0.0' assert_status 0 "$(status_of validate_ipv4 '192.168.1.1')" 'validate_ipv4 should accept private address' assert_status 0 "$(status_of validate_ipv4 '255.255.255.255')" 'validate_ipv4 should accept broadcast' assert_status 1 "$(status_of validate_ipv4 '256.1.1.1')" 'validate_ipv4 should reject overflow octet' assert_status 1 "$(status_of validate_ipv4 '1.2.3')" 'validate_ipv4 should reject short address' assert_status 1 "$(status_of validate_ipv4 'abc')" 'validate_ipv4 should reject text' assert_status 1 "$(status_of validate_ipv4 '')" 'validate_ipv4 should reject empty string' assert_status 0 "$(status_of validate_ipv6 '::1')" 'validate_ipv6 should accept loopback' assert_status 0 "$(status_of validate_ipv6 '2001:db8::1')" 'validate_ipv6 should accept compressed address' assert_status 0 "$(status_of validate_ipv6 'fe80::1%eth0')" 'validate_ipv6 should accept scoped address' assert_status 1 "$(status_of validate_ipv6 ':::1')" 'validate_ipv6 should reject malformed address' assert_status 1 "$(status_of validate_ipv6 '1.2.3.4')" 'validate_ipv6 should reject ipv4 literal' assert_status 1 "$(status_of validate_ipv6 '')" 'validate_ipv6 should reject empty string' assert_status 0 "$(status_of validate_port '1')" 'validate_port should accept lower bound' assert_status 0 "$(status_of validate_port '65535')" 'validate_port should accept upper bound' assert_status 1 "$(status_of validate_port '0')" 'validate_port should reject zero' assert_status 1 "$(status_of validate_port '65536')" 'validate_port should reject overflow' assert_status 1 "$(status_of validate_port '-1')" 'validate_port should reject negative' assert_status 1 "$(status_of validate_port 'abc')" 'validate_port should reject text' assert_status 0 "$(status_of validate_proto 'tcp')" 'validate_proto should accept tcp' assert_status 0 "$(status_of validate_proto 'udp')" 'validate_proto should accept udp' assert_status 0 "$(status_of validate_proto 'both')" 'validate_proto should accept both' assert_status 1 "$(status_of validate_proto 'icmp')" 'validate_proto should reject unsupported protocol' assert_status 0 "$(status_of validate_ipver '4')" 'validate_ipver should accept 4' assert_status 0 "$(status_of validate_ipver '6')" 'validate_ipver should accept 6' assert_status 0 "$(status_of validate_ipver 'both')" 'validate_ipver should accept both' assert_status 1 "$(status_of validate_ipver '5')" 'validate_ipver should reject unsupported family' pass 'test_common.sh'