github.com/anacrolix/torrent@v1.61.0/iplist/cidr_test.go (about)

     1  package iplist
     2  
     3  import (
     4  	"bytes"
     5  	"net"
     6  	"testing"
     7  
     8  	"github.com/stretchr/testify/assert"
     9  	"github.com/stretchr/testify/require"
    10  )
    11  
    12  func TestIPNetLast(t *testing.T) {
    13  	_, in, err := net.ParseCIDR("138.255.252.0/22")
    14  	require.NoError(t, err)
    15  	assert.EqualValues(t, []byte{138, 255, 252, 0}, in.IP)
    16  	assert.EqualValues(t, []byte{255, 255, 252, 0}, in.Mask)
    17  	assert.EqualValues(t, []byte{138, 255, 255, 255}, IPNetLast(in))
    18  	_, in, err = net.ParseCIDR("2400:cb00::/31")
    19  	require.NoError(t, err)
    20  	assert.EqualValues(t, []byte{0x24, 0, 0xcb, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, in.IP)
    21  	assert.EqualValues(t, []byte{255, 255, 255, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, in.Mask)
    22  	assert.EqualValues(t, []byte{0x24, 0, 0xcb, 1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, IPNetLast(in))
    23  }
    24  
    25  func TestParseCIDRList(t *testing.T) {
    26  	r := bytes.NewBufferString(`2400:cb00::/32
    27  2405:8100::/32
    28  2405:b500::/32
    29  2606:4700::/32
    30  2803:f800::/32
    31  2c0f:f248::/32
    32  2a06:98c0::/29
    33  `)
    34  	rs, err := ParseCIDRListReader(r)
    35  	require.NoError(t, err)
    36  	require.Len(t, rs, 7)
    37  	assert.EqualValues(t, Range{
    38  		First: net.IP{0x28, 3, 0xf8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
    39  		Last:  net.IP{0x28, 3, 0xf8, 0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
    40  	}, rs[4])
    41  }