@ -251,41 +251,30 @@ func TestNoAllocs(t *testing.T) {
func TestParseIPSet ( t * testing . T ) {
func TestParseIPSet ( t * testing . T ) {
tests := [ ] struct {
tests := [ ] struct {
host string
host string
bits int
want [ ] netip . Prefix
want [ ] netip . Prefix
wantErr string
wantErr string
} {
} {
{ "8.8.8.8" , 24 , pfx ( "8.8.8.8/24" ) , "" } ,
{ "8.8.8.8" , pfx ( "8.8.8.8/32" ) , "" } ,
{ "2601:1234::" , 64 , pfx ( "2601:1234::/64" ) , "" } ,
{ "1::2" , pfx ( "1::2/128" ) , "" } ,
{ "8.8.8.8" , 33 , nil , ` invalid CIDR size 33 for IP "8.8.8.8" ` } ,
{ "8.8.8.0/24" , pfx ( "8.8.8.0/24" ) , "" } ,
{ "8.8.8.8" , - 1 , pfx ( "8.8.8.8/32" ) , "" } ,
{ "8.8.8.8/24" , nil , "8.8.8.8/24 contains non-network bits set" } ,
{ "8.8.8.8" , 32 , pfx ( "8.8.8.8/32" ) , "" } ,
{ "1.0.0.0-1.255.255.255" , pfx ( "1.0.0.0/8" ) , "" } ,
{ "8.8.8.8/24" , - 1 , nil , "8.8.8.8/24 contains non-network bits set" } ,
{ "1.0.0.0-2.1.2.3" , pfx ( "1.0.0.0/8" , "2.0.0.0/16" , "2.1.0.0/23" , "2.1.2.0/30" ) , "" } ,
{ "8.8.8.0/24" , 18 , pfx ( "8.8.8.0/24" ) , "" } , // the 18 is ignored
{ "1.0.0.2-1.0.0.1" , nil , "invalid IP range \"1.0.0.2-1.0.0.1\"" } ,
{ "1.0.0.0-1.255.255.255" , 5 , pfx ( "1.0.0.0/8" ) , "" } ,
{ "*" , pfx ( "0.0.0.0/0" , "::/0" ) , "" } ,
{ "1.0.0.0-2.1.2.3" , 5 , pfx ( "1.0.0.0/8" , "2.0.0.0/16" , "2.1.0.0/23" , "2.1.2.0/30" ) , "" } ,
{ "1.0.0.2-1.0.0.1" , - 1 , nil , "invalid IP range \"1.0.0.2-1.0.0.1\"" } ,
{ "2601:1234::" , 129 , nil , ` invalid CIDR size 129 for IP "2601:1234::" ` } ,
{ "0.0.0.0" , 24 , pfx ( "0.0.0.0/24" ) , "" } ,
{ "::" , 64 , pfx ( "::/64" ) , "" } ,
{ "*" , 24 , pfx ( "0.0.0.0/0" , "::/0" ) , "" } ,
}
}
for _ , tt := range tests {
for _ , tt := range tests {
var bits * int
got , err := parseIPSet ( tt . host )
if tt . bits != - 1 {
bits = & tt . bits
}
got , err := parseIPSet ( tt . host , bits )
if err != nil {
if err != nil {
if err . Error ( ) == tt . wantErr {
if err . Error ( ) == tt . wantErr {
continue
continue
}
}
t . Errorf ( "parseIPSet(%q , %v ) error: %v; want error %q", tt . host , tt . bits , err , tt . wantErr )
t . Errorf ( "parseIPSet(%q ) error: %v; want error %q", tt . host , err , tt . wantErr )
}
}
compareIP := cmp . Comparer ( func ( a , b netip . Addr ) bool { return a == b } )
compareIP := cmp . Comparer ( func ( a , b netip . Addr ) bool { return a == b } )
compareIPPrefix := cmp . Comparer ( func ( a , b netip . Prefix ) bool { return a == b } )
compareIPPrefix := cmp . Comparer ( func ( a , b netip . Prefix ) bool { return a == b } )
if diff := cmp . Diff ( got , tt . want , compareIP , compareIPPrefix ) ; diff != "" {
if diff := cmp . Diff ( got , tt . want , compareIP , compareIPPrefix ) ; diff != "" {
t . Errorf ( "parseIPSet(%q , %v ) = %s; want %s", tt . host , tt . bits , got , tt . want )
t . Errorf ( "parseIPSet(%q ) = %s; want %s", tt . host , got , tt . want )
continue
continue
}
}
}
}