@@ -42,75 +42,76 @@ func TestNewNet(t *testing.T) {
4242}
4343
4444var NewNetBetweenTests = []struct {
45- start net.IP
46- end net.IP
47- xnet string
48- exact bool
49- err error
45+ start net.IP
46+ end net.IP
47+ xnet string
48+ exact bool
49+ err error
50+ netslen int
5051}{
51- {
52- net .ParseIP ("192.168.0.255" ), net .ParseIP ("192.168.2.0" ),
53- "192.168.1.0/24" , false , nil ,
54- },
55- {
52+ { // 0
5653 net .ParseIP ("192.168.0.255" ), net .ParseIP ("10.0.0.0" ),
57- "" , false , ErrNoValidRange ,
54+ "" , false , ErrNoValidRange , 0 ,
5855 },
5956 {
6057 net .ParseIP ("192.168.0.255" ), net .ParseIP ("2001:db8:0:1::" ),
61- "" , false , ErrNoValidRange ,
58+ "" , false , ErrNoValidRange , 0 ,
6259 },
6360 {
6461 net .ParseIP ("2001:db8:0:1::" ), net .ParseIP ("192.168.0.255" ),
65- "" , false , ErrNoValidRange ,
62+ "" , false , ErrNoValidRange , 0 ,
6663 },
6764 {
68- net .ParseIP ("192.168.0.255 " ), net .ParseIP ("192.168.0.255 " ),
69- "" , false , ErrNoValidRange ,
65+ net .ParseIP ("2001:db8:0:1:: " ), net .ParseIP ("2001:db8:: " ),
66+ "" , false , ErrNoValidRange , 0 ,
7067 },
7168 {
72- net .ParseIP ("192.168.0.255" ), net .ParseIP ("192.168.1.1 " ),
73- "192.168.1.0 /32" , true , nil ,
69+ net .ParseIP ("192.168.0.255" ), net .ParseIP ("192.168.0.255 " ),
70+ "192.168.0.255 /32" , true , nil , 1 ,
7471 },
75- {
76- net .ParseIP ("192.168.1.0 " ), net .ParseIP ("192.168.1.2 " ),
77- "192.168.1.1/32 " , true , nil ,
72+ { // 5
73+ net .ParseIP ("2001:db8:0:1:: " ), net .ParseIP ("2001:db8:0:1:: " ),
74+ "2001:db8:0:1::/128 " , true , nil , 1 ,
7875 },
7976 {
80- net .ParseIP ("192.168.0.255 " ), net .ParseIP ("192.168.1.2 " ),
81- "192.168.1.0/31 " , true , nil ,
77+ net .ParseIP ("192.168.1.0 " ), net .ParseIP ("192.168.2.0 " ),
78+ "192.168.1.0/24 " , false , nil , 2 ,
8279 },
8380 {
84- net .ParseIP ("192.168.0.255 " ), net .ParseIP ("192.168.1.3 " ),
85- "192.168.1.0/31 " , false , nil ,
81+ net .ParseIP ("2001:db8:1:: " ), net .ParseIP ("2001:db8:2:: " ),
82+ "2001:db8:1::/48 " , false , nil , 2 ,
8683 },
8784 {
88- net .ParseIP ("192.168.1.0" ), net .ParseIP ("192.168.1.3 " ),
89- "192.168.1.0/30 " , true , nil ,
85+ net .ParseIP ("192.168.1.0" ), net .ParseIP ("192.168.1.255 " ),
86+ "192.168.1.0/24 " , true , nil , 1 ,
9087 },
9188 {
92- net .ParseIP ("192.168.0.255 " ), net .ParseIP ("192.168.1.4 " ),
93- "192.168.1.0/30 " , false , nil ,
89+ net .ParseIP ("2001:db8:1:: " ), net .ParseIP ("2001:db8:1:ffff:ffff:ffff:ffff:ffff " ),
90+ "2001:db8:1::/48 " , true , nil , 1 ,
9491 },
95- {
96- net .ParseIP ("192.168.0.255 " ), net .ParseIP ("192.168.1.5 " ),
97- "192.168.1.0/30 " , false , nil ,
92+ { // 10
93+ net .ParseIP ("192.168.1.0 " ), net .ParseIP ("192.168.1.1 " ),
94+ "192.168.1.0/31 " , true , nil , 1 ,
9895 },
9996 {
100- net .ParseIP ("192.168.0.254 " ), net .ParseIP ("192.168.2.0 " ),
101- "192.168.0.255/32 " , false , nil ,
97+ net .ParseIP ("2001:db8:1:: " ), net .ParseIP ("2001:db8:1::1 " ),
98+ "2001:db8:1::/127 " , true , nil , 1 ,
10299 },
103100 {
104- net .ParseIP ("192.168.0.255" ), net .ParseIP ("192.168.2.0 " ),
105- "192.168.1.0/24 " , false , nil ,
101+ net .ParseIP ("192.168.0.255" ), net .ParseIP ("192.168.1.2 " ),
102+ "192.168.0.255/32 " , false , nil , 3 ,
106103 },
107104 {
108- net .ParseIP ("12.168.0.254 " ), net .ParseIP ("12.168.0.255 " ),
109- "12.168.0.254/32 " , true , nil ,
105+ net .ParseIP ("2001:db8:0:ffff:ffff:ffff:ffff:ffff " ), net .ParseIP ("2001:db8:1::1 " ),
106+ "2001:db8:0:ffff:ffff:ffff:ffff:ffff/128 " , false , nil , 2 ,
110107 },
111108 {
112- net .ParseIP ("2001:db7:ffff:ffff:ffff:ffff:ffff:ffff" ), net .ParseIP ("2001:db8:0:1::" ),
113- "2001:db8::/64" , true , nil ,
109+ net .ParseIP ("10.0.0.0" ), net .ParseIP ("255.0.0.0" ),
110+ "10.0.0.0/7" , false , nil , 13 ,
111+ },
112+ { // 15
113+ net .ParseIP ("2001:db8::" ), net .ParseIP ("2001:db8:ffff:ffff:ffff:ffff:ffff::" ),
114+ "2001:db8::/33" , false , nil , 81 ,
114115 },
115116}
116117
@@ -133,6 +134,23 @@ func TestNewNetBetween(t *testing.T) {
133134 }
134135}
135136
137+ func TestAllNetsBetween (t * testing.T ) {
138+ for i , tt := range NewNetBetweenTests {
139+ //t.Logf("[%d] nets between %s and %s", i, tt.start, tt.end)
140+ xnets , err := AllNetsBetween (tt .start , tt .end )
141+ //t.Logf("[%d] got %+v, '%v'", i, xnets, err)
142+ if e := compareErrors (err , tt .err ); len (e ) > 0 {
143+ t .Errorf ("[%d] expected error '%v', got '%v'" , i , tt .err , err )
144+ }
145+ if tt .err == nil {
146+ if len (xnets ) != tt .netslen {
147+ t .Logf ("[%d] AllNetsBetween(%s, %s) [%+v]" , i , tt .start , tt .end , xnets )
148+ t .Errorf ("[%d] expected %d networks, got %d" , i , tt .netslen , len (xnets ))
149+ }
150+ }
151+ }
152+ }
153+
136154var ParseCIDRTests = []struct {
137155 s string
138156 xnet string
0 commit comments