package netutil

import "testing"

func TestIsIP_IPv4(t *testing.T) {
	if !IsIP("192.168.1.1") {
		t.Error("expected true for valid IPv4")
	}
	if !IsIP("10.0.0.1") {
		t.Error("expected true for valid IPv4")
	}
	if !IsIP("0.0.0.0") {
		t.Error("expected true for 0.0.0.0")
	}
	if !IsIP("255.255.255.255") {
		t.Error("expected true for 255.255.255.255")
	}
}

func TestIsIP_IPv6(t *testing.T) {
	if !IsIP("::1") {
		t.Error("expected true for loopback IPv6")
	}
	if !IsIP("2001:db8::1") {
		t.Error("expected true for valid IPv6")
	}
	if !IsIP("fe80::1") {
		t.Error("expected true for link-local IPv6")
	}
}

func TestIsIP_Invalid(t *testing.T) {
	if IsIP("") {
		t.Error("expected false for empty string")
	}
	if IsIP("example.com") {
		t.Error("expected false for domain name")
	}
	if IsIP("not-an-ip") {
		t.Error("expected false for random string")
	}
	if IsIP("999.999.999.999") {
		t.Error("expected false for invalid octets")
	}
	if IsIP("192.168.1") {
		t.Error("expected false for incomplete IPv4")
	}
}
