@@ -19,6 +19,7 @@ package net
1919import (
2020 "fmt"
2121 "net"
22+ "net/netip"
2223 "testing"
2324)
2425
@@ -87,8 +88,10 @@ func TestIsDualStack(t *testing.T) {
8788 for _ , tc := range testCases {
8889 t .Run (tc .desc , func (t * testing.T ) {
8990 netips := make ([]net.IP , len (tc .ips ))
91+ addrs := make ([]netip.Addr , len (tc .ips ))
9092 for i := range tc .ips {
9193 netips [i ] = ParseIPSloppy (tc .ips [i ])
94+ addrs [i ], _ = netip .ParseAddr (tc .ips [i ])
9295 }
9396
9497 dualStack := IsDualStack (tc .ips )
@@ -106,6 +109,14 @@ func TestIsDualStack(t *testing.T) {
106109 if IsDualStackPair (netips ) != (dualStack && len (tc .ips ) == 2 ) {
107110 t .Errorf ("IsDualStackIPPair gave wrong result for []net.IP" )
108111 }
112+
113+ dualStack = IsDualStack (addrs )
114+ if dualStack != tc .expectedResult {
115+ t .Errorf ("expected %v []netip.Addr got %v" , tc .expectedResult , dualStack )
116+ }
117+ if IsDualStackPair (addrs ) != (dualStack && len (tc .ips ) == 2 ) {
118+ t .Errorf ("IsDualStackIPPair gave wrong result for []netip.Addr" )
119+ }
109120 })
110121 }
111122}
@@ -166,8 +177,10 @@ func TestIsDualStackCIDRs(t *testing.T) {
166177 for _ , tc := range testCases {
167178 t .Run (tc .desc , func (t * testing.T ) {
168179 ipnets := make ([]* net.IPNet , len (tc .cidrs ))
180+ prefixes := make ([]netip.Prefix , len (tc .cidrs ))
169181 for i := range tc .cidrs {
170182 _ , ipnets [i ], _ = ParseCIDRSloppy (tc .cidrs [i ])
183+ prefixes [i ], _ = netip .ParsePrefix (tc .cidrs [i ])
171184 }
172185
173186 dualStack := IsDualStackCIDRs (tc .cidrs )
@@ -185,6 +198,14 @@ func TestIsDualStackCIDRs(t *testing.T) {
185198 if IsDualStackCIDRPair (ipnets ) != (dualStack && len (tc .cidrs ) == 2 ) {
186199 t .Errorf ("IsDualStackCIDRPair gave wrong result for []*net.IPNet" )
187200 }
201+
202+ dualStack = IsDualStackCIDRs (prefixes )
203+ if dualStack != tc .expectedResult {
204+ t .Errorf ("expected %v []netip.Prefix got %v" , tc .expectedResult , dualStack )
205+ }
206+ if IsDualStackCIDRPair (prefixes ) != (dualStack && len (tc .cidrs ) == 2 ) {
207+ t .Errorf ("IsDualStackCIDRPair gave wrong result for []netip.Prefix" )
208+ }
188209 })
189210 }
190211}
@@ -221,6 +242,12 @@ func TestIPFamilyOf(t *testing.T) {
221242 isIPv6 := IsIPv6 (ip )
222243 checkOneIPFamily (t , ip .String (), tc .family , family , isIPv4 , isIPv6 )
223244 }
245+ for _ , addr := range tc .addrs {
246+ family := IPFamilyOf (addr )
247+ isIPv4 := IsIPv4 (addr )
248+ isIPv6 := IsIPv6 (addr )
249+ checkOneIPFamily (t , addr .String (), tc .family , family , isIPv4 , isIPv6 )
250+ }
224251 })
225252 }
226253
@@ -236,6 +263,12 @@ func TestIPFamilyOf(t *testing.T) {
236263 isIPv6 := IsIPv6 (ip )
237264 checkOneIPFamily (t , fmt .Sprintf ("%#v" , ip ), IPFamilyUnknown , family , isIPv4 , isIPv6 )
238265 }
266+ for _ , addr := range tc .addrs {
267+ family := IPFamilyOf (addr )
268+ isIPv4 := IsIPv4 (addr )
269+ isIPv6 := IsIPv6 (addr )
270+ checkOneIPFamily (t , fmt .Sprintf ("%#v" , addr ), IPFamilyUnknown , family , isIPv4 , isIPv6 )
271+ }
239272 for _ , str := range tc .strings {
240273 family := IPFamilyOf (str )
241274 isIPv4 := IsIPv4 (str )
@@ -265,6 +298,12 @@ func TestIPFamilyOfCIDR(t *testing.T) {
265298 isIPv6 := IsIPv6CIDR (ipnet )
266299 checkOneIPFamily (t , ipnet .String (), tc .family , family , isIPv4 , isIPv6 )
267300 }
301+ for _ , prefix := range tc .prefixes {
302+ family := IPFamilyOfCIDR (prefix )
303+ isIPv4 := IsIPv4CIDR (prefix )
304+ isIPv6 := IsIPv6CIDR (prefix )
305+ checkOneIPFamily (t , prefix .String (), tc .family , family , isIPv4 , isIPv6 )
306+ }
268307 })
269308 }
270309
@@ -284,6 +323,12 @@ func TestIPFamilyOfCIDR(t *testing.T) {
284323 }
285324 checkOneIPFamily (t , str , IPFamilyUnknown , family , isIPv4 , isIPv6 )
286325 }
326+ for _ , prefix := range tc .prefixes {
327+ family := IPFamilyOfCIDR (prefix )
328+ isIPv4 := IsIPv4CIDR (prefix )
329+ isIPv6 := IsIPv6CIDR (prefix )
330+ checkOneIPFamily (t , fmt .Sprintf ("%#v" , prefix ), IPFamilyUnknown , family , isIPv4 , isIPv6 )
331+ }
287332 for _ , str := range tc .strings {
288333 family := IPFamilyOfCIDR (str )
289334 isIPv4 := IsIPv4CIDR (str )
0 commit comments