ipadmin 0.3.0 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README +190 -151
- data/lib/cidr.rb +412 -210
- data/lib/eui.rb +92 -115
- data/lib/methods.rb +409 -438
- data/lib/tree.rb +609 -367
- data/tests/cidr_test.rb +56 -43
- data/tests/eui_test.rb +16 -14
- data/tests/methods_test.rb +191 -185
- data/tests/tree_test.rb +191 -231
- metadata +3 -3
data/tests/methods_test.rb
CHANGED
@@ -7,11 +7,114 @@ require 'test/unit'
|
|
7
7
|
|
8
8
|
class TestMethods < Test::Unit::TestCase
|
9
9
|
|
10
|
+
def test_compare
|
11
|
+
cidr4_1 = IPAdmin::CIDR.new('192.168.1.0/24')
|
12
|
+
cidr4_2 = IPAdmin::CIDR.new('192.168.1.0/25')
|
13
|
+
cidr4_3 = IPAdmin::CIDR.new('192.168.2.0/24')
|
14
|
+
cidr4_4 = IPAdmin::CIDR.new('192.168.2.64/26')
|
15
|
+
cidr4_5 = IPAdmin::CIDR.new('192.168.1.128/25')
|
16
|
+
|
17
|
+
cidr6_1 = IPAdmin::CIDR.new('fec0::0/10')
|
18
|
+
cidr6_2 = IPAdmin::CIDR.new('fec0::0/64')
|
19
|
+
cidr6_3 = IPAdmin::CIDR.new('fe80::0/10')
|
20
|
+
cidr6_4 = IPAdmin::CIDR.new('fe80::0/11')
|
21
|
+
|
22
|
+
comp1 = IPAdmin.compare(cidr4_1,cidr4_2)
|
23
|
+
comp2 = IPAdmin.compare(cidr4_4,cidr4_3)
|
24
|
+
comp3 = IPAdmin.compare('192.168.1.0/24',cidr4_1)
|
25
|
+
comp4 = IPAdmin.compare('192.168.1.0/24','192.168.2.0/24')
|
26
|
+
comp5 = IPAdmin.compare(cidr6_1,cidr6_2)
|
27
|
+
comp6 = IPAdmin.compare(cidr6_4,cidr6_3)
|
28
|
+
comp7 = IPAdmin.compare(cidr6_1,cidr6_1)
|
29
|
+
comp8 = IPAdmin.compare('fec0::0/10','fe80::0/10')
|
30
|
+
comp9 = IPAdmin.compare('192.168.1.0/25','192.168.1.128/25')
|
31
|
+
comp10 = IPAdmin.compare('192.168.1.0/24','192.168.1.0/25')
|
32
|
+
|
33
|
+
assert_equal([cidr4_1,cidr4_2],comp1)
|
34
|
+
assert_equal([cidr4_3,cidr4_4],comp2)
|
35
|
+
assert_equal(1,comp3)
|
36
|
+
assert_nil(comp4)
|
37
|
+
assert_equal([cidr6_1,cidr6_2],comp5)
|
38
|
+
assert_equal([cidr6_3,cidr6_4],comp6)
|
39
|
+
assert_equal(1,comp7)
|
40
|
+
assert_nil(comp8)
|
41
|
+
assert_nil(comp9)
|
42
|
+
assert_equal(['192.168.1.0/24','192.168.1.0/25'],comp10)
|
43
|
+
|
44
|
+
assert_raise(ArgumentError){ IPAdmin.compare('1',cidr4_2) }
|
45
|
+
assert_raise(ArgumentError){ IPAdmin.compare(cidr4_2, '1') }
|
46
|
+
assert_raise(ArgumentError){ IPAdmin.compare(cidr4_1,cidr6_1)}
|
47
|
+
end
|
48
|
+
|
49
|
+
|
50
|
+
def test_merge
|
51
|
+
cidr4 = [IPAdmin::CIDR.new(:CIDR => '192.168.1.0/24'),
|
52
|
+
IPAdmin::CIDR.new(:CIDR => '192.168.1.0/26'),
|
53
|
+
IPAdmin::CIDR.new(:CIDR => '192.168.1.4/30'),
|
54
|
+
IPAdmin::CIDR.new(:CIDR => '192.168.1.0/30'),
|
55
|
+
IPAdmin::CIDR.new(:CIDR => '192.168.1.64/27'),
|
56
|
+
IPAdmin::CIDR.new(:CIDR => '192.168.1.96/27'),
|
57
|
+
IPAdmin::CIDR.new(:CIDR => '192.168.1.128/25'),
|
58
|
+
IPAdmin::CIDR.new(:CIDR => '10.1.0.0/31'),
|
59
|
+
IPAdmin::CIDR.new(:CIDR => '10.1.0.0/24'),
|
60
|
+
IPAdmin::CIDR.new(:CIDR => '10.1.0.2/31'),
|
61
|
+
IPAdmin::CIDR.new(:CIDR => '10.1.0.4/30'),
|
62
|
+
IPAdmin::CIDR.new(:CIDR => '10.1.0.16/28'),
|
63
|
+
IPAdmin::CIDR.new(:CIDR => '10.1.0.32/28'),
|
64
|
+
IPAdmin::CIDR.new(:CIDR => '10.1.0.48/28'),
|
65
|
+
IPAdmin::CIDR.new(:CIDR => '10.1.0.0/27'),
|
66
|
+
IPAdmin::CIDR.new(:CIDR => '10.1.0.64/26'),
|
67
|
+
IPAdmin::CIDR.new(:CIDR => '10.1.0.128/25'),
|
68
|
+
IPAdmin::CIDR.new(:CIDR => '10.1.0.0/27'),
|
69
|
+
IPAdmin::CIDR.new(:CIDR => '10.1.0.0/24')]
|
70
|
+
|
71
|
+
cidr4_2 = ['10.0.0.0/9','10.1.0.0/9','10.1.0.0/24',
|
72
|
+
'10.1.0.64/26','10.1.0.128/26','128.0.0.0/2',
|
73
|
+
'129.0.0.0/2','1.1.1.0','1.1.1.1',
|
74
|
+
'1.1.1.3','1.1.1.4','1.1.1.5',
|
75
|
+
'1.1.1.6','1.1.1.7','192.168.1.0/27',
|
76
|
+
'192.168.1.32/27','192.168.1.96/27','192.168.1.128/26',
|
77
|
+
'192.168.1.192/26']
|
78
|
+
|
79
|
+
cidr6 = [IPAdmin::CIDR.new(:CIDR => 'fec0::/16'),
|
80
|
+
IPAdmin::CIDR.new(:CIDR => 'fec0::/17'),
|
81
|
+
IPAdmin::CIDR.new(:CIDR => 'fec0:8000::/18'),
|
82
|
+
IPAdmin::CIDR.new(:CIDR => 'fec0:c000::/18'),
|
83
|
+
IPAdmin::CIDR.new(:CIDR => 'fec0::/64'),
|
84
|
+
IPAdmin::CIDR.new(:CIDR => 'fec0::/66'),
|
85
|
+
IPAdmin::CIDR.new(:CIDR => 'fec0::8000:0:0:0/66'),
|
86
|
+
IPAdmin::CIDR.new(:CIDR => 'fec0::c000:0:0:0/66'),
|
87
|
+
IPAdmin::CIDR.new(:CIDR => 'fec0::/127'),
|
88
|
+
IPAdmin::CIDR.new(:CIDR => 'fec0::2/127')]
|
89
|
+
|
90
|
+
merge4 = IPAdmin.merge(cidr4)
|
91
|
+
merge4_2 = IPAdmin.merge(:List => cidr4_2, :Objectify => true)
|
92
|
+
merge6 = IPAdmin.merge(:List => cidr6)
|
93
|
+
|
94
|
+
assert_equal(5, merge4.length)
|
95
|
+
assert_equal(11, merge4_2.length)
|
96
|
+
assert_equal(5, merge6.length)
|
97
|
+
|
98
|
+
assert_equal('1.1.1.0/31', merge4_2[0].desc)
|
99
|
+
|
100
|
+
assert_raise(ArgumentError){ IPAdmin.merge(1) }
|
101
|
+
assert_raise(ArgumentError){ IPAdmin.merge({}) }
|
102
|
+
end
|
103
|
+
|
104
|
+
|
105
|
+
def test_minimum_size
|
106
|
+
assert_equal(24, IPAdmin.minimum_size(200))
|
107
|
+
assert_equal(96, IPAdmin.minimum_size(:IPCount => 2**32-1, :Version => 6))
|
108
|
+
|
109
|
+
assert_raise(ArgumentError){ IPAdmin.minimum_size({}) }
|
110
|
+
end
|
111
|
+
|
112
|
+
|
10
113
|
def test_pack_ip_addr
|
11
|
-
assert_equal(2**128-1, IPAdmin.pack_ip_addr(
|
114
|
+
assert_equal(2**128-1, IPAdmin.pack_ip_addr('ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff') )
|
12
115
|
assert_equal(1, IPAdmin.pack_ip_addr(:IP => '::1') )
|
13
|
-
assert_equal(2**32-1, IPAdmin.pack_ip_addr(
|
14
|
-
assert_equal(2**128-1, IPAdmin.pack_ip_addr(:IP => 'ffff:ffff:ffff:ffff:ffff:ffff:
|
116
|
+
assert_equal(2**32-1, IPAdmin.pack_ip_addr('255.255.255.255') )
|
117
|
+
assert_equal(2**128-1, IPAdmin.pack_ip_addr(:IP => 'ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255') )
|
15
118
|
assert_equal(0, IPAdmin.pack_ip_addr(:IP => '::') )
|
16
119
|
assert_equal(2**32-1, IPAdmin.pack_ip_addr(:IP => '::255.255.255.255') )
|
17
120
|
assert_equal(0x0a0a0a0a, IPAdmin.pack_ip_addr(:IP => '10.10.10.10') )
|
@@ -22,7 +125,6 @@ class TestMethods < Test::Unit::TestCase
|
|
22
125
|
assert_equal(1, IPAdmin.pack_ip_addr(:IP => '::1') )
|
23
126
|
assert_equal(2**127, IPAdmin.pack_ip_addr(:IP => '8000::') )
|
24
127
|
|
25
|
-
assert_raise(ArgumentError){ IPAdmin.pack_ip_addr('192.168.1.1') }
|
26
128
|
assert_raise(ArgumentError){ IPAdmin.pack_ip_addr({}) }
|
27
129
|
assert_raise(ArgumentError){ IPAdmin.pack_ip_addr(:IP => '192.168.1.1',:Version => 5) }
|
28
130
|
assert_raise(ArgumentError){ IPAdmin.pack_ip_addr(:IP => 0xffffffff,:Version => 4) }
|
@@ -31,22 +133,93 @@ class TestMethods < Test::Unit::TestCase
|
|
31
133
|
|
32
134
|
def test_pack_ip_netmask
|
33
135
|
assert_equal(2**32-1, IPAdmin.pack_ip_netmask(:Netmask => '255.255.255.255') )
|
34
|
-
assert_equal(2**32-1, IPAdmin.pack_ip_netmask(
|
136
|
+
assert_equal(2**32-1, IPAdmin.pack_ip_netmask('32') )
|
35
137
|
assert_equal(2**32-1, IPAdmin.pack_ip_netmask(:Netmask => '/32') )
|
36
|
-
assert_equal(2**32-1, IPAdmin.pack_ip_netmask(
|
138
|
+
assert_equal(2**32-1, IPAdmin.pack_ip_netmask(32) )
|
37
139
|
assert_equal(2**128-1, IPAdmin.pack_ip_netmask(:Netmask => '128', :Version => 6) )
|
38
140
|
assert_equal(2**128-1, IPAdmin.pack_ip_netmask(:Netmask => '/128', :Version => 6) )
|
39
141
|
assert_equal(2**128-1, IPAdmin.pack_ip_netmask(:Netmask => 128, :Version => 6) )
|
40
142
|
|
41
|
-
assert_raise(ArgumentError){ IPAdmin.pack_ip_netmask(24) }
|
42
143
|
assert_raise(ArgumentError){ IPAdmin.pack_ip_netmask({}) }
|
43
144
|
assert_raise(ArgumentError){ IPAdmin.pack_ip_netmask(:Netmask => '/24',:Version => 5) }
|
44
145
|
assert_raise(ArgumentError){ IPAdmin.pack_ip_netmask(:Netmask => [],:Version => 4) }
|
45
146
|
end
|
46
147
|
|
47
148
|
|
149
|
+
def test_range
|
150
|
+
cidr4_1 = IPAdmin::CIDR.new(:CIDR => '192.168.1.0/24')
|
151
|
+
cidr4_2 = IPAdmin::CIDR.new(:CIDR => '192.168.1.50/24')
|
152
|
+
cidr4_3 = IPAdmin::CIDR.new(:CIDR => '192.168.1.2/24')
|
153
|
+
cidr6_1 = IPAdmin::CIDR.new(:CIDR => 'fec0::/64')
|
154
|
+
cidr6_2 = IPAdmin::CIDR.new(:CIDR => 'fec0::32/64')
|
155
|
+
|
156
|
+
assert_equal(['192.168.1.1'], IPAdmin.range(:Boundaries => [cidr4_1,cidr4_2], :Limit => 1) )
|
157
|
+
assert_equal(['fec0:0000:0000:0000:0000:0000:0000:0001'], IPAdmin.range(:Boundaries => [cidr6_1,cidr6_2], :Limit => 1) )
|
158
|
+
|
159
|
+
list = IPAdmin.range(:Boundaries => ['192.168.1.0/24','192.168.1.50/24'], :Bitstep => 2)
|
160
|
+
assert_equal(25, list.length)
|
161
|
+
assert_equal('192.168.1.49', list[24])
|
162
|
+
|
163
|
+
list = IPAdmin.range(:Boundaries => [cidr4_1,cidr4_3], :Objectify => true)
|
164
|
+
assert_kind_of(IPAdmin::CIDR, list[0])
|
165
|
+
assert_equal('192.168.1.1/32', (list[0]).desc)
|
166
|
+
|
167
|
+
assert_raise(ArgumentError){ IPAdmin.range(:Limit => 1) }
|
168
|
+
assert_raise(ArgumentError){ IPAdmin.range(:Boundaries => [1,2]) }
|
169
|
+
assert_raise(ArgumentError){ IPAdmin.compare('1') }
|
170
|
+
assert_raise(ArgumentError){ IPAdmin.range(:Boundaries => [cidr4_1,cidr6_2]) }
|
171
|
+
end
|
172
|
+
|
173
|
+
|
174
|
+
def test_shorten
|
175
|
+
assert_equal('fec0::', IPAdmin.shorten('fec0:0000:0000:0000:0000:0000:0000:0000') )
|
176
|
+
assert_equal('fec0::2:0:0:1', IPAdmin.shorten('fec0:0000:0000:0000:0002:0000:0000:0001') )
|
177
|
+
assert_equal('fec0::2:0:0:1', IPAdmin.shorten('fec0:00:0000:0:02:0000:0:1') )
|
178
|
+
assert_equal('fec0::2:2:0:0:1', IPAdmin.shorten('fec0:0000:0000:0002:0002:0000:0000:0001') )
|
179
|
+
assert_equal('fec0:0:0:1::', IPAdmin.shorten('fec0:0000:0000:0001:0000:0000:0000:0000') )
|
180
|
+
assert_equal('fec0:1:1:1:1:1:1:1', IPAdmin.shorten('fec0:0001:0001:0001:0001:0001:0001:0001') )
|
181
|
+
assert_equal('fec0:ffff:ffff:0:ffff:ffff:ffff:ffff', IPAdmin.shorten('fec0:ffff:ffff:0000:ffff:ffff:ffff:ffff') )
|
182
|
+
assert_equal('fec0:ffff:ffff:ffff:ffff:ffff:ffff:ffff', IPAdmin.shorten('fec0:ffff:ffff:ffff:ffff:ffff:ffff:ffff') )
|
183
|
+
assert_equal('fec0::', IPAdmin.shorten('fec0::') )
|
184
|
+
assert_equal('fec0::192.168.1.1', IPAdmin.shorten('fec0:0:0:0:0:0:192.168.1.1') )
|
185
|
+
|
186
|
+
assert_raise(ArgumentError){ IPAdmin.shorten(1) }
|
187
|
+
end
|
188
|
+
|
189
|
+
|
190
|
+
def test_sort
|
191
|
+
cidr4_1 = IPAdmin::CIDR.new('192.168.1.0/24')
|
192
|
+
cidr4_2 = IPAdmin::CIDR.new('192.168.1.128/25')
|
193
|
+
cidr4_3 = IPAdmin::CIDR.new('192.168.1.64/26')
|
194
|
+
cidr4_4 = IPAdmin::CIDR.new('192.168.1.0/30')
|
195
|
+
cidr4_5 = '192.168.2.0/24'
|
196
|
+
|
197
|
+
cidr6_1 = IPAdmin::CIDR.new('fec0::0/64')
|
198
|
+
cidr6_2 = IPAdmin::CIDR.new('fec0::0/10')
|
199
|
+
cidr6_3 = IPAdmin::CIDR.new('fe80::0/10')
|
200
|
+
cidr6_4 = 'fe80::0'
|
201
|
+
|
202
|
+
sort1 = IPAdmin.sort([cidr4_1,cidr4_2,cidr4_3,cidr4_4,cidr4_5])
|
203
|
+
sort2 = IPAdmin.sort([cidr6_1,cidr6_2,cidr6_3,cidr6_4])
|
204
|
+
|
205
|
+
assert_equal([cidr4_1,cidr4_4,cidr4_3,cidr4_2,cidr4_5], sort1)
|
206
|
+
assert_equal([cidr6_3,cidr6_4,cidr6_2,cidr6_1], sort2)
|
207
|
+
|
208
|
+
end
|
209
|
+
|
210
|
+
|
211
|
+
def test_unshorten
|
212
|
+
assert_equal('fec0:0000:0000:0000:0000:0000:0000:0000', IPAdmin.unshorten('fec0::') )
|
213
|
+
assert_equal('fec0:0000:0000:0000:0002:0000:0000:0001', IPAdmin.unshorten('fec0::2:0:0:1') )
|
214
|
+
assert_equal('fec0:0000:0000:0000:0002:0000:0000:0001', IPAdmin.unshorten('fec0:0:0:0:2:0:0:1') )
|
215
|
+
assert_equal('0000:0000:0000:0000:0000:ffff:10.1.0.1', IPAdmin.unshorten('::ffff:10.1.0.1') )
|
216
|
+
|
217
|
+
assert_raise(ArgumentError){ IPAdmin.unshorten(1) }
|
218
|
+
end
|
219
|
+
|
220
|
+
|
48
221
|
def test_unpack_ip_addr
|
49
|
-
assert_equal('255.255.255.255', IPAdmin.unpack_ip_addr(
|
222
|
+
assert_equal('255.255.255.255', IPAdmin.unpack_ip_addr(2**32-1) )
|
50
223
|
assert_equal('0.0.0.0', IPAdmin.unpack_ip_addr(:Integer => 0, :Version => 4) )
|
51
224
|
assert_equal('0000:0000:0000:0000:0000:0000:0000:0000', IPAdmin.unpack_ip_addr(:Integer => 0, :Version => 6) )
|
52
225
|
assert_equal('ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff', IPAdmin.unpack_ip_addr(:Integer => 2**128-1) )
|
@@ -63,7 +236,7 @@ class TestMethods < Test::Unit::TestCase
|
|
63
236
|
|
64
237
|
|
65
238
|
def test_unpack_ip_netmask
|
66
|
-
assert_equal(32, IPAdmin.unpack_ip_netmask(
|
239
|
+
assert_equal(32, IPAdmin.unpack_ip_netmask(2**32-1) )
|
67
240
|
assert_equal(24, IPAdmin.unpack_ip_netmask(:Integer => (2**32 - 2**8 ) ) )
|
68
241
|
assert_equal(128, IPAdmin.unpack_ip_netmask(:Integer => 2**128-1) )
|
69
242
|
assert_equal(96, IPAdmin.unpack_ip_netmask(:Integer => (2**128 - 2**32)) )
|
@@ -75,8 +248,8 @@ class TestMethods < Test::Unit::TestCase
|
|
75
248
|
|
76
249
|
|
77
250
|
def test_validate_eui
|
78
|
-
assert_not_nil(IPAdmin.validate_eui(
|
79
|
-
assert_not_nil(IPAdmin.validate_eui(
|
251
|
+
assert_not_nil(IPAdmin.validate_eui('aa-bb-cc-dd-ee-ff') )
|
252
|
+
assert_not_nil(IPAdmin.validate_eui('aabb.ccdd.eeff') )
|
80
253
|
assert_not_nil(IPAdmin.validate_eui(:EUI => 'aa:bb:cc:dd:ee:ff') )
|
81
254
|
assert_not_nil(IPAdmin.validate_eui(:EUI => 'aabb.ccdd.eeff.1234') )
|
82
255
|
|
@@ -87,17 +260,17 @@ class TestMethods < Test::Unit::TestCase
|
|
87
260
|
|
88
261
|
|
89
262
|
def test_validate_ip_addr
|
90
|
-
assert_not_nil(IPAdmin.validate_ip_addr(
|
91
|
-
assert_not_nil(IPAdmin.validate_ip_addr(
|
263
|
+
assert_not_nil(IPAdmin.validate_ip_addr('192.168.1.0') )
|
264
|
+
assert_not_nil(IPAdmin.validate_ip_addr('255.255.255.255') )
|
92
265
|
assert_not_nil(IPAdmin.validate_ip_addr(:IP => '224.0.0.1') )
|
93
266
|
assert_not_nil(IPAdmin.validate_ip_addr(:IP => '0.192.0.1') )
|
94
267
|
assert_not_nil(IPAdmin.validate_ip_addr(:IP => '0.0.0.0') )
|
95
|
-
assert_not_nil(IPAdmin.validate_ip_addr(
|
268
|
+
assert_not_nil(IPAdmin.validate_ip_addr(0xff0000) )
|
96
269
|
assert_not_nil(IPAdmin.validate_ip_addr(:IP => 2**32-1) )
|
97
270
|
assert_not_nil(IPAdmin.validate_ip_addr(:IP => 0) )
|
98
271
|
|
99
|
-
assert_not_nil(IPAdmin.validate_ip_addr(
|
100
|
-
assert_not_nil(IPAdmin.validate_ip_addr(
|
272
|
+
assert_not_nil(IPAdmin.validate_ip_addr('ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff') )
|
273
|
+
assert_not_nil(IPAdmin.validate_ip_addr('::') )
|
101
274
|
assert_not_nil(IPAdmin.validate_ip_addr(:IP => 'ffff::1') )
|
102
275
|
assert_not_nil(IPAdmin.validate_ip_addr(:IP => '1234:5678:9abc:def0:1234:5678:9abc:def0') )
|
103
276
|
assert_not_nil(IPAdmin.validate_ip_addr(:IP => '::1') )
|
@@ -129,7 +302,6 @@ class TestMethods < Test::Unit::TestCase
|
|
129
302
|
assert_raise(RuntimeError){ IPAdmin.validate_ip_addr(:IP => '::192.168.a3.0') }
|
130
303
|
assert_raise(RuntimeError){ IPAdmin.validate_ip_addr(:IP => '::192.168.1.1.0') }
|
131
304
|
|
132
|
-
assert_raise(ArgumentError){ IPAdmin.validate_ip_addr('1') }
|
133
305
|
assert_raise(ArgumentError){ IPAdmin.validate_ip_addr({}) }
|
134
306
|
assert_raise(ArgumentError){ IPAdmin.validate_ip_addr(:IP => [])}
|
135
307
|
assert_raise(ArgumentError){ IPAdmin.validate_ip_addr(:IP => '192.168.1.0', :Version => 5)}
|
@@ -139,9 +311,9 @@ class TestMethods < Test::Unit::TestCase
|
|
139
311
|
|
140
312
|
def test_validate_ip_netmask
|
141
313
|
assert_equal(true, IPAdmin.validate_ip_netmask(:Netmask => '255.255.255.255') )
|
142
|
-
assert_equal(true, IPAdmin.validate_ip_netmask(
|
314
|
+
assert_equal(true, IPAdmin.validate_ip_netmask('32') )
|
143
315
|
assert_equal(true, IPAdmin.validate_ip_netmask(:Netmask => '/32') )
|
144
|
-
assert_equal(true, IPAdmin.validate_ip_netmask(
|
316
|
+
assert_equal(true, IPAdmin.validate_ip_netmask(32) )
|
145
317
|
assert_equal(true, IPAdmin.validate_ip_netmask(:Netmask => 0xffffffff, :Packed => true) )
|
146
318
|
assert_equal(true, IPAdmin.validate_ip_netmask(:Netmask => '128', :Version => 6) )
|
147
319
|
assert_equal(true, IPAdmin.validate_ip_netmask(:Netmask => '/128', :Version => 6) )
|
@@ -151,175 +323,9 @@ class TestMethods < Test::Unit::TestCase
|
|
151
323
|
assert_raise(RuntimeError){ IPAdmin.validate_ip_netmask(:Netmask => 33) }
|
152
324
|
assert_raise(RuntimeError){ IPAdmin.validate_ip_netmask(:Netmask => 129, :Version => 6) }
|
153
325
|
|
154
|
-
assert_raise(ArgumentError){ IPAdmin.validate_ip_netmask('1') }
|
155
326
|
assert_raise(ArgumentError){ IPAdmin.validate_ip_netmask({}) }
|
156
327
|
assert_raise(ArgumentError){ IPAdmin.validate_ip_netmask(:Netmask => [])}
|
157
328
|
assert_raise(ArgumentError){ IPAdmin.validate_ip_netmask(:Netmask => '/24', :Version => 5)}
|
158
|
-
end
|
159
|
-
|
160
|
-
|
161
|
-
def test_compare
|
162
|
-
cidr4_1 = IPAdmin::CIDR.new(:CIDR => '192.168.1.0/24')
|
163
|
-
cidr4_2 = IPAdmin::CIDR.new(:CIDR => '192.168.1.0/25')
|
164
|
-
cidr4_3 = IPAdmin::CIDR.new(:CIDR => '192.168.2.0/24')
|
165
|
-
cidr4_4 = IPAdmin::CIDR.new(:CIDR => '192.168.2.64/26')
|
166
|
-
cidr4_5 = IPAdmin::CIDR.new(:CIDR => '192.168.1.128/25')
|
167
|
-
|
168
|
-
cidr6_1 = IPAdmin::CIDR.new(:CIDR => 'fec0::0/10')
|
169
|
-
cidr6_2 = IPAdmin::CIDR.new(:CIDR => 'fec0::0/64')
|
170
|
-
cidr6_3 = IPAdmin::CIDR.new(:CIDR => 'fe80::0/10')
|
171
|
-
cidr6_4 = IPAdmin::CIDR.new(:CIDR => 'fe80::0/11')
|
172
|
-
|
173
|
-
comp1 = IPAdmin.compare(cidr4_1,cidr4_2)
|
174
|
-
comp2 = IPAdmin.compare(cidr4_4,cidr4_3)
|
175
|
-
comp3 = IPAdmin.compare(cidr4_1,cidr4_1)
|
176
|
-
comp4 = IPAdmin.compare(cidr4_1,cidr4_3)
|
177
|
-
comp5 = IPAdmin.compare(cidr6_1,cidr6_2)
|
178
|
-
comp6 = IPAdmin.compare(cidr6_4,cidr6_3)
|
179
|
-
comp7 = IPAdmin.compare(cidr6_1,cidr6_1)
|
180
|
-
comp8 = IPAdmin.compare(cidr6_1,cidr6_3)
|
181
|
-
comp9 = IPAdmin.compare(cidr4_2,cidr4_5)
|
182
|
-
|
183
|
-
assert_equal([cidr4_1,cidr4_2],comp1)
|
184
|
-
assert_equal([cidr4_3,cidr4_4],comp2)
|
185
|
-
assert_equal(1,comp3)
|
186
|
-
assert_nil(comp4)
|
187
|
-
assert_equal([cidr6_1,cidr6_2],comp5)
|
188
|
-
assert_equal([cidr6_3,cidr6_4],comp6)
|
189
|
-
assert_equal(1,comp7)
|
190
|
-
assert_nil(comp8)
|
191
|
-
assert_nil(comp9)
|
192
|
-
|
193
|
-
assert_raise(ArgumentError){ IPAdmin.compare('1',cidr4_2) }
|
194
|
-
assert_raise(ArgumentError){ IPAdmin.compare(cidr4_2, '1') }
|
195
|
-
assert_raise(ArgumentError){ IPAdmin.compare(cidr4_1,cidr6_1)}
|
196
|
-
end
|
197
|
-
|
198
|
-
|
199
|
-
def test_minimum_size
|
200
|
-
assert_equal(24, IPAdmin.minimum_size(:IPCount => 200))
|
201
|
-
assert_equal(96, IPAdmin.minimum_size(:IPCount => 2**32-1, :Version => 6))
|
202
|
-
|
203
|
-
assert_raise(ArgumentError){ IPAdmin.minimum_size(1) }
|
204
|
-
assert_raise(ArgumentError){ IPAdmin.minimum_size({}) }
|
205
|
-
end
|
206
|
-
|
207
|
-
|
208
|
-
def test_range
|
209
|
-
cidr4_1 = IPAdmin::CIDR.new(:CIDR => '192.168.1.0/24')
|
210
|
-
cidr4_2 = IPAdmin::CIDR.new(:CIDR => '192.168.1.50/24')
|
211
|
-
cidr4_3 = IPAdmin::CIDR.new(:CIDR => '192.168.1.2/24')
|
212
|
-
cidr6_1 = IPAdmin::CIDR.new(:CIDR => 'fec0::/64')
|
213
|
-
cidr6_2 = IPAdmin::CIDR.new(:CIDR => 'fec0::32/64')
|
214
|
-
|
215
|
-
assert_equal(['192.168.1.1'], IPAdmin.range(:Boundaries => [cidr4_1,cidr4_2], :Limit => 1) )
|
216
|
-
assert_equal(['fec0:0000:0000:0000:0000:0000:0000:0001'], IPAdmin.range(:Boundaries => [cidr6_1,cidr6_2], :Limit => 1) )
|
217
|
-
|
218
|
-
list = IPAdmin.range(:Boundaries => [cidr4_1,cidr4_2], :Bitstep => 2)
|
219
|
-
assert_equal(25, list.length)
|
220
|
-
assert_equal('192.168.1.49', list[24])
|
221
|
-
|
222
|
-
list = IPAdmin.range(:Boundaries => [cidr4_1,cidr4_3], :Objectify => true)
|
223
|
-
assert_kind_of(IPAdmin::CIDR, list[0])
|
224
|
-
assert_equal('192.168.1.1/32', (list[0]).desc)
|
225
|
-
|
226
|
-
assert_raise(ArgumentError){ IPAdmin.range(:Limit => 1) }
|
227
|
-
assert_raise(ArgumentError){ IPAdmin.range(:Boundaries => [1,2]) }
|
228
|
-
assert_raise(ArgumentError){ IPAdmin.compare('1') }
|
229
|
-
assert_raise(ArgumentError){ IPAdmin.range(:Boundaries => [cidr4_1,cidr6_2]) }
|
230
|
-
end
|
231
|
-
|
232
|
-
|
233
|
-
def test_shorten
|
234
|
-
assert_equal('fec0::', IPAdmin.shorten('fec0:0000:0000:0000:0000:0000:0000:0000') )
|
235
|
-
assert_equal('fec0::2:0:0:1', IPAdmin.shorten('fec0:0000:0000:0000:0002:0000:0000:0001') )
|
236
|
-
assert_equal('fec0::2:0:0:1', IPAdmin.shorten('fec0:00:0000:0:02:0000:0:1') )
|
237
|
-
assert_equal('fec0::2:2:0:0:1', IPAdmin.shorten('fec0:0000:0000:0002:0002:0000:0000:0001') )
|
238
|
-
assert_equal('fec0:0:0:1::', IPAdmin.shorten('fec0:0000:0000:0001:0000:0000:0000:0000') )
|
239
|
-
assert_equal('fec0:1:1:1:1:1:1:1', IPAdmin.shorten('fec0:0001:0001:0001:0001:0001:0001:0001') )
|
240
|
-
assert_equal('fec0:ffff:ffff:0:ffff:ffff:ffff:ffff', IPAdmin.shorten('fec0:ffff:ffff:0000:ffff:ffff:ffff:ffff') )
|
241
|
-
assert_equal('fec0:ffff:ffff:ffff:ffff:ffff:ffff:ffff', IPAdmin.shorten('fec0:ffff:ffff:ffff:ffff:ffff:ffff:ffff') )
|
242
|
-
assert_equal('fec0::', IPAdmin.shorten('fec0::') )
|
243
|
-
assert_equal('fec0::192.168.1.1', IPAdmin.shorten('fec0:0:0:0:0:0:192.168.1.1') )
|
244
|
-
|
245
|
-
assert_raise(ArgumentError){ IPAdmin.shorten(1) }
|
246
|
-
end
|
247
|
-
|
248
|
-
|
249
|
-
def test_unshorten
|
250
|
-
assert_equal('fec0:0000:0000:0000:0000:0000:0000:0000', IPAdmin.unshorten('fec0::') )
|
251
|
-
assert_equal('fec0:0000:0000:0000:0002:0000:0000:0001', IPAdmin.unshorten('fec0::2:0:0:1') )
|
252
|
-
assert_equal('fec0:0000:0000:0000:0002:0000:0000:0001', IPAdmin.unshorten('fec0:0:0:0:2:0:0:1') )
|
253
|
-
assert_equal('0000:0000:0000:0000:0000:ffff:10.1.0.1', IPAdmin.unshorten('::ffff:10.1.0.1') )
|
254
|
-
|
255
|
-
assert_raise(ArgumentError){ IPAdmin.unshorten(1) }
|
256
|
-
end
|
257
|
-
|
258
|
-
|
259
|
-
def test_merge
|
260
|
-
cidr4 = [IPAdmin::CIDR.new(:CIDR => '192.168.1.0/24'),
|
261
|
-
IPAdmin::CIDR.new(:CIDR => '192.168.1.0/26'),
|
262
|
-
IPAdmin::CIDR.new(:CIDR => '192.168.1.4/30'),
|
263
|
-
IPAdmin::CIDR.new(:CIDR => '192.168.1.0/30'),
|
264
|
-
IPAdmin::CIDR.new(:CIDR => '192.168.1.64/27'),
|
265
|
-
IPAdmin::CIDR.new(:CIDR => '192.168.1.96/27'),
|
266
|
-
IPAdmin::CIDR.new(:CIDR => '192.168.1.128/25'),
|
267
|
-
IPAdmin::CIDR.new(:CIDR => '10.1.0.0/31'),
|
268
|
-
IPAdmin::CIDR.new(:CIDR => '10.1.0.0/24'),
|
269
|
-
IPAdmin::CIDR.new(:CIDR => '10.1.0.2/31'),
|
270
|
-
IPAdmin::CIDR.new(:CIDR => '10.1.0.4/30'),
|
271
|
-
IPAdmin::CIDR.new(:CIDR => '10.1.0.16/28'),
|
272
|
-
IPAdmin::CIDR.new(:CIDR => '10.1.0.32/28'),
|
273
|
-
IPAdmin::CIDR.new(:CIDR => '10.1.0.48/28'),
|
274
|
-
IPAdmin::CIDR.new(:CIDR => '10.1.0.0/27'),
|
275
|
-
IPAdmin::CIDR.new(:CIDR => '10.1.0.64/26'),
|
276
|
-
IPAdmin::CIDR.new(:CIDR => '10.1.0.128/25'),
|
277
|
-
IPAdmin::CIDR.new(:CIDR => '10.1.0.0/27'),
|
278
|
-
IPAdmin::CIDR.new(:CIDR => '10.1.0.0/24')]
|
279
|
-
|
280
|
-
cidr4_2 = [IPAdmin::CIDR.new(:CIDR => '10.0.0.0/9'),
|
281
|
-
IPAdmin::CIDR.new(:CIDR => '10.1.0.0/9'),
|
282
|
-
IPAdmin::CIDR.new(:CIDR => '10.1.0.0/24'),
|
283
|
-
IPAdmin::CIDR.new(:CIDR => '10.1.0.64/26'),
|
284
|
-
IPAdmin::CIDR.new(:CIDR => '10.1.0.128/26'),
|
285
|
-
IPAdmin::CIDR.new(:CIDR => '128.0.0.0/2'),
|
286
|
-
IPAdmin::CIDR.new(:CIDR => '129.0.0.0/2'),
|
287
|
-
IPAdmin::CIDR.new(:CIDR => '1.1.1.0'),
|
288
|
-
IPAdmin::CIDR.new(:CIDR => '1.1.1.1'),
|
289
|
-
IPAdmin::CIDR.new(:CIDR => '1.1.1.3'),
|
290
|
-
IPAdmin::CIDR.new(:CIDR => '1.1.1.4'),
|
291
|
-
IPAdmin::CIDR.new(:CIDR => '1.1.1.5'),
|
292
|
-
IPAdmin::CIDR.new(:CIDR => '1.1.1.6'),
|
293
|
-
IPAdmin::CIDR.new(:CIDR => '1.1.1.7'),
|
294
|
-
IPAdmin::CIDR.new(:CIDR => '192.168.1.0/27'),
|
295
|
-
IPAdmin::CIDR.new(:CIDR => '192.168.1.32/27'),
|
296
|
-
IPAdmin::CIDR.new(:CIDR => '192.168.1.96/27'),
|
297
|
-
IPAdmin::CIDR.new(:CIDR => '192.168.1.128/26'),
|
298
|
-
IPAdmin::CIDR.new(:CIDR => '192.168.1.192/26')]
|
299
|
-
|
300
|
-
cidr6 = [IPAdmin::CIDR.new(:CIDR => 'fec0::/16'),
|
301
|
-
IPAdmin::CIDR.new(:CIDR => 'fec0::/17'),
|
302
|
-
IPAdmin::CIDR.new(:CIDR => 'fec0:8000::/18'),
|
303
|
-
IPAdmin::CIDR.new(:CIDR => 'fec0:c000::/18'),
|
304
|
-
IPAdmin::CIDR.new(:CIDR => 'fec0::/64'),
|
305
|
-
IPAdmin::CIDR.new(:CIDR => 'fec0::/66'),
|
306
|
-
IPAdmin::CIDR.new(:CIDR => 'fec0::8000:0:0:0/66'),
|
307
|
-
IPAdmin::CIDR.new(:CIDR => 'fec0::c000:0:0:0/66'),
|
308
|
-
IPAdmin::CIDR.new(:CIDR => 'fec0::/127'),
|
309
|
-
IPAdmin::CIDR.new(:CIDR => 'fec0::2/127')]
|
310
|
-
|
311
|
-
merge4 = IPAdmin.merge(:List => cidr4)
|
312
|
-
merge4_2 = IPAdmin.merge(:List => cidr4_2, :Objectify => true)
|
313
|
-
merge6 = IPAdmin.merge(:List => cidr6)
|
314
|
-
|
315
|
-
assert_equal(5, merge4.length)
|
316
|
-
assert_equal(11, merge4_2.length)
|
317
|
-
assert_equal(5, merge6.length)
|
318
|
-
|
319
|
-
assert_equal('1.1.1.0/31', merge4_2[0].desc)
|
320
|
-
|
321
|
-
assert_raise(ArgumentError){ IPAdmin.merge(1) }
|
322
|
-
assert_raise(ArgumentError){ IPAdmin.merge({}) }
|
323
329
|
end
|
324
330
|
|
325
331
|
|