ipadmin 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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