]> Sergey Matveev's repositories - btrtrc.git/blob - iplist/cidr_test.go
Drop support for go 1.20
[btrtrc.git] / iplist / cidr_test.go
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 }