ipadmin 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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(:IP => 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff') )
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(:IP => '255.255.255.255') )
14
- assert_equal(2**128-1, IPAdmin.pack_ip_addr(:IP => 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255') )
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(:Netmask => '32') )
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(:Netmask => 32) )
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(:Integer => 2**32-1) )
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(:Integer => 2**32-1) )
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(:EUI => 'aa-bb-cc-dd-ee-ff') )
79
- assert_not_nil(IPAdmin.validate_eui(:EUI => 'aabb.ccdd.eeff') )
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(:IP => '192.168.1.0') )
91
- assert_not_nil(IPAdmin.validate_ip_addr(:IP => '255.255.255.255') )
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(:IP => 0xff0000) )
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(:IP => 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff') )
100
- assert_not_nil(IPAdmin.validate_ip_addr(:IP => '::') )
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(:Netmask => '32') )
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(:Netmask => 32) )
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