netaddr 1.5.3 → 2.0.1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of netaddr might be problematic. Click here for more details.

data/test/methods_test.rb DELETED
@@ -1,331 +0,0 @@
1
- #!/usr/bin/ruby
2
-
3
- require_relative "../lib/netaddr.rb"
4
- require 'test/unit'
5
-
6
-
7
-
8
- class TestMethods < Test::Unit::TestCase
9
-
10
- def test_i_to_bits
11
- assert_equal(32, NetAddr.i_to_bits(2**32-1) )
12
- assert_equal(24, NetAddr.i_to_bits((2**32 - 2**8 ) ) )
13
- assert_equal(128, NetAddr.i_to_bits(2**128-1) )
14
- assert_equal(96, NetAddr.i_to_bits((2**128 - 2**32)) )
15
-
16
- assert_raise(ArgumentError){ NetAddr.i_to_bits('1') }
17
- assert_raise(ArgumentError){ NetAddr.i_to_bits({}) }
18
- assert_raise(ArgumentError){ NetAddr.i_to_bits('1')}
19
- end
20
-
21
- def test_i_to_ip
22
- assert_raise(ArgumentError) {NetAddr.i_to_ip(2**32-1, :test => true)}
23
- assert_equal('255.255.255.255', NetAddr.i_to_ip(2**32-1) )
24
- assert_equal('0.0.0.0', NetAddr.i_to_ip(0, :Version => 4) )
25
- assert_equal('0000:0000:0000:0000:0000:0000:0000:0000', NetAddr.i_to_ip(0, :Version => 6) )
26
- assert_equal('ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff', NetAddr.i_to_ip(2**128-1) )
27
- assert_equal('0000:0000:0000:0000:0000:0000:ffff:ffff', NetAddr.i_to_ip(2**32-1, :Version => 6) )
28
- assert_equal('0000:0000:0000:0000:0000:ffff:10.1.0.1', NetAddr.i_to_ip(0xffff0a010001,
29
- :IPv4Mapped => true,
30
- :Version => 6) )
31
- assert_raise(ArgumentError){ NetAddr.i_to_ip('1') }
32
- assert_raise(ArgumentError){ NetAddr.i_to_ip({}) }
33
- assert_raise(NetAddr::VersionError){ NetAddr.i_to_ip(0xffffffff,:Version => 5) }
34
- assert_raise(ArgumentError){ NetAddr.i_to_ip('1', :Version => 4) }
35
- end
36
-
37
- def test_ip_to_i
38
- assert_raise(ArgumentError) {NetAddr.ip_to_i('255.255.255.255', :test => true)}
39
- assert_equal(2**128-1, NetAddr.ip_to_i('ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff') )
40
- assert_equal(1, NetAddr.ip_to_i('::1') )
41
- assert_equal(2**32-1, NetAddr.ip_to_i('255.255.255.255') )
42
- assert_equal(2**128-1, NetAddr.ip_to_i('ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255') )
43
- assert_equal(0, NetAddr.ip_to_i('::') )
44
- assert_equal(2**32-1, NetAddr.ip_to_i('::255.255.255.255') )
45
- assert_equal(0x0a0a0a0a, NetAddr.ip_to_i('10.10.10.10') )
46
- assert_equal(2**127+1, NetAddr.ip_to_i('8000::0.0.0.1') )
47
- assert_equal(0x8080000000000000000080800a0a0a0a, NetAddr.ip_to_i('8080::8080:10.10.10.10') )
48
- assert_equal(0xffff0a010001, NetAddr.ip_to_i('::ffff:10.1.0.1') )
49
- assert_equal(2**127+1, NetAddr.ip_to_i('8000::1') )
50
- assert_equal(1, NetAddr.ip_to_i('::1') )
51
- assert_equal(2**127, NetAddr.ip_to_i('8000::') )
52
-
53
- assert_raise(ArgumentError){ NetAddr.ip_to_i({}) }
54
- assert_raise(NetAddr::VersionError){ NetAddr.ip_to_i('192.168.1.1',:Version => 5) }
55
- assert_raise(ArgumentError){ NetAddr.ip_to_i(0xffffffff,:Version => 4) }
56
- end
57
-
58
- def test_merge
59
- assert_raise(ArgumentError){ NetAddr.merge(1) }
60
- assert_raise(ArgumentError){ NetAddr.merge({}) }
61
-
62
- subs = NetAddr::CIDR.create('10.0.0.0/24').subnet(:Bits => 26, :Objectify => true)
63
- subs.concat( NetAddr::CIDR.create('10.1.0.0/24').subnet(:Bits => 29, :NumSubnets => 4, :Objectify => true) )
64
- subs.delete_at(2)
65
- subs.delete_at(7)
66
- assert_equal(['10.0.0.0/25', '10.0.0.192/26', '10.1.0.0/27', '10.1.0.64/26', '10.1.0.128/25'], NetAddr.merge(subs) )
67
-
68
- cidr = NetAddr::CIDR.create('fec0::/64')
69
- subs = cidr.range(1, 8, :Objectify => true)
70
- subs.concat([NetAddr::CIDR.create('192.168.0.0/27'), NetAddr::CIDR.create('192.168.0.32/27')])
71
- assert_equal(['192.168.0.0/26', 'fec0::1/128', 'fec0::2/127', 'fec0::4/126', 'fec0::8/128',], NetAddr.merge(subs, :Short => true) )
72
-
73
- subs = []
74
- NetAddr.range('192.168.35.0','192.168.39.255',
75
- :Inclusive => true, :Bitstep => 32).each {|x| subs.push(NetAddr::CIDR.create("#{x}/27")) }
76
- assert_equal(['192.168.35.0/24', '192.168.36.0/22'], NetAddr.merge(subs) )
77
-
78
- subs = NetAddr::CIDR.create('10.0.0.0/24').subnet(:Bits => 26, :Objectify => true)
79
- subs.concat( subs.pop.subnet(:Bits => 27, :Objectify => true) )
80
- subs.concat( subs.pop.subnet(:Bits => 28, :Objectify => true) )
81
- subs[5].tag[:test] = true
82
- merged = NetAddr.merge(subs, :Objectify => true)
83
- assert_equal('10.0.0.0/24', merged[0].desc)
84
- assert_equal('10.0.0.240/28', merged[0].tag[:Subnets][5].desc)
85
- assert(merged[0].tag[:Subnets][5].tag[:test])
86
-
87
- assert_equal(['10.0.0.0/8','192.168.0.0/24'], NetAddr.merge(['10.0.0.0/8', '10.0.0.0/12', '10.0.0.0/24','192.168.0.0/24','192.168.0.64/26']) )
88
-
89
- end
90
-
91
- def test_minimum_size
92
- assert_raise(ArgumentError) {NetAddr.minimum_size(200, :test => true)}
93
- assert_equal(24, NetAddr.minimum_size(200))
94
- assert_equal(96, NetAddr.minimum_size(2**32-1, :Version => 6))
95
- assert_equal('255.255.255.0', NetAddr.minimum_size(200, :Extended => true))
96
- assert_equal('255.255.255.224', NetAddr.minimum_size(17, :Extended => true))
97
- assert_equal(24, NetAddr.minimum_size(200, :Extended => false))
98
- assert_equal(96, NetAddr.minimum_size(2**32-1, :Version => 6, :Extended => true))
99
- assert_raise(ArgumentError){ NetAddr.minimum_size({}) }
100
- end
101
-
102
- def test_netmask_to_i
103
- assert_raise(ArgumentError) {NetAddr.netmask_to_i('32', :test => true)}
104
- assert_equal(2**32-1, NetAddr.netmask_to_i('255.255.255.255') )
105
- assert_equal(2**32-1, NetAddr.netmask_to_i('32') )
106
- assert_equal(2**32-1, NetAddr.netmask_to_i('/32') )
107
- assert_equal(2**32-1, NetAddr.netmask_to_i(32) )
108
- assert_equal(2**128-1, NetAddr.netmask_to_i('128', :Version => 6) )
109
- assert_equal(2**128-1, NetAddr.netmask_to_i('/128', :Version => 6) )
110
- assert_equal(2**128-1, NetAddr.netmask_to_i(128, :Version => 6) )
111
- assert_raise(ArgumentError){ NetAddr.netmask_to_i({}) }
112
- assert_raise(NetAddr::VersionError){ NetAddr.netmask_to_i('/24',:Version => 5) }
113
- assert_raise(ArgumentError){ NetAddr.netmask_to_i([], :Version => 4) }
114
- end
115
-
116
- def test_range
117
- cidr4_1 = NetAddr::CIDR.create('192.168.1.0/24')
118
- cidr4_2 = NetAddr::CIDR.create('192.168.1.50/24')
119
- cidr4_3 = NetAddr::CIDR.create('192.168.1.2/24')
120
- cidr6_1 = NetAddr::CIDR.create('fec0::/64')
121
- cidr6_2 = NetAddr::CIDR.create('fec0::32/64')
122
-
123
- assert_raise(ArgumentError) {NetAddr.range(cidr4_1,cidr4_2, :test => true)}
124
- assert_equal(['192.168.1.1'], NetAddr.range(cidr4_1,cidr4_2, :Limit => 1) )
125
- assert_equal(['fec0:0000:0000:0000:0000:0000:0000:0001'], NetAddr.range(cidr6_1,cidr6_2, :Limit => 1) )
126
-
127
- list = NetAddr.range('192.168.1.0/24','192.168.1.50/24', :Bitstep => 2)
128
- assert_equal(25, list.length)
129
- assert_equal('192.168.1.49', list[24])
130
-
131
- list = NetAddr.range(cidr4_1,cidr4_3, :Objectify => true)
132
- assert_kind_of(NetAddr::CIDR, list[0])
133
- assert_equal('192.168.1.1/32', (list[0]).desc)
134
-
135
- assert_raise(ArgumentError){ NetAddr.range(:Limit => 1) }
136
- assert_raise(NetAddr::VersionError){ NetAddr.range(cidr4_1,cidr6_2) }
137
-
138
- assert_equal(256, NetAddr.range('192.168.0.0', '192.168.0.255', :Size => true, :Inclusive => true) )
139
- end
140
-
141
- def test_shorten
142
- assert_equal('fec0::', NetAddr.shorten('fec0:0000:0000:0000:0000:0000:0000:0000') )
143
- assert_equal('fec0::2:0:0:1', NetAddr.shorten('fec0:0000:0000:0000:0002:0000:0000:0001') )
144
- assert_equal('fec0::2:0:0:1', NetAddr.shorten('fec0:00:0000:0:02:0000:0:1') )
145
- assert_equal('fec0::2:2:0:0:1', NetAddr.shorten('fec0:0000:0000:0002:0002:0000:0000:0001') )
146
- assert_equal('fec0:0:0:1::', NetAddr.shorten('fec0:0000:0000:0001:0000:0000:0000:0000') )
147
- assert_equal('fec0:1:1:1:1:1:1:1', NetAddr.shorten('fec0:0001:0001:0001:0001:0001:0001:0001') )
148
- assert_equal('fec0:ffff:ffff:0:ffff:ffff:ffff:ffff', NetAddr.shorten('fec0:ffff:ffff:0000:ffff:ffff:ffff:ffff') )
149
- assert_equal('fec0:ffff:ffff:ffff:ffff:ffff:ffff:ffff', NetAddr.shorten('fec0:ffff:ffff:ffff:ffff:ffff:ffff:ffff') )
150
- assert_equal('fec0::', NetAddr.shorten('fec0::') )
151
- assert_equal('fec0::192.168.1.1', NetAddr.shorten('fec0:0:0:0:0:0:192.168.1.1') )
152
- assert_raise(ArgumentError){ NetAddr.shorten(1) }
153
- end
154
-
155
- def test_sort
156
- cidr4_1 = NetAddr::CIDR.create('192.168.1.0/24')
157
- cidr4_2 = NetAddr::CIDR.create('192.168.1.128/25')
158
- cidr4_3 = NetAddr::CIDR.create('192.168.1.64/26')
159
- cidr4_4 = NetAddr::CIDR.create('192.168.1.0/30')
160
- cidr4_5 = '192.168.2.0/24'
161
-
162
- cidr6_1 = NetAddr::CIDR.create('fec0::0/64')
163
- cidr6_2 = NetAddr::CIDR.create('fec0::0/10')
164
- cidr6_3 = NetAddr::CIDR.create('fe80::0/10')
165
- cidr6_4 = 'fe80::0'
166
-
167
- sort1 = NetAddr.sort(['192.168.1.0/24','192.168.1.128/25','192.168.1.64/26','192.168.1.0/30','192.168.2.0/24'])
168
- assert_equal(['192.168.1.0/24','192.168.1.0/30','192.168.1.64/26','192.168.1.128/25','192.168.2.0/24'], sort1)
169
- sort1 = NetAddr.sort([cidr4_1,cidr4_2,cidr4_3,cidr4_4,cidr4_5])
170
- assert_equal([cidr4_1,cidr4_4,cidr4_3,cidr4_2,cidr4_5], sort1)
171
-
172
- sort2 = NetAddr.sort(['fec0::0/64','fec0::0/10','fe80::0/10','fe80::0'])
173
- assert_equal(['fe80::0/10','fe80::0','fec0::0/10','fec0::0/64'], sort2)
174
- sort2 = NetAddr.sort([cidr6_1,cidr6_2,cidr6_3,cidr6_4])
175
- assert_equal([cidr6_3,cidr6_4,cidr6_2,cidr6_1], sort2)
176
-
177
- sort3 = NetAddr.sort([cidr4_1,cidr4_2,cidr4_3,cidr4_4,cidr4_5], :Desc => true)
178
- assert_equal([cidr4_5,cidr4_2,cidr4_3,cidr4_1,cidr4_4], sort3)
179
- sort3 = NetAddr.sort(['192.168.1.0/24','192.168.1.128/25','192.168.1.64/26','192.168.1.0/30','192.168.2.0/24'], :Desc => true)
180
- assert_equal(['192.168.2.0/24','192.168.1.128/25','192.168.1.64/26','192.168.1.0/24','192.168.1.0/30'], sort3)
181
-
182
- sort4 = NetAddr.sort(['192.168.1.0/24','192.168.1.128/25','192.168.1.64/26','192.168.1.0/30','192.168.2.0/24'], :ByMask => true)
183
- assert_equal(['192.168.1.0/24','192.168.2.0/24','192.168.1.128/25','192.168.1.64/26','192.168.1.0/30'], sort4)
184
- sort4 = NetAddr.sort([cidr4_1,cidr4_2,cidr4_3,cidr4_4,cidr4_5], :ByMask => true)
185
- assert_equal([cidr4_1,cidr4_5,cidr4_2,cidr4_3,cidr4_4], sort4)
186
-
187
- sort5 = NetAddr.sort(['192.168.1.0/24','192.168.1.128/25','192.168.1.64/26','192.168.1.0/30','192.168.2.0/24'], :ByMask => true, :Desc => true)
188
- assert_equal(['192.168.1.0/30','192.168.1.64/26','192.168.1.128/25','192.168.1.0/24','192.168.2.0/24'], sort5)
189
- sort5 = NetAddr.sort([cidr4_1,cidr4_2,cidr4_3,cidr4_4,cidr4_5], :ByMask => true, :Desc => true)
190
- assert_equal([cidr4_4,cidr4_3,cidr4_2,cidr4_1,cidr4_5], sort5)
191
- end
192
-
193
- def test_supernets
194
- assert_raise(ArgumentError){ NetAddr.supernets(1) }
195
- assert_raise(ArgumentError){ NetAddr.supernets({}) }
196
-
197
- list4 = ['192.168.1.0', '192.168.1.1', '192.168.1.0/31', '10.1.1.0/24', '10.1.1.32/27']
198
- list6 = ['fec0::/64', 'fec0::', 'fe80::/32', 'fe80::1']
199
- assert_equal(['10.1.1.0/24','192.168.1.0/31'], NetAddr.supernets(list4) )
200
- assert_equal(['fe80:0000:0000:0000:0000:0000:0000:0000/32', 'fec0:0000:0000:0000:0000:0000:0000:0000/64'], NetAddr.supernets(list6) )
201
- assert_equal(['fe80::/32', 'fec0::/64'], NetAddr.supernets(list6, :Short => true) )
202
-
203
- list4.push( NetAddr::CIDR.create('192.168.0.0/23') )
204
- list6.push( NetAddr::CIDR.create('fec0::/48') )
205
- summ = NetAddr.supernets(list4.concat(list6), :Objectify => true)
206
- assert_equal('192.168.1.0/31', summ[0].tag[:Subnets][0].desc)
207
- end
208
-
209
- def test_unshorten
210
- assert_equal('fec0:0000:0000:0000:0000:0000:0000:0000', NetAddr.unshorten('fec0::') )
211
- assert_equal('fec0:0000:0000:0000:0002:0000:0000:0001', NetAddr.unshorten('fec0::2:0:0:1') )
212
- assert_equal('fec0:0000:0000:0000:0002:0000:0000:0001', NetAddr.unshorten('fec0:0:0:0:2:0:0:1') )
213
- assert_equal('0000:0000:0000:0000:0000:ffff:10.1.0.1', NetAddr.unshorten('::ffff:10.1.0.1') )
214
-
215
- assert_raise(ArgumentError){ NetAddr.unshorten(1) }
216
- end
217
-
218
- def test_validate_eui
219
- assert_nothing_raised(NetAddr::ValidationError) {NetAddr.validate_eui('aa-bb-cc-dd-ee-ff')}
220
- assert_nothing_raised(NetAddr::ValidationError) {NetAddr.validate_eui('aabb.ccdd.eeff') }
221
- assert_nothing_raised(NetAddr::ValidationError) {NetAddr.validate_eui('aa:bb:cc:dd:ee:ff') }
222
- assert_nothing_raised(NetAddr::ValidationError) {NetAddr.validate_eui('aabb.ccdd.eeff.1234') }
223
- assert_raise(NetAddr::ValidationError){NetAddr.validate_eui('aabb.ccdd.eeff.123') }
224
- assert_raise(NetAddr::ValidationError){NetAddr.validate_eui('aabb.ccdd.eeff.12312') }
225
- assert_raise(NetAddr::ValidationError){NetAddr.validate_eui('aa-bb-c-dd-ee-ff') }
226
- assert_raise(NetAddr::ValidationError){NetAddr.validate_eui('aa:bb:cc:dd:e:ff') }
227
- assert_raise(NetAddr::ValidationError){NetAddr.validate_eui('aa:bb:cc:dd:ee:^^') }
228
- assert_raise(NetAddr::ValidationError){NetAddr.validate_eui('aa:bb:cc:dd:ee:ZZ') }
229
- assert_raise(ArgumentError){ NetAddr.validate_eui(0xaabbccddeeff) }
230
- assert_raise(ArgumentError){ NetAddr.validate_eui() }
231
- end
232
-
233
- def test_validate_ip_addr
234
- assert_raise(ArgumentError) {NetAddr.validate_ip_addr('192.168.1.0', :test => true)}
235
- assert_nothing_raised(Exception) {NetAddr.validate_ip_addr('192.168.1.0')}
236
- assert_nothing_raised(Exception) {NetAddr.validate_ip_addr('255.255.255.255')}
237
- assert_nothing_raised(Exception) {NetAddr.validate_ip_addr('224.0.0.1')}
238
- assert_nothing_raised(Exception) {NetAddr.validate_ip_addr('0.192.0.1')}
239
- assert_nothing_raised(Exception) {NetAddr.validate_ip_addr('0.0.0.0')}
240
- assert_nothing_raised(Exception) {NetAddr.validate_ip_addr(0xff0000)}
241
- assert_nothing_raised(Exception) {NetAddr.validate_ip_addr(2**32-1)}
242
- assert_nothing_raised(Exception) {NetAddr.validate_ip_addr(0)}
243
-
244
- assert_nothing_raised(Exception) {NetAddr.validate_ip_addr('ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff')}
245
- assert_nothing_raised(Exception) {NetAddr.validate_ip_addr('::')}
246
- assert_nothing_raised(Exception) {NetAddr.validate_ip_addr('ffff::1')}
247
- assert_nothing_raised(Exception) {NetAddr.validate_ip_addr('1234:5678:9abc:def0:1234:5678:9abc:def0')}
248
- assert_nothing_raised(Exception) {NetAddr.validate_ip_addr('::1')}
249
- assert_nothing_raised(Exception) {NetAddr.validate_ip_addr('ffff::')}
250
- assert_nothing_raised(Exception) {NetAddr.validate_ip_addr('0001::1')}
251
- assert_nothing_raised(Exception) {NetAddr.validate_ip_addr('2001:4800::64.39.2.1')}
252
- assert_nothing_raised(Exception) {NetAddr.validate_ip_addr('::1.1.1.1')}
253
- assert_nothing_raised(Exception) {NetAddr.validate_ip_addr('::192.168.255.0')}
254
- assert_nothing_raised(Exception) {NetAddr.validate_ip_addr(2**128-1)}
255
- assert_nothing_raised(Exception) {NetAddr.validate_ip_addr('fec0:0:0:0:0:0:192.168.1.1')}
256
- assert_nothing_raised(Exception) {NetAddr.validate_ip_addr('8080::8080:10.10.10.10')}
257
-
258
- assert_raise(NetAddr::ValidationError){ NetAddr.validate_ip_addr('') }
259
- assert_raise(NetAddr::ValidationError){ NetAddr.validate_ip_addr('10.0') }
260
- assert_raise(NetAddr::ValidationError){ NetAddr.validate_ip_addr('10.0..0') }
261
- assert_raise(NetAddr::ValidationError){ NetAddr.validate_ip_addr('192.168.1.256') }
262
- assert_raise(NetAddr::ValidationError){ NetAddr.validate_ip_addr('192..168.1.1') }
263
- assert_raise(NetAddr::ValidationError){ NetAddr.validate_ip_addr('192.168.1a.255') }
264
- assert_raise(NetAddr::ValidationError){ NetAddr.validate_ip_addr('192.168.1.1.1') }
265
- assert_raise(NetAddr::ValidationError){ NetAddr.validate_ip_addr('ff.ff.ff.ff') }
266
- assert_raise(NetAddr::ValidationError){ NetAddr.validate_ip_addr(2**128-1, :Version => 4) }
267
-
268
- assert_raise(NetAddr::ValidationError){ NetAddr.validate_ip_addr('ffff::1111::1111') }
269
- assert_raise(NetAddr::ValidationError){ NetAddr.validate_ip_addr('abcd:efgh::1') }
270
- assert_raise(NetAddr::ValidationError){ NetAddr.validate_ip_addr('fffff::1') }
271
- assert_raise(NetAddr::ValidationError){ NetAddr.validate_ip_addr('fffg::1') }
272
- assert_raise(NetAddr::ValidationError){ NetAddr.validate_ip_addr('ffff:::0::1') }
273
- assert_raise(NetAddr::ValidationError){ NetAddr.validate_ip_addr('1:0:0:0:0:0:0:0:1') }
274
- assert_raise(NetAddr::ValidationError){ NetAddr.validate_ip_addr('::192.168.256.0') }
275
- assert_raise(NetAddr::ValidationError){ NetAddr.validate_ip_addr('::192.168.a3.0') }
276
- assert_raise(NetAddr::ValidationError){ NetAddr.validate_ip_addr('::192.168.1.1.0') }
277
-
278
- assert_raise(ArgumentError){ NetAddr.validate_ip_addr({}) }
279
- assert_raise(ArgumentError){ NetAddr.validate_ip_addr([])}
280
- assert_raise(ArgumentError){ NetAddr.validate_ip_addr('192.168.1.0', :Version => 5)}
281
-
282
- end
283
-
284
- def test_validate_ip_netmask
285
- assert_raise(ArgumentError) {NetAddr.validate_ip_netmask('255.255.255.255', :test => true)}
286
- assert_nothing_raised(Exception) {NetAddr.validate_ip_netmask('255.255.255.255')}
287
- assert_nothing_raised(Exception) {NetAddr.validate_ip_netmask('32')}
288
- assert_nothing_raised(Exception) {NetAddr.validate_ip_netmask('/32')}
289
- assert_nothing_raised(Exception) {NetAddr.validate_ip_netmask(32)}
290
- assert_nothing_raised(Exception) {NetAddr.validate_ip_netmask(0xffffffff, :Integer => true)}
291
- assert_nothing_raised(Exception) {NetAddr.validate_ip_netmask('128', :Version => 6)}
292
- assert_nothing_raised(Exception) {NetAddr.validate_ip_netmask('/128', :Version => 6)}
293
- assert_nothing_raised(Exception) {NetAddr.validate_ip_netmask(128, :Version => 6)}
294
-
295
- assert_raise(NetAddr::ValidationError){ NetAddr.validate_ip_netmask('255.192.255.0') }
296
- assert_raise(NetAddr::ValidationError){ NetAddr.validate_ip_netmask(33) }
297
- assert_raise(NetAddr::ValidationError){ NetAddr.validate_ip_netmask(129, :Version => 6) }
298
-
299
- assert_raise(ArgumentError){ NetAddr.validate_ip_netmask({}) }
300
- assert_raise(ArgumentError){ NetAddr.validate_ip_netmask([])}
301
- assert_raise(ArgumentError){ NetAddr.validate_ip_netmask('/24', :Version => 5)}
302
- end
303
-
304
- def test_wildcard
305
- cidr = NetAddr.wildcard('192.168.*')
306
- assert_equal(NetAddr::CIDRv4, cidr.class )
307
- assert_equal(16, cidr.bits)
308
- assert_equal('192.168.0.0', cidr.network)
309
-
310
- cidr = NetAddr.wildcard('192.*.1.0')
311
- assert_equal(8, cidr.bits)
312
- assert_equal('192.0.0.0', cidr.network)
313
-
314
- cidr = NetAddr.wildcard('fec0:*')
315
- assert_equal(NetAddr::CIDRv6, cidr.class )
316
- assert_equal(16, cidr.bits)
317
- assert_equal('fec0:0000:0000:0000:0000:0000:0000:0000', cidr.network)
318
-
319
- cidr = NetAddr.wildcard('fec0:1:*')
320
- assert_equal(32, cidr.bits)
321
- assert_equal('fec0:0001:0000:0000:0000:0000:0000:0000', cidr.network)
322
-
323
- assert_raise(ArgumentError){NetAddr.wildcard('fec0::*')}
324
- assert_raise(ArgumentError){NetAddr.wildcard('::ffff:192.168.*')}
325
- end
326
-
327
- end
328
-
329
-
330
-
331
-
data/test/tree_test.rb DELETED
@@ -1,347 +0,0 @@
1
- #!/usr/bin/ruby
2
-
3
- require_relative "../lib/netaddr.rb"
4
- require 'test/unit'
5
-
6
-
7
-
8
- class TestTree < Test::Unit::TestCase
9
-
10
- def test_add
11
- tree = NetAddr::Tree.new()
12
-
13
- assert_nothing_raised(RuntimeError){tree.add!('192.168.1.0 255.255.255.0')}
14
- assert_nothing_raised(RuntimeError){tree.add!('10.1.0.0/24')}
15
- assert_nothing_raised(RuntimeError){tree.add!('10.1.0.0')}
16
- assert_nothing_raised(RuntimeError){tree.add!('192.168.1.0/26')}
17
- assert_nothing_raised(RuntimeError){tree.add!('fec0::/10')}
18
- assert_nothing_raised(RuntimeError){tree.add!('fec0::/64')}
19
-
20
- end
21
-
22
- def test_ancestors
23
- tree = NetAddr::Tree.new()
24
-
25
- tree.add!('192.168.1.0/24')
26
- tree.add!('192.168.1.64/26')
27
- tree.add!('192.168.1.64/27')
28
- tree.add!('192.168.1.64/28')
29
- tree.add!('192.168.2.0/24')
30
-
31
- ancestors = tree.ancestors('192.168.1.64/28')
32
- assert_equal('192.168.1.64/27', ancestors[0].desc)
33
- assert_equal('192.168.1.64/26', ancestors[1].desc)
34
- assert_equal('192.168.1.0/24', ancestors[2].desc)
35
-
36
- end
37
-
38
- def test_children
39
- tree = NetAddr::Tree.new()
40
-
41
- tree.add!('192.168.1.0/24')
42
- tree.add!('192.168.1.64/26')
43
- tree.add!('192.168.1.64/27')
44
- tree.add!('192.168.1.96/27')
45
- tree.add!('192.168.1.64/28')
46
- tree.add!('192.168.2.0/24')
47
-
48
- children = tree.children('192.168.1.64/26')
49
- assert_equal('192.168.1.64/27', children[0].desc)
50
- assert_equal('192.168.1.96/27', children[1].desc)
51
- end
52
-
53
- def test_delete
54
- tree = NetAddr::Tree.new()
55
-
56
- tree.add!('192.168.1.0/24')
57
- tree.add!('192.168.1.64/26')
58
- tree.add!('192.168.1.64/27')
59
- tree.add!('192.168.1.64/28')
60
- tree.add!('192.168.2.0/24')
61
-
62
- tree.delete!('192.168.1.64/27')
63
- assert_equal('192.168.1.64/28', tree.children('192.168.1.64/26')[0].desc)
64
- end
65
-
66
- def test_descendants
67
- tree = NetAddr::Tree.new()
68
-
69
- tree.add!('192.168.1.0/24')
70
- tree.add!('192.168.1.64/26')
71
- tree.add!('192.168.1.64/27')
72
- tree.add!('192.168.1.96/27')
73
- tree.add!('192.168.1.64/28')
74
- tree.add!('192.168.2.0/24')
75
-
76
- descendants = tree.descendants('192.168.1.64/26')
77
- assert_equal('192.168.1.64/27', descendants[0].desc)
78
- assert_equal('192.168.1.64/28', descendants[1].desc)
79
- assert_equal('192.168.1.96/27', descendants[2].desc)
80
- end
81
-
82
- def test_dump
83
- tree = NetAddr::Tree.new()
84
-
85
- tree.add!('192.168.1.0/24')
86
- tree.add!('10.1.0.0/24')
87
- tree.add!('192.168.1.0/26')
88
- tree.add!('192.168.1.0/30')
89
- tree.add!('fec0::/10')
90
- tree.add!('fe80::/10')
91
- tree.add!('fec0::/64')
92
- tree.add!('fec0::/126')
93
-
94
- dump = tree.dump()
95
-
96
- obj0 = dump[0][:CIDR]
97
- obj1 = dump[1][:CIDR]
98
- obj3 = dump[3][:CIDR]
99
- assert_equal('10.1.0.0/24', obj0.desc)
100
- assert_equal('192.168.1.0/24', obj1.desc)
101
- assert_equal('192.168.1.0/30', obj3.desc)
102
-
103
- obj4 = dump[4][:CIDR]
104
- obj5 = dump[5][:CIDR]
105
- obj7 = dump[7][:CIDR]
106
- assert_equal('fe80:0000:0000:0000:0000:0000:0000:0000/10', obj4.desc)
107
- assert_equal('fec0:0000:0000:0000:0000:0000:0000:0000/10', obj5.desc)
108
- assert_equal('fec0:0000:0000:0000:0000:0000:0000:0000/126', obj7.desc)
109
-
110
- end
111
-
112
- def test_exists
113
-
114
- tree = NetAddr::Tree.new()
115
-
116
- tree.add!('192.168.1.0/24')
117
- tree.add!('10.1.0.0/24')
118
- tree.add!('192.168.1.64/26')
119
- tree.add!('10.1.0.44/30')
120
-
121
- assert_equal(true, tree.exists?('192.168.1.0/24'))
122
- assert_equal(true, tree.exists?('10.1.0.44/30'))
123
- assert_equal(false, tree.exists?('10.2.0.0/24'))
124
-
125
- end
126
-
127
- def test_fill_in
128
- tree = NetAddr::Tree.new()
129
-
130
- tree.add!('192.168.1.0/24')
131
- tree.add!('192.168.1.64/26')
132
-
133
- tree.fill_in!('192.168.1.0/24')
134
- children = tree.children('192.168.1.0/24')
135
-
136
- assert_equal('192.168.1.0/26', children[0].desc)
137
- assert_equal('192.168.1.64/26', children[1].desc)
138
- assert_equal('192.168.1.128/25', children[2].desc)
139
- end
140
-
141
- def test_find
142
- tree = NetAddr::Tree.new()
143
-
144
- tree.add!('192.168.1.0/24')
145
- tree.add!('10.1.0.0/24')
146
- tree.add!('192.168.1.64/26')
147
- tree.add!('10.1.0.44/30')
148
- assert_equal('192.168.1.64/26', tree.longest_match('192.168.1.64/26').desc)
149
- assert_equal('10.1.0.44/30', tree.longest_match('10.1.0.44/30').desc)
150
- end
151
-
152
- def test_find_space
153
- tree = NetAddr::Tree.new()
154
-
155
- cidr = ['192.168.1.0/24','192.168.1.0/26','192.168.1.64/26',
156
- '192.168.1.128/26','192.168.1.192/26','192.168.1.0/27',
157
- '192.168.1.0/28','192.168.1.16/30','192.168.1.16/29',
158
- '192.168.1.32/27','192.168.1.24/30','192.168.1.28/30',
159
- '192.168.1.64/27','192.168.1.25',
160
- 'fec0::/60','fec0::/66','fec0::4000:0:0:0/66',
161
- 'fec0::8000:0:0:0/66','fec0::c000:0:0:0/66','fec0::c000:0:0:0/67',
162
- 'fec0::/67','fec0::2000:0:0:0/67','fec0::8000:0:0:0/67','fec0::4000:0:0:0/69']
163
-
164
- assert_raise(ArgumentError) {tree.find_space(:test => true)}
165
- cidr.each {|x| tree.add!(x)}
166
- assert_equal(10, tree.find_space(:IPCount => 16).length)
167
- end
168
-
169
- def test_longest_match
170
-
171
- tree = NetAddr::Tree.new()
172
-
173
- tree.add!('192.168.1.0/24')
174
- tree.add!('10.1.0.0/24')
175
- tree.add!('192.168.1.64/26')
176
- tree.add!('10.1.0.44/30')
177
-
178
- assert_equal('192.168.1.64/26', tree.longest_match('192.168.1.65').desc)
179
- assert_equal('10.1.0.44/30', tree.longest_match('10.1.0.46').desc)
180
- assert_equal('0.0.0.0/0', tree.longest_match('192.168.2.0').desc )
181
-
182
- end
183
-
184
- def test_merge_subnets
185
- tree = NetAddr::Tree.new()
186
-
187
- tree.add!('192.168.1.0/24')
188
- tree.add!('192.168.1.0/26')
189
- tree.add!('192.168.1.64/26')
190
- tree.add!('192.168.1.192/26')
191
-
192
- tree.merge_subnets!('192.168.1.0/24')
193
- children = tree.children('192.168.1.0/24')
194
-
195
- assert_equal('192.168.1.0/25', children[0].desc)
196
- assert_equal('192.168.1.192/26', children[1].desc)
197
- end
198
-
199
- def test_prune
200
- cidr4_1 = NetAddr::CIDR.create('192.168.1.0/24')
201
- cidr4_2 = NetAddr::CIDR.create('10.1.0.0/24')
202
- cidr4_3 = NetAddr::CIDR.create('192.168.1.0/26')
203
- cidr4_4 = NetAddr::CIDR.create('192.168.1.0/30')
204
- cidr4_5 = NetAddr::CIDR.create('192.168.1.64/26')
205
- cidr4_6 = NetAddr::CIDR.create('192.168.1.128/26')
206
- cidr4_7 = NetAddr::CIDR.create('192.168.1.192/26')
207
-
208
- tree4 = NetAddr::Tree.new()
209
-
210
- tree4.add!(cidr4_1)
211
- tree4.add!(cidr4_2)
212
- tree4.add!(cidr4_3)
213
- tree4.add!(cidr4_4)
214
- tree4.add!(cidr4_5)
215
- tree4.add!(cidr4_6)
216
- tree4.add!(cidr4_7)
217
-
218
- tree4.prune!(cidr4_5)
219
- dump = tree4.dump
220
- assert_equal(7, dump.length)
221
-
222
- tree4.prune!(cidr4_1)
223
- dump = tree4.dump
224
- assert_equal(2, dump.length)
225
- end
226
-
227
- def test_remove
228
- cidr4_1 = NetAddr::CIDR.create('192.168.1.0/24')
229
- cidr4_2 = NetAddr::CIDR.create('10.1.0.0/24')
230
- cidr4_3 = NetAddr::CIDR.create('192.168.1.0/26')
231
- cidr4_4 = NetAddr::CIDR.create('192.168.1.0/30')
232
- cidr4_5 = NetAddr::CIDR.create('192.168.1.64/26')
233
- cidr4_6 = NetAddr::CIDR.create('192.168.1.128/26')
234
- cidr4_7 = NetAddr::CIDR.create('192.168.1.192/26')
235
-
236
- tree4 = NetAddr::Tree.new()
237
-
238
- tree4.add!(cidr4_1)
239
- tree4.add!(cidr4_2)
240
- tree4.add!(cidr4_3)
241
- tree4.add!(cidr4_4)
242
- tree4.add!(cidr4_5)
243
- tree4.add!(cidr4_6)
244
- tree4.add!(cidr4_7)
245
-
246
- tree4.remove!(cidr4_5)
247
- dump = tree4.dump
248
- assert_equal(6, dump.length)
249
-
250
- tree4.remove!(cidr4_1)
251
- dump = tree4.dump
252
- assert_equal(1, dump.length)
253
- end
254
-
255
- def test_root
256
- tree = NetAddr::Tree.new()
257
-
258
- tree.add!('192.168.1.0/24')
259
- tree.add!('192.168.1.64/26')
260
- tree.add!('192.168.1.64/27')
261
- tree.add!('192.168.2.0/24')
262
-
263
- assert_equal('192.168.1.0/24', tree.root('192.168.1.64/27').desc)
264
- end
265
-
266
- def test_show
267
- cidr4_1 = NetAddr::CIDR.create('192.168.1.0/24')
268
- cidr4_2 = NetAddr::CIDR.create('10.1.0.0/24')
269
- cidr4_3 = NetAddr::CIDR.create('192.168.1.0/26')
270
- cidr4_4 =NetAddr::CIDR.create('192.168.1.0/30')
271
- cidr4_5 = NetAddr::CIDR.create('192.168.1.64/26')
272
- cidr4_6 = NetAddr::CIDR.create('192.168.1.128/26')
273
- cidr4_7 = NetAddr::CIDR.create('192.168.1.192/26')
274
-
275
- tree4 = NetAddr::Tree.new()
276
-
277
- tree4.add!(cidr4_1)
278
- tree4.add!(cidr4_2)
279
- tree4.add!(cidr4_3)
280
- tree4.add!(cidr4_4)
281
- tree4.add!(cidr4_5)
282
- tree4.add!(cidr4_6)
283
- tree4.add!(cidr4_7)
284
-
285
- assert_not_nil(tree4.show())
286
- end
287
-
288
- def test_siblings
289
- tree = NetAddr::Tree.new()
290
-
291
- tree.add!('192.168.1.0/24')
292
- tree.add!('192.168.1.0/26')
293
- tree.add!('192.168.1.64/26')
294
- tree.add!('192.168.1.128/26')
295
- tree.add!('192.168.1.192/26')
296
-
297
- assert_equal(3, tree.siblings('192.168.1.0/26').length)
298
- end
299
-
300
- def test_interactions
301
- show1 = "IPv4 Tree\n---------\n192.168.12.0/26\n 192.168.12.8/29\n 192.168.12.8/30\n"
302
- show2 = "IPv4 Tree\n---------\n192.168.12.0/26\n 192.168.12.8/29\n 192.168.12.8/30\n 192.168.12.12/30\n"
303
- show3 = "IPv4 Tree\n---------\n192.168.12.0/26\n 192.168.12.0/29\n 192.168.12.8/29\n 192.168.12.8/30\n" +
304
- " 192.168.12.12/30\n 192.168.12.16/28\n 192.168.12.32/27\n"
305
- show4 = "IPv4 Tree\n---------\n192.168.12.0/26\n 192.168.12.0/29\n 192.168.12.8/30\n 192.168.12.12/30\n" +
306
- " 192.168.12.16/28\n 192.168.12.32/27\n"
307
- show5 = "IPv4 Tree\n---------\n192.168.12.0/26\n 192.168.12.0/28\n 192.168.12.0/29\n" +
308
- " 192.168.12.8/29\n 192.168.12.8/30\n 192.168.12.12/30\n 192.168.12.16/28\n 192.168.12.32/27\n"
309
- show6 = "IPv4 Tree\n---------\n192.168.12.0/26\n 192.168.12.0/28\n 192.168.12.0/29\n" +
310
- " 192.168.12.8/29\n 192.168.12.16/28\n 192.168.12.32/27\n"
311
- show7 = "IPv4 Tree\n---------\n192.168.12.0/26\n 192.168.12.16/28\n 192.168.12.32/27\n"
312
- show8 = "IPv4 Tree\n---------\n192.168.12.0/24\n 192.168.12.16/28\n 192.168.12.32/27\n 192.168.12.64/26\n"
313
- show9 = "IPv4 Tree\n---------\n192.168.12.0/24\n 192.168.12.0/25\n 192.168.12.0/26\n" +
314
- " 192.168.12.16/28\n 192.168.12.32/27\n 192.168.12.64/26\n"
315
-
316
- tree = NetAddr::Tree.new
317
- tree.add!('192.168.12.0/26')
318
- tree.add!('192.168.12.8/29')
319
- tree.add!('192.168.12.8/30')
320
- assert_equal(show1, tree.show)
321
- tree.fill_in! '192.168.12.8/29'
322
- assert_equal(show2, tree.show)
323
- tree.fill_in! '192.168.12.0/26'
324
- assert_equal(show3, tree.show)
325
- tree.delete!('192.168.12.8/29')
326
- assert_equal(show4, tree.show)
327
- tree.add!('192.168.12.8/29')
328
- tree.add!('192.168.12.0/28')
329
- tree.add!('192.168.12.0/29')
330
- assert_equal(show5, tree.show)
331
- tree.prune!('192.168.12.8/29')
332
- assert_equal(show6, tree.show)
333
- tree.remove!('192.168.12.0/28')
334
- assert_equal(show7, tree.show)
335
- tree.add!('192.168.12.64/26')
336
- tree.resize!('192.168.12.0/26', 24)
337
- assert_equal(show8, tree.show)
338
- tree.add!('192.168.12.0/26')
339
- tree.summarize_subnets!('192.168.12.0/24')
340
- assert_equal(show9, tree.show)
341
- end
342
-
343
- end
344
-
345
-
346
-
347
-