1
0
mirror of https://github.com/charlienet/go-mixed.git synced 2025-07-17 16:12:42 +08:00
Files
go-mixed/ip_range/ip_range_test.go
2022-07-28 14:27:23 +08:00

131 lines
2.8 KiB
Go

package iprange
import (
"net/netip"
"testing"
"github.com/stretchr/testify/assert"
)
func TestSingleErrorIP(t *testing.T) {
values := []string{
"192.168.01",
"::",
}
for _, v := range values {
r, err := NewRange(v)
t.Log(r, err)
}
}
func TestSingleIp(t *testing.T) {
r, err := NewRange("192.168.0.1")
if err != nil {
t.Fatal(err)
}
assert.True(t, r.Contains("192.168.0.1"))
assert.False(t, r.Contains("192.168.0.123"))
}
func TestSinglePrefix(t *testing.T) {
r, err := NewRange("192.168.2.100/32")
if err != nil {
t.Fatal(err)
}
assert.False(t, r.Contains("192.168.2.56"))
assert.True(t, r.Contains("192.168.2.100"))
assert.False(t, r.Contains("192.168.2.130"))
}
func TestAllIp(t *testing.T) {
r, err := NewRange("0.0.0.0/0")
if err != nil {
t.Fatal(err)
}
assert.True(t, r.Contains("192.168.2.100"))
assert.True(t, r.Contains("192.3.2.100"))
assert.True(t, r.Contains("192.65.2.100"))
assert.True(t, r.Contains("172.168.2.100"))
assert.True(t, r.Contains("8.8.8.8"))
assert.True(t, r.Contains("114.114.114.114"))
}
func TestPrefix(t *testing.T) {
r, err := NewRange("192.168.2.0/24")
if err != nil {
t.Fatal(err)
}
assert.True(t, r.Contains("192.168.2.12"))
assert.True(t, r.Contains("192.168.2.162"))
assert.False(t, r.Contains("192.168.3.162"))
}
func TestPrefix2(t *testing.T) {
r, err := NewRange("192.168.15.0/21")
if err != nil {
t.Fatal(err)
}
assert.True(t, r.Contains("192.168.8.10"))
assert.True(t, r.Contains("192.168.14.162"))
assert.False(t, r.Contains("192.168.3.162"))
assert.False(t, r.Contains("192.168.2.162"))
}
func TestDotMask(t *testing.T) {
r, err := NewRange("192.168.15.0/255.255.248.0")
if err != nil {
t.Fatal(err)
}
assert.True(t, r.Contains("192.168.8.10"))
assert.True(t, r.Contains("192.168.14.162"))
assert.False(t, r.Contains("192.168.3.162"))
assert.False(t, r.Contains("192.168.2.162"))
}
func TestRange(t *testing.T) {
r, err := NewRange("192.168.2.20-192.168.2.30")
if err != nil {
t.Fatal(err)
}
assert.True(t, r.Contains("192.168.2.20"))
assert.True(t, r.Contains("192.168.2.21"))
assert.True(t, r.Contains("192.168.2.30"))
assert.False(t, r.Contains("192.168.2.10"))
assert.False(t, r.Contains("192.168.2.31"))
}
func TestLocalhost(t *testing.T) {
r, err := NewRange("::1")
if err != nil {
t.Fatal(err)
}
assert.True(t, r.Contains("::1"))
}
func TestNetIP(t *testing.T) {
addr, err := netip.ParseAddr("192.168.2.10")
if err != nil {
t.Fatal(err)
}
t.Log(netip.MustParseAddr("192.168.2.4").Compare(addr))
t.Log(netip.MustParseAddr("192.168.2.10").Compare(addr))
t.Log(netip.MustParseAddr("192.168.2.11").Compare(addr))
prefix := netip.MustParsePrefix("192.168.2.0/24")
t.Log(prefix.Contains(netip.MustParseAddr("192.168.2.53")))
t.Log(prefix.Contains(netip.MustParseAddr("192.168.3.53")))
}