--- /dev/null
+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])
+}