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.
data/tests/tree_test.rb CHANGED
@@ -7,242 +7,179 @@ require 'test/unit'
7
7
 
8
8
  class TestTree < Test::Unit::TestCase
9
9
 
10
- def test_new
11
- assert_not_nil(IPAdmin::Tree.new(:Version => 4) )
12
- assert_not_nil(IPAdmin::Tree.new(:Version => 6) )
13
-
14
- end
15
-
16
10
  def test_add
17
- cidr4_1 = IPAdmin::CIDR.new(:CIDR => '192.168.1.0/24')
18
- cidr4_2 = IPAdmin::CIDR.new(:CIDR => '10.1.0.0/24')
19
- cidr4_3 = IPAdmin::CIDR.new(:CIDR => '192.168.1.0/26')
20
- cidr4_4 =IPAdmin::CIDR.new(:CIDR => '192.168.1.0/30')
11
+ tree = IPAdmin::Tree.new()
21
12
 
22
- cidr6_1 = IPAdmin::CIDR.new(:CIDR => 'fec0::/10')
23
- cidr6_2 = IPAdmin::CIDR.new(:CIDR => 'fe80::/10')
24
- cidr6_3 = IPAdmin::CIDR.new(:CIDR => 'fec0::/64')
25
- cidr6_4 =IPAdmin::CIDR.new(:CIDR => 'fec0::/126')
26
-
27
- tree4 = IPAdmin::Tree.new(:Version => 4)
28
- tree6 = IPAdmin::Tree.new(:Version => 6)
29
-
30
- assert_raise(RuntimeError){tree4.add(cidr6_1)}
31
- assert_raise(RuntimeError){tree6.add(cidr4_1)}
32
-
33
- assert_nothing_raised(RuntimeError){tree4.add(cidr4_1)}
34
- assert_nothing_raised(RuntimeError){tree4.add(cidr4_2)}
35
- assert_nothing_raised(RuntimeError){tree4.add(cidr4_3)}
36
- assert_nothing_raised(RuntimeError){tree4.add(cidr4_4)}
37
- assert_raise(RuntimeError){tree4.add(cidr4_1)}
38
-
39
- assert_nothing_raised(RuntimeError){tree6.add(cidr6_1)}
40
- assert_nothing_raised(RuntimeError){tree6.add(cidr6_2)}
41
- assert_nothing_raised(RuntimeError){tree6.add(cidr6_3)}
42
- assert_nothing_raised(RuntimeError){tree6.add(cidr6_4)}
43
- assert_raise(RuntimeError){tree6.add(cidr6_1)}
13
+ assert_nothing_raised(RuntimeError){tree.add!('192.168.1.0/24')}
14
+ assert_nothing_raised(RuntimeError){tree.add!('10.1.0.0/24')}
15
+ assert_nothing_raised(RuntimeError){tree.add!('192.168.1.0/26')}
16
+ assert_nothing_raised(RuntimeError){tree.add!('fec0::/10')}
17
+ assert_nothing_raised(RuntimeError){tree.add!('fec0::/64')}
44
18
 
45
19
  end
46
20
 
47
- def test_collapse
48
- cidr4_1 = IPAdmin::CIDR.new(:CIDR => '192.168.1.0/24')
49
- cidr4_2 = IPAdmin::CIDR.new(:CIDR => '192.168.1.0/26')
50
- cidr4_3 = IPAdmin::CIDR.new(:CIDR => '192.168.1.64/26')
51
- cidr4_4 =IPAdmin::CIDR.new(:CIDR => '192.168.1.128/26')
52
- cidr4_5 = IPAdmin::CIDR.new(:CIDR => '192.168.1.192/26')
53
- cidr4_6 = IPAdmin::CIDR.new(:CIDR => '192.168.1.0/27')
54
- cidr4_7 = IPAdmin::CIDR.new(:CIDR => '192.168.1.32/27')
55
-
56
- cidr6_1 = IPAdmin::CIDR.new(:CIDR => 'fec0::/64')
57
- cidr6_2 = IPAdmin::CIDR.new(:CIDR => 'fec0::/66')
58
- cidr6_3 = IPAdmin::CIDR.new(:CIDR => 'fec0::4000:0:0:0/66')
59
- cidr6_4 = IPAdmin::CIDR.new(:CIDR => 'fec0::8000:0:0:0/66')
60
- cidr6_5 = IPAdmin::CIDR.new(:CIDR => 'fec0::c000:0:0:0/66')
61
- cidr6_6 = IPAdmin::CIDR.new(:CIDR => 'fec0::/67')
62
- cidr6_7 = IPAdmin::CIDR.new(:CIDR => 'fec0::2000:0:0:0/67')
63
-
21
+ def test_ancestors
22
+ tree = IPAdmin::Tree.new()
64
23
 
65
- tree4 = IPAdmin::Tree.new(:Version => 4)
66
- tree6 = IPAdmin::Tree.new(:Version => 6)
67
-
68
- tree4.add(cidr4_1)
69
- tree4.add(cidr4_2)
70
- tree4.add(cidr4_3)
71
- tree4.add(cidr4_4)
72
- tree4.add(cidr4_5)
73
- tree4.add(cidr4_6)
74
- tree4.add(cidr4_7)
75
-
76
- tree6.add(cidr6_1)
77
- tree6.add(cidr6_2)
78
- tree6.add(cidr6_3)
79
- tree6.add(cidr6_4)
80
- tree6.add(cidr6_5)
81
- tree6.add(cidr6_6)
82
- tree6.add(cidr6_7)
83
-
84
- new_tree4 = tree4.collapse()
85
- assert_equal(1, (new_tree4.dump.length))
24
+ tree.add!('192.168.1.0/24')
25
+ tree.add!('192.168.1.64/26')
26
+ tree.add!('192.168.1.64/27')
27
+ tree.add!('192.168.1.64/28')
28
+ tree.add!('192.168.2.0/24')
29
+
30
+ ancestors = tree.ancestors('192.168.1.64/28')
31
+ assert_equal(3, ancestors.length)
32
+ end
33
+
34
+ def test_children
35
+ tree = IPAdmin::Tree.new()
36
+
37
+ tree.add!('192.168.1.0/24')
38
+ tree.add!('192.168.1.64/26')
39
+ tree.add!('192.168.1.64/27')
40
+ tree.add!('192.168.1.64/28')
41
+ tree.add!('192.168.2.0/24')
42
+
43
+ children = tree.children('192.168.1.64/26')
44
+ assert_equal(1, children.length)
45
+ end
46
+
47
+ def test_delete
48
+ tree = IPAdmin::Tree.new()
49
+
50
+ tree.add!('192.168.1.0/24')
51
+ tree.add!('192.168.1.64/26')
52
+ tree.add!('192.168.1.64/27')
53
+ tree.add!('192.168.1.64/28')
54
+ tree.add!('192.168.2.0/24')
86
55
 
87
- new_tree6 = tree6.collapse()
88
- assert_equal(1, (new_tree6.dump.length))
56
+ tree.delete!('192.168.1.64/27')
89
57
 
58
+ assert_equal(4, tree.dump.length)
90
59
  end
91
60
 
61
+ def test_descendants
62
+ tree = IPAdmin::Tree.new()
63
+
64
+ tree.add!('192.168.1.0/24')
65
+ tree.add!('192.168.1.64/26')
66
+ tree.add!('192.168.1.64/27')
67
+ tree.add!('192.168.1.64/28')
68
+ tree.add!('192.168.2.0/24')
69
+
70
+ descendants = tree.descendants('192.168.1.64/26')
71
+ assert_equal(2, descendants.length)
72
+ end
73
+
92
74
  def test_dump
93
- cidr4_1 = IPAdmin::CIDR.new(:CIDR => '192.168.1.0/24')
94
- cidr4_2 = IPAdmin::CIDR.new(:CIDR => '10.1.0.0/24')
95
- cidr4_3 = IPAdmin::CIDR.new(:CIDR => '192.168.1.0/26')
96
- cidr4_4 =IPAdmin::CIDR.new(:CIDR => '192.168.1.0/30')
97
-
98
- cidr6_1 = IPAdmin::CIDR.new(:CIDR => 'fec0::/10')
99
- cidr6_2 = IPAdmin::CIDR.new(:CIDR => 'fe80::/10')
100
- cidr6_3 = IPAdmin::CIDR.new(:CIDR => 'fec0::/64')
101
- cidr6_4 =IPAdmin::CIDR.new(:CIDR => 'fec0::/126')
102
-
103
- tree4 = IPAdmin::Tree.new(:Version => 4)
104
- tree6 = IPAdmin::Tree.new(:Version => 6)
105
-
106
- tree4.add(cidr4_1)
107
- tree4.add(cidr4_2)
108
- tree4.add(cidr4_3)
109
- tree4.add(cidr4_4)
110
- tree6.add(cidr6_1)
111
- tree6.add(cidr6_2)
112
- tree6.add(cidr6_3)
113
- tree6.add(cidr6_4)
75
+ tree = IPAdmin::Tree.new()
76
+
77
+ tree.add!('192.168.1.0/24')
78
+ tree.add!('10.1.0.0/24')
79
+ tree.add!('192.168.1.0/26')
80
+ tree.add!('192.168.1.0/30')
81
+ tree.add!('fec0::/10')
82
+ tree.add!('fe80::/10')
83
+ tree.add!('fec0::/64')
84
+ tree.add!('fec0::/126')
114
85
 
115
- dump4 = tree4.dump()
116
- dump6 = tree6.dump()
86
+ dump = tree.dump()
117
87
 
118
- obj0 = dump4[0][:Object]
119
- obj1 = dump4[1][:Object]
120
- obj3 = dump4[3][:Object]
88
+ obj0 = dump[0][:CIDR]
89
+ obj1 = dump[1][:CIDR]
90
+ obj3 = dump[3][:CIDR]
121
91
  assert_equal('10.1.0.0/24', obj0.desc)
122
92
  assert_equal('192.168.1.0/24', obj1.desc)
123
93
  assert_equal('192.168.1.0/30', obj3.desc)
124
94
 
125
- obj0 = dump6[0][:Object]
126
- obj1 = dump6[1][:Object]
127
- obj3 = dump6[3][:Object]
128
- assert_equal('fe80:0000:0000:0000:0000:0000:0000:0000/10', obj0.desc)
129
- assert_equal('fec0:0000:0000:0000:0000:0000:0000:0000/10', obj1.desc)
130
- assert_equal('fec0:0000:0000:0000:0000:0000:0000:0000/126', obj3.desc)
95
+ obj4 = dump[4][:CIDR]
96
+ obj5 = dump[5][:CIDR]
97
+ obj7 = dump[7][:CIDR]
98
+ assert_equal('fe80:0000:0000:0000:0000:0000:0000:0000/10', obj4.desc)
99
+ assert_equal('fec0:0000:0000:0000:0000:0000:0000:0000/10', obj5.desc)
100
+ assert_equal('fec0:0000:0000:0000:0000:0000:0000:0000/126', obj7.desc)
131
101
 
132
102
  end
133
103
 
134
- def test_find
104
+ def test_exists
135
105
 
136
- cidr4_1 = IPAdmin::CIDR.new(:CIDR => '192.168.1.0/24')
137
- cidr4_2 = IPAdmin::CIDR.new(:CIDR => '10.1.0.0/24')
138
- cidr4_3 = IPAdmin::CIDR.new(:CIDR => '192.168.1.0/26')
139
- cidr4_4 =IPAdmin::CIDR.new(:CIDR => '192.168.1.0/30')
140
- cidr4_5 =IPAdmin::CIDR.new(:CIDR => '192.168.2.0/30')
106
+ tree = IPAdmin::Tree.new()
141
107
 
142
- cidr6_1 = IPAdmin::CIDR.new(:CIDR => 'fec0::/10')
143
- cidr6_2 = IPAdmin::CIDR.new(:CIDR => 'fe80::/10')
144
- cidr6_3 = IPAdmin::CIDR.new(:CIDR => 'fec0::/64')
145
- cidr6_4 =IPAdmin::CIDR.new(:CIDR => 'fec0::/126')
108
+ tree.add!('192.168.1.0/24')
109
+ tree.add!('10.1.0.0/24')
110
+ tree.add!('192.168.1.64/26')
111
+ tree.add!('10.1.0.44/30')
146
112
 
147
- tree4 = IPAdmin::Tree.new(:Version => 4)
148
- tree6 = IPAdmin::Tree.new(:Version => 6)
149
-
150
- tree4.add(cidr4_1)
151
- tree4.add(cidr4_2)
152
- tree4.add(cidr4_3)
153
- tree4.add(cidr4_4)
154
- tree6.add(cidr6_1)
155
- tree6.add(cidr6_2)
156
- tree6.add(cidr6_3)
157
- tree6.add(cidr6_4)
158
-
159
- assert_equal('192.168.1.0/30', tree4.find(cidr4_4).desc)
160
- assert_equal('10.1.0.0/24', tree4.find(cidr4_2).desc)
161
- assert_equal(nil, tree4.find(cidr4_5) )
162
- assert_equal('fec0:0000:0000:0000:0000:0000:0000:0000/126', tree6.find(cidr6_4).desc)
163
- assert_equal('fe80:0000:0000:0000:0000:0000:0000:0000/10', tree6.find(cidr6_2).desc)
113
+ assert_equal(true, tree.exists?('192.168.1.0/24'))
114
+ assert_equal(true, tree.exists?('10.1.0.44/30'))
115
+ assert_equal(false, tree.exists?('10.2.0.0/24'))
164
116
 
165
117
  end
166
118
 
167
- def test_exists
119
+ def test_fill_in
120
+ tree = IPAdmin::Tree.new()
168
121
 
169
- cidr4_1 = IPAdmin::CIDR.new(:CIDR => '192.168.1.0/24')
170
- cidr4_2 =IPAdmin::CIDR.new(:CIDR => '192.168.2.0/24')
171
- cidr4_3 =IPAdmin::CIDR.new(:CIDR => '192.168.3.0/30')
172
-
173
- cidr6_1 = IPAdmin::CIDR.new(:CIDR => 'fec0::/10')
174
- cidr6_2 = IPAdmin::CIDR.new(:CIDR => 'fe80::/10')
122
+ tree.add!('192.168.1.0/24')
123
+ tree.add!('192.168.1.64/26')
175
124
 
176
- tree4 = IPAdmin::Tree.new(:Version => 4)
177
- tree6 = IPAdmin::Tree.new(:Version => 6)
125
+ tree.fill_in!('192.168.1.0/24')
178
126
 
179
- tree4.add(cidr4_1)
180
- tree4.add(cidr4_2)
127
+ assert_equal(4, tree.dump.length)
128
+ end
129
+
130
+ def test_find
131
+ tree = IPAdmin::Tree.new()
181
132
 
182
- tree6.add(cidr6_1)
183
- tree6.add(cidr6_2)
184
-
185
- assert_equal(true, tree4.exists?(cidr4_1))
186
- assert_equal(true, tree6.exists?(cidr6_2))
187
- assert_equal(false, tree4.exists?(cidr4_3))
188
-
189
- end
133
+ tree.add!('192.168.1.0/24')
134
+ tree.add!('10.1.0.0/24')
135
+ tree.add!('192.168.1.64/26')
136
+ tree.add!('10.1.0.44/30')
137
+ assert_equal('192.168.1.64/26', tree.longest_match('192.168.1.64/26').desc)
138
+ assert_equal('10.1.0.44/30', tree.longest_match('10.1.0.44/30').desc)
139
+ end
190
140
 
141
+ def test_find_space
142
+ tree = IPAdmin::Tree.new()
143
+
144
+ cidr = ['192.168.1.0/24','192.168.1.0/26','192.168.1.64/26',
145
+ '192.168.1.128/26','192.168.1.192/26','192.168.1.0/27',
146
+ '192.168.1.0/28','192.168.1.16/30','192.168.1.16/29',
147
+ '192.168.1.32/27','192.168.1.24/30','192.168.1.28/30',
148
+ '192.168.1.64/27','192.168.1.25',
149
+ 'fec0::/60','fec0::/66','fec0::4000:0:0:0/66',
150
+ 'fec0::8000:0:0:0/66','fec0::c000:0:0:0/66','fec0::c000:0:0:0/67',
151
+ 'fec0::/67','fec0::2000:0:0:0/67','fec0::8000:0:0:0/67','fec0::4000:0:0:0/69']
152
+
153
+ cidr.each {|x| tree.add!(x)}
154
+ assert_equal(10, tree.find_space(:IPCount => 16).length)
155
+ end
191
156
 
192
- def test_find_space
193
- cidr4_1 = IPAdmin::CIDR.new(:CIDR => '192.168.1.0/24')
194
- cidr4_2 = IPAdmin::CIDR.new(:CIDR => '10.1.0.0/24')
195
- cidr4_3 = IPAdmin::CIDR.new(:CIDR => '192.168.1.0/26')
196
- cidr4_4 =IPAdmin::CIDR.new(:CIDR => '192.168.1.0/30')
197
- cidr4_5 =IPAdmin::CIDR.new(:CIDR => '192.168.1.64/26')
198
- cidr4_6 =IPAdmin::CIDR.new(:CIDR => '192.168.1.128/26')
199
- cidr4_7 =IPAdmin::CIDR.new(:CIDR => '192.168.1.224/27')
200
- cidr4_8 = IPAdmin::CIDR.new(:CIDR => '10.1.0.0/25')
201
-
202
-
203
- cidr6_1 = IPAdmin::CIDR.new(:CIDR => 'fec0::/10')
204
- cidr6_2 = IPAdmin::CIDR.new(:CIDR => 'fe80::/10')
205
- cidr6_3 = IPAdmin::CIDR.new(:CIDR => 'fec0::/64')
206
- cidr6_4 =IPAdmin::CIDR.new(:CIDR => 'fec0::/126')
207
- cidr6_5 = IPAdmin::CIDR.new(:CIDR => 'fec0::/96')
208
- cidr6_6 = IPAdmin::CIDR.new(:CIDR => 'fec0:2000::/64')
209
- cidr6_7 = IPAdmin::CIDR.new(:CIDR => 'fec0:3000::/96')
210
-
211
-
212
- tree4 = IPAdmin::Tree.new(:Version => 4)
213
- tree6 = IPAdmin::Tree.new(:Version => 6)
157
+ def test_longest_match
158
+
159
+ tree = IPAdmin::Tree.new()
160
+
161
+ tree.add!('192.168.1.0/24')
162
+ tree.add!('10.1.0.0/24')
163
+ tree.add!('192.168.1.64/26')
164
+ tree.add!('10.1.0.44/30')
214
165
 
215
- tree4.add(cidr4_1)
216
- tree4.add(cidr4_2)
217
- tree4.add(cidr4_3)
218
- tree4.add(cidr4_4)
219
- tree4.add(cidr4_5)
220
- tree4.add(cidr4_6)
221
- tree4.add(cidr4_7)
222
- tree4.add(cidr4_8)
166
+ assert_equal('192.168.1.64/26', tree.longest_match('192.168.1.65').desc)
167
+ assert_equal('10.1.0.44/30', tree.longest_match('10.1.0.46').desc)
168
+ assert_equal(nil, tree.longest_match('192.168.2.0') )
223
169
 
224
- tree6.add(cidr6_1)
225
- tree6.add(cidr6_2)
226
- tree6.add(cidr6_3)
227
- tree6.add(cidr6_4)
228
- tree6.add(cidr6_5)
229
- tree6.add(cidr6_6)
230
- tree6.add(cidr6_7)
170
+ end
171
+
172
+ def test_merge_subnets
173
+ tree = IPAdmin::Tree.new()
231
174
 
232
-
233
- list4 = tree4.find_space(:Subnet => 27, :Limit => 2)
234
- assert_equal('10.1.0.0/25', list4[0].desc)
235
- assert_equal('192.168.1.64/26', list4[1].desc)
175
+ tree.add!('192.168.1.0/24')
176
+ tree.add!('192.168.1.0/26')
177
+ tree.add!('192.168.1.64/26')
178
+ tree.add!('192.168.1.192/26')
236
179
 
237
- list4 = tree4.find_space(:IPCount => 29, :Limit => 2)
238
- assert_equal('10.1.0.0/25', list4[0].desc)
239
- assert_equal('192.168.1.64/26', list4[1].desc)
240
-
241
- list6 = tree6.find_space(:Subnet => 98)
242
- assert_equal('fe80:0000:0000:0000:0000:0000:0000:0000/10', list6[0].desc)
243
- assert_equal('fec0:2000:0000:0000:0000:0000:0000:0000/64', list6[1].desc)
244
- assert_equal('fec0:3000:0000:0000:0000:0000:0000:0000/96', list6[2].desc)
245
-
180
+ tree.merge_subnets!('192.168.1.0/24')
181
+
182
+ assert_equal(3, tree.dump.length)
246
183
  end
247
184
 
248
185
  def test_prune
@@ -254,51 +191,62 @@ class TestTree < Test::Unit::TestCase
254
191
  cidr4_6 = IPAdmin::CIDR.new(:CIDR => '192.168.1.128/26')
255
192
  cidr4_7 = IPAdmin::CIDR.new(:CIDR => '192.168.1.192/26')
256
193
 
257
- tree4 = IPAdmin::Tree.new(:Version => 4)
194
+ tree4 = IPAdmin::Tree.new()
258
195
 
259
- tree4.add(cidr4_1)
260
- tree4.add(cidr4_2)
261
- tree4.add(cidr4_3)
262
- tree4.add(cidr4_4)
263
- tree4.add(cidr4_5)
264
- tree4.add(cidr4_6)
265
- tree4.add(cidr4_7)
196
+ tree4.add!(cidr4_1)
197
+ tree4.add!(cidr4_2)
198
+ tree4.add!(cidr4_3)
199
+ tree4.add!(cidr4_4)
200
+ tree4.add!(cidr4_5)
201
+ tree4.add!(cidr4_6)
202
+ tree4.add!(cidr4_7)
266
203
 
267
- tree4.prune(cidr4_5)
204
+ tree4.prune!(cidr4_5)
268
205
  dump = tree4.dump
269
- assert_equal(6, dump.length)
206
+ assert_equal(7, dump.length)
270
207
 
271
- tree4.prune(cidr4_1)
208
+ tree4.prune!(cidr4_1)
272
209
  dump = tree4.dump
273
- assert_equal(1, dump.length)
210
+ assert_equal(2, dump.length)
274
211
  end
275
212
 
276
213
  def test_remove
277
214
  cidr4_1 = IPAdmin::CIDR.new(:CIDR => '192.168.1.0/24')
278
215
  cidr4_2 = IPAdmin::CIDR.new(:CIDR => '10.1.0.0/24')
279
216
  cidr4_3 = IPAdmin::CIDR.new(:CIDR => '192.168.1.0/26')
280
- cidr4_4 =IPAdmin::CIDR.new(:CIDR => '192.168.1.0/30')
217
+ cidr4_4 = IPAdmin::CIDR.new(:CIDR => '192.168.1.0/30')
281
218
  cidr4_5 = IPAdmin::CIDR.new(:CIDR => '192.168.1.64/26')
282
219
  cidr4_6 = IPAdmin::CIDR.new(:CIDR => '192.168.1.128/26')
283
220
  cidr4_7 = IPAdmin::CIDR.new(:CIDR => '192.168.1.192/26')
284
221
 
285
- tree4 = IPAdmin::Tree.new(:Version => 4)
222
+ tree4 = IPAdmin::Tree.new()
286
223
 
287
- tree4.add(cidr4_1)
288
- tree4.add(cidr4_2)
289
- tree4.add(cidr4_3)
290
- tree4.add(cidr4_4)
291
- tree4.add(cidr4_5)
292
- tree4.add(cidr4_6)
293
- tree4.add(cidr4_7)
224
+ tree4.add!(cidr4_1)
225
+ tree4.add!(cidr4_2)
226
+ tree4.add!(cidr4_3)
227
+ tree4.add!(cidr4_4)
228
+ tree4.add!(cidr4_5)
229
+ tree4.add!(cidr4_6)
230
+ tree4.add!(cidr4_7)
294
231
 
295
- tree4.remove(cidr4_5)
232
+ tree4.remove!(cidr4_5)
296
233
  dump = tree4.dump
297
234
  assert_equal(6, dump.length)
298
235
 
299
- tree4.remove(cidr4_1)
236
+ tree4.remove!(cidr4_1)
300
237
  dump = tree4.dump
301
- assert_equal(5, dump.length)
238
+ assert_equal(1, dump.length)
239
+ end
240
+
241
+ def test_root
242
+ tree = IPAdmin::Tree.new()
243
+
244
+ tree.add!('192.168.1.0/24')
245
+ tree.add!('192.168.1.64/26')
246
+ tree.add!('192.168.1.64/27')
247
+ tree.add!('192.168.2.0/24')
248
+
249
+ assert_equal('192.168.1.0/24', tree.root('192.168.1.64/27').desc)
302
250
  end
303
251
 
304
252
  def test_show
@@ -312,16 +260,28 @@ class TestTree < Test::Unit::TestCase
312
260
 
313
261
  tree4 = IPAdmin::Tree.new(:Version => 4)
314
262
 
315
- tree4.add(cidr4_1)
316
- tree4.add(cidr4_2)
317
- tree4.add(cidr4_3)
318
- tree4.add(cidr4_4)
319
- tree4.add(cidr4_5)
320
- tree4.add(cidr4_6)
321
- tree4.add(cidr4_7)
263
+ tree4.add!(cidr4_1)
264
+ tree4.add!(cidr4_2)
265
+ tree4.add!(cidr4_3)
266
+ tree4.add!(cidr4_4)
267
+ tree4.add!(cidr4_5)
268
+ tree4.add!(cidr4_6)
269
+ tree4.add!(cidr4_7)
322
270
 
323
271
  assert_not_nil(tree4.show())
324
272
  end
273
+
274
+ def test_siblings
275
+ tree = IPAdmin::Tree.new()
276
+
277
+ tree.add!('192.168.1.0/24')
278
+ tree.add!('192.168.1.0/26')
279
+ tree.add!('192.168.1.64/26')
280
+ tree.add!('192.168.1.128/26')
281
+ tree.add!('192.168.1.192/26')
282
+
283
+ assert_equal(3, tree.siblings('192.168.1.0/26').length)
284
+ end
325
285
 
326
286
  end
327
287
 
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.8.11
3
3
  specification_version: 1
4
4
  name: ipadmin
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.3.0
7
- date: 2006-04-07 00:00:00 -05:00
6
+ version: 0.4.0
7
+ date: 2006-04-28 00:00:00 -05:00
8
8
  summary: A package for manipulating IPv4/IPv6 address space.
9
9
  require_paths:
10
10
  - lib
@@ -35,10 +35,10 @@ files:
35
35
  - lib/eui.rb
36
36
  - README
37
37
  test_files:
38
- - tests/eui_test.rb
39
38
  - tests/cidr_test.rb
40
39
  - tests/methods_test.rb
41
40
  - tests/tree_test.rb
41
+ - tests/eui_test.rb
42
42
  rdoc_options: []
43
43
 
44
44
  extra_rdoc_files: