42 lines
1.3 KiB
Go
42 lines
1.3 KiB
Go
|
package iplist
|
||
|
|
||
|
import (
|
||
|
"bytes"
|
||
|
"net"
|
||
|
"testing"
|
||
|
|
||
|
"github.com/stretchr/testify/assert"
|
||
|
"github.com/stretchr/testify/require"
|
||
|
)
|
||
|
|
||
|
func TestIPNetLast(t *testing.T) {
|
||
|
_, in, err := net.ParseCIDR("138.255.252.0/22")
|
||
|
require.NoError(t, err)
|
||
|
assert.EqualValues(t, []byte{138, 255, 252, 0}, in.IP)
|
||
|
assert.EqualValues(t, []byte{255, 255, 252, 0}, in.Mask)
|
||
|
assert.EqualValues(t, []byte{138, 255, 255, 255}, IPNetLast(in))
|
||
|
_, in, err = net.ParseCIDR("2400:cb00::/31")
|
||
|
require.NoError(t, err)
|
||
|
assert.EqualValues(t, []byte{0x24, 0, 0xcb, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, in.IP)
|
||
|
assert.EqualValues(t, []byte{255, 255, 255, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, in.Mask)
|
||
|
assert.EqualValues(t, []byte{0x24, 0, 0xcb, 1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, IPNetLast(in))
|
||
|
}
|
||
|
|
||
|
func TestParseCIDRList(t *testing.T) {
|
||
|
r := bytes.NewBufferString(`2400:cb00::/32
|
||
|
2405:8100::/32
|
||
|
2405:b500::/32
|
||
|
2606:4700::/32
|
||
|
2803:f800::/32
|
||
|
2c0f:f248::/32
|
||
|
2a06:98c0::/29
|
||
|
`)
|
||
|
rs, err := ParseCIDRListReader(r)
|
||
|
require.NoError(t, err)
|
||
|
require.Len(t, rs, 7)
|
||
|
assert.EqualValues(t, Range{
|
||
|
First: net.IP{0x28, 3, 0xf8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
|
||
|
Last: net.IP{0x28, 3, 0xf8, 0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
|
||
|
}, rs[4])
|
||
|
}
|