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/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: