ipadmin 0.1.3.1 → 0.2.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/cidr_test.rb CHANGED
@@ -10,37 +10,175 @@ class TestCIDR < Test::Unit::TestCase
10
10
  def test_new
11
11
  assert_not_nil(IPAdmin::CIDR.new(:CIDR => '192.168.1.0/24') )
12
12
  assert_not_nil(IPAdmin::CIDR.new(:CIDR => '192.168.1.0', :Netmask => '255.255.255.0') )
13
+ assert_not_nil(IPAdmin::CIDR.new(:CIDR => '192.168.1.1') )
13
14
  assert_not_nil(IPAdmin::CIDR.new(:CIDR => 'fec0::/64') )
14
- assert_raise(RuntimeError){ IPAdmin::CIDR.new(:CIDR => '192.168.1.1/24') }
15
- assert_raise(RuntimeError){ IPAdmin::CIDR.new(:CIDR => '192.168.1.0') }
16
- assert_raise(RuntimeError){ IPAdmin::CIDR.new(:CIDR => 'fec0::1/64') }
15
+ assert_not_nil(IPAdmin::CIDR.new(:CIDR => '192.168.1.1/24') )
16
+ assert_not_nil(IPAdmin::CIDR.new(:CIDR => 'fec0::1/64') )
17
17
  end
18
18
 
19
- def test_simple_methods
20
- ip4 = IPAdmin::IPAddr.new(:IPAddr => '192.168.1.1')
21
- ip6 = IPAdmin::IPAddr.new(:IPAddr => 'fec0::1')
19
+ def test_contains
20
+
22
21
  cidr4 = IPAdmin::CIDR.new(:CIDR => '192.168.1.0/24')
23
22
  cidr4_2 = IPAdmin::CIDR.new(:CIDR => '192.168.1.0/26')
23
+ cidr4_3 = IPAdmin::CIDR.new(:CIDR => '192.168.2.0/26')
24
24
  cidr6 = IPAdmin::CIDR.new(:CIDR => 'fec0::/64')
25
25
  cidr6_2 = IPAdmin::CIDR.new(:CIDR => 'fec0::/96')
26
+ cidr6_3 = IPAdmin::CIDR.new(:CIDR => 'fe80::/96')
26
27
 
27
- assert_equal(1,cidr4.contains(ip4) )
28
- assert_equal(1,cidr6.contains(ip6) )
29
28
  assert_equal(1,cidr4.contains(cidr4_2) )
30
29
  assert_equal(1,cidr6.contains(cidr6_2) )
30
+ assert_nil(cidr4.contains(cidr4_3) )
31
+ assert_nil(cidr6.contains(cidr6_3) )
32
+ end
33
+
34
+ def test_nth
35
+ cidr4 = IPAdmin::CIDR.new(:CIDR => '192.168.1.0/24')
36
+ cidr6 = IPAdmin::CIDR.new(:CIDR => 'fec0::/126')
31
37
 
32
- assert_equal('192.168.1.255',cidr4.last() )
38
+ assert_equal('192.168.1.1',cidr4.nth(:Index => 1) )
39
+ assert_kind_of(IPAdmin::CIDR,cidr4.nth(:Index => 1, :Objectify => 1) )
40
+ assert_raise(RuntimeError){ cidr4.nth(:Index => 256) }
41
+ assert_raise(ArgumentError){ cidr4.nth() }
42
+
43
+ assert_equal('fec0:0000:0000:0000:0000:0000:0000:0001',cidr6.nth(:Index => 1) )
44
+ assert_equal('fec0::1',cidr6.nth(:Index => 1, :Short => 1) )
45
+ assert_raise(RuntimeError){ cidr6.nth(:Index => 10) }
46
+ end
47
+
48
+ def test_enumerate
49
+ cidr4 = IPAdmin::CIDR.new(:CIDR => '192.168.1.0/24')
50
+ cidr6 = IPAdmin::CIDR.new(:CIDR => 'fec0::/64')
51
+
52
+ assert_equal(['192.168.1.0'],cidr4.enumerate(:Limit => 1) )
53
+ assert_equal(['fec0:0000:0000:0000:0000:0000:0000:0000'],cidr6.enumerate(:Limit => 1) )
54
+ assert_equal(['fec0::'],cidr6.enumerate(:Limit => 1, :Short => 1) )
55
+
56
+
57
+ enums4 = cidr4.enumerate(:Limit => 2, :Bitstep => 5)
58
+ enums6 = cidr6.enumerate(:Limit => 2, :Bitstep => 5)
59
+ assert_equal('192.168.1.5', enums4[1] )
60
+ assert_equal('fec0:0000:0000:0000:0000:0000:0000:0005', enums6[1] )
61
+
62
+ enums4 = cidr4.enumerate(:Objectify => 1,:Limit => 1)
63
+ assert_kind_of(IPAdmin::CIDR, enums4[0] )
64
+
65
+ end
66
+
67
+ def test_next_ip
68
+ cidr4 = IPAdmin::CIDR.new(:CIDR => '192.168.1.0/24')
69
+ cidr6 = IPAdmin::CIDR.new(:CIDR => 'fec0::/64')
70
+
71
+ next4 = cidr4.next_ip()
72
+ next6 = cidr6.next_ip()
73
+ assert_equal('192.168.2.0',next4 )
74
+ assert_equal('fec0:0000:0000:0001:0000:0000:0000:0000',next6 )
75
+
76
+ next6 = cidr6.next_ip(:Short => 1)
77
+ assert_equal('fec0:0:0:1::',next6 )
78
+
79
+ next4 = cidr4.next_ip(:Bitstep => 2)
80
+ next6 = cidr6.next_ip(:Bitstep => 2)
81
+ assert_equal('192.168.2.1',next4 )
82
+ assert_equal('fec0:0000:0000:0001:0000:0000:0000:0001',next6 )
83
+
84
+ next4 = cidr4.next_ip(:Objectify => 1)
85
+ next6 = cidr6.next_ip(:Objectify => 1)
86
+ assert_equal('192.168.2.0/32',next4.desc )
87
+ assert_equal('fec0:0000:0000:0001:0000:0000:0000:0000/128',next6.desc )
88
+
89
+ end
90
+
91
+ def test_next_subnet
92
+ cidr4 = IPAdmin::CIDR.new(:CIDR => '192.168.1.0/24')
93
+ cidr6 = IPAdmin::CIDR.new(:CIDR => 'fec0::/64')
94
+
95
+ next4 = cidr4.next_subnet()
96
+ next6 = cidr6.next_subnet()
97
+ assert_equal('192.168.2.0/24',next4 )
98
+ assert_equal('fec0:0000:0000:0001:0000:0000:0000:0000/64',next6 )
99
+
100
+ next6 = cidr6.next_subnet(:Short => 1)
101
+ assert_equal('fec0:0:0:1::/64',next6 )
102
+
103
+ next4 = cidr4.next_subnet(:Bitstep => 2)
104
+ next6 = cidr6.next_subnet(:Bitstep => 2)
105
+ assert_equal('192.168.3.0/24',next4 )
106
+ assert_equal('fec0:0000:0000:0002:0000:0000:0000:0000/64',next6 )
107
+
108
+ next4 = cidr4.next_subnet(:Objectify => 1)
109
+ next6 = cidr6.next_subnet(:Objectify => 1)
110
+ assert_equal('192.168.2.0/24',next4.desc )
111
+ assert_equal('fec0:0000:0000:0001:0000:0000:0000:0000/64',next6.desc )
112
+
113
+ end
114
+
115
+ def test_range
116
+ cidr4 = IPAdmin::CIDR.new(:CIDR => '192.168.1.0/24')
117
+ cidr6 = IPAdmin::CIDR.new(:CIDR => 'fec0::/64')
118
+
119
+ range4 = cidr4.range(:Indexes => [25,0], :Bitstep => 5)
120
+ range6 = cidr6.range(:Indexes => [25,0], :Bitstep => 5, :Short => 1)
33
121
 
122
+ assert_equal(6,range4.length)
123
+ assert_equal(6,range6.length)
124
+ assert_equal('192.168.1.0',range4[0])
125
+ assert_equal('192.168.1.25',range4[5])
126
+ assert_equal('fec0::',range6[0])
127
+ assert_equal('fec0::19',range6[5])
128
+ end
129
+
130
+ def test_remainder
131
+ cidr4 = IPAdmin::CIDR.new(:CIDR => '192.168.1.0/24')
132
+ cidr4_2 = IPAdmin::CIDR.new(:CIDR => '192.168.1.64/26')
133
+ remainder = cidr4.remainder(:Exclude => cidr4_2)
134
+
135
+ assert_equal(2,remainder.length)
136
+ assert_equal('192.168.1.0/26',remainder[0])
137
+
138
+ remainder = cidr4.remainder(:Exclude => cidr4_2, :Objectify => 1)
139
+ assert_equal('192.168.1.128/25',remainder[1].desc)
140
+ end
141
+
142
+ def test_resize
143
+ cidr4 = IPAdmin::CIDR.new(:CIDR => '192.168.1.129/24')
144
+ cidr6 = IPAdmin::CIDR.new(:CIDR => 'fec0::1/64')
145
+
146
+ new4 = cidr4.resize(:Subnet => 23)
147
+ new6 = cidr6.resize(:Subnet => 63)
148
+ assert_equal('192.168.0.0/23',new4.desc )
149
+ assert_equal('fec0::/63',new6.desc(:Short => 1) )
150
+
151
+ cidr4.resize!(:Subnet => 25)
152
+ cidr6.resize!(:Subnet => 67)
153
+ assert_equal('192.168.1.0/25',cidr4.desc )
154
+ assert_equal('192.168.1.0',cidr4.ip )
155
+ assert_equal('fec0:0000:0000:0000:0000:0000:0000:0000/67',cidr6.desc )
156
+ end
157
+
158
+ def test_simple_methods
159
+ cidr4 = IPAdmin::CIDR.new(:CIDR => '192.168.1.1/24')
160
+ cidr4_2 = IPAdmin::CIDR.new(:CIDR => '192.168.1.0/26')
161
+ cidr6 = IPAdmin::CIDR.new(:CIDR => 'fec0::1/64')
162
+ cidr6_2 = IPAdmin::CIDR.new(:CIDR => 'fec0::/96')
163
+
34
164
  assert_equal('192.168.1.0/24',cidr4.desc() )
35
165
  assert_equal('fec0:0000:0000:0000:0000:0000:0000:0000/64',cidr6.desc() )
36
166
 
37
- assert_equal('fec0::/64',cidr6.desc_short() )
167
+ assert_equal('fec0::/64',cidr6.desc(:Short => 1) )
38
168
 
39
169
  assert_equal('0.0.0.255',cidr4.hostmask_ext() )
40
170
 
41
171
  assert_equal(24,cidr4.bits() )
42
172
  assert_equal(64,cidr6.bits() )
43
173
 
174
+ assert_equal('192.168.1.1',cidr4.ip() )
175
+ assert_equal('fec0:0000:0000:0000:0000:0000:0000:0001',cidr6.ip() )
176
+ assert_equal('fec0::1',cidr6.ip(:Short => 1) )
177
+
178
+ assert_equal('192.168.1.255',cidr4.last() )
179
+ assert_equal('fec0:0000:0000:0000:ffff:ffff:ffff:ffff',cidr6.last() )
180
+ assert_equal('fec0::ffff:ffff:ffff:ffff',cidr6.last(:Short => 1) )
181
+
44
182
  assert_equal('/24',cidr4.netmask() )
45
183
  assert_equal('/64',cidr6.netmask() )
46
184
 
@@ -48,48 +186,27 @@ class TestCIDR < Test::Unit::TestCase
48
186
 
49
187
  assert_equal('192.168.1.0',cidr4.network() )
50
188
  assert_equal('fec0:0000:0000:0000:0000:0000:0000:0000',cidr6.network() )
51
-
52
- assert_equal('192.168.1.1',cidr4.nth(:Index => 1) )
53
- assert_kind_of(IPAdmin::IPAddr,cidr4.nth(:Index => 1, :Objectify => 1) )
54
- assert_equal('fec0:0000:0000:0000:0000:0000:0000:0001',cidr6.nth(:Index => 1) )
189
+ assert_equal('fec0::',cidr6.network(:Short => 1) )
55
190
 
56
191
  assert_equal(256,cidr4.size() )
57
192
  assert_equal(2**64,cidr6.size() )
58
193
  end
59
194
 
60
- def test_enumerate
61
- cidr4 = IPAdmin::CIDR.new(:CIDR => '192.168.1.0/24')
62
- cidr6 = IPAdmin::CIDR.new(:CIDR => 'fec0::/64')
63
-
64
- assert_equal(['192.168.1.0'],cidr4.enumerate(:Limit => 1) )
65
- assert_equal(['fec0:0000:0000:0000:0000:0000:0000:0000'],cidr6.enumerate(:Limit => 1) )
66
-
67
-
68
- enums4 = cidr4.enumerate(:Limit => 2, :Bitstep => 5)
69
- enums6 = cidr6.enumerate(:Limit => 2, :Bitstep => 5)
70
- assert_equal('192.168.1.5', enums4[1] )
71
- assert_equal('fec0:0000:0000:0000:0000:0000:0000:0005', enums6[1] )
72
-
73
- enums4 = cidr4.enumerate(:Objectify => 1,:Limit => 1)
74
- assert_kind_of(IPAdmin::IPAddr, enums4[0] )
75
-
76
- end
77
-
78
195
  def test_subnet
79
196
  cidr4 = IPAdmin::CIDR.new(:CIDR => '192.168.1.0/24')
80
197
  cidr6 = IPAdmin::CIDR.new(:CIDR => 'fec0::/64')
81
198
 
82
199
  subnet4 = cidr4.subnet(:Subnet => 26, :MinCount => 4)
83
200
  subnet6 = cidr6.subnet(:Subnet => 66, :MinCount => 4)
84
- assert_equal('192.168.1.0/26', subnet4[0].desc)
85
- assert_equal('fec0:0000:0000:0000:0000:0000:0000:0000/66', subnet6[0].desc)
201
+ assert_equal('192.168.1.0/26', subnet4[0])
202
+ assert_equal('fec0:0000:0000:0000:0000:0000:0000:0000/66', subnet6[0])
86
203
 
87
204
  subnet4 = cidr4.subnet(:Subnet => 26, :MinCount => 1)
88
- assert_equal('192.168.1.0/26', subnet4[0].desc)
89
- assert_equal('192.168.1.64/26', subnet4[1].desc)
90
- assert_equal('192.168.1.128/25', subnet4[2].desc)
205
+ assert_equal('192.168.1.0/26', subnet4[0])
206
+ assert_equal('192.168.1.64/26', subnet4[1])
207
+ assert_equal('192.168.1.128/25', subnet4[2])
91
208
 
92
- subnet4 = cidr4.subnet(:Subnet => 28, :MinCount => 3)
209
+ subnet4 = cidr4.subnet(:Subnet => 28, :MinCount => 3, :Objectify => 1)
93
210
  assert_equal('192.168.1.0/28', subnet4[0].desc)
94
211
  assert_equal('192.168.1.16/28', subnet4[1].desc)
95
212
  assert_equal('192.168.1.32/28', subnet4[2].desc)
@@ -97,6 +214,13 @@ class TestCIDR < Test::Unit::TestCase
97
214
  assert_equal('192.168.1.64/26', subnet4[4].desc)
98
215
  assert_equal('192.168.1.128/25', subnet4[5].desc)
99
216
 
217
+ subnet4 = cidr4.subnet(:IPCount => 112)
218
+ assert_equal('192.168.1.0/25', subnet4[0])
219
+
220
+ subnet4 = cidr4.subnet(:IPCount => 31)
221
+ assert_equal('192.168.1.0/27', subnet4[0])
222
+
223
+
100
224
  end
101
225
 
102
226
 
@@ -13,10 +13,10 @@ class TestFunct < Test::Unit::TestCase
13
13
 
14
14
 
15
15
  def test_pack_ipv4_netmask
16
- assert_equal([2**32-1,0], IPAdmin.pack_ipv4_netmask('255.255.255.255') )
17
- assert_equal([2**32-1,0], IPAdmin.pack_ipv4_netmask('32') )
18
- assert_equal([2**32-1,0], IPAdmin.pack_ipv4_netmask('/32') )
19
- assert_equal([2**32-1,0], IPAdmin.pack_ipv4_netmask(32) )
16
+ assert_equal(2**32-1, IPAdmin.pack_ipv4_netmask('255.255.255.255') )
17
+ assert_equal(2**32-1, IPAdmin.pack_ipv4_netmask('32') )
18
+ assert_equal(2**32-1, IPAdmin.pack_ipv4_netmask('/32') )
19
+ assert_equal(2**32-1, IPAdmin.pack_ipv4_netmask(32) )
20
20
  end
21
21
 
22
22
 
@@ -27,9 +27,9 @@ class TestFunct < Test::Unit::TestCase
27
27
 
28
28
 
29
29
  def test_pack_ipv6_netmask
30
- assert_equal([2**128-1,0], IPAdmin.pack_ipv6_netmask('128') )
31
- assert_equal([2**128-1,0], IPAdmin.pack_ipv6_netmask('/128') )
32
- assert_equal([2**128-1,0], IPAdmin.pack_ipv6_netmask(128) )
30
+ assert_equal(2**128-1, IPAdmin.pack_ipv6_netmask('128') )
31
+ assert_equal(2**128-1, IPAdmin.pack_ipv6_netmask('/128') )
32
+ assert_equal(2**128-1, IPAdmin.pack_ipv6_netmask(128) )
33
33
  end
34
34
 
35
35
 
@@ -54,71 +54,71 @@ class TestFunct < Test::Unit::TestCase
54
54
 
55
55
 
56
56
  def test_validate_ipv4_addr
57
- assert_equal(1, IPAdmin.validate_ipv4_addr('192.168.1.0') )
58
- assert_equal(1, IPAdmin.validate_ipv4_addr('255.255.255.255') )
57
+ assert_not_nil(IPAdmin.validate_ipv4_addr('192.168.1.0') )
58
+ assert_not_nil(IPAdmin.validate_ipv4_addr('255.255.255.255') )
59
+ assert_not_nil(IPAdmin.validate_ipv4_addr('224.0.0.1') )
59
60
  assert_raise(RuntimeError){ IPAdmin.validate_ipv4_addr('192.168.1.256') }
60
61
  assert_raise(RuntimeError){ IPAdmin.validate_ipv4_addr('192..168.1.1') }
61
62
  assert_raise(RuntimeError){ IPAdmin.validate_ipv4_addr('0.168.1.1') }
62
- assert_raise(RuntimeError){ IPAdmin.validate_ipv4_addr('192.168.1z.255') }
63
+ assert_raise(RuntimeError){ IPAdmin.validate_ipv4_addr('192.168.1a.255') }
63
64
  assert_raise(RuntimeError){ IPAdmin.validate_ipv4_addr('192.168.1.1.1') }
64
65
  assert_raise(RuntimeError){ IPAdmin.validate_ipv4_addr('ffff::1111:1111') }
66
+ assert_raise(RuntimeError){ IPAdmin.validate_ipv4_addr('ff.ff.ff.ff') }
65
67
  end
66
68
 
67
69
 
68
70
  def test_validate_ipv4_netmask
69
- assert_equal(1, IPAdmin.validate_ipv4_netmask('255.255.255.0') )
70
- assert_equal(1, IPAdmin.validate_ipv4_netmask('128.0.0.0') )
71
- assert_equal(1, IPAdmin.validate_ipv4_netmask('32') )
72
- assert_equal(1, IPAdmin.validate_ipv4_netmask('/32') )
73
- assert_equal(1, IPAdmin.validate_ipv4_netmask(32) )
74
- assert_equal(1, IPAdmin.validate_ipv4_netmask('1') )
71
+ assert_not_nil(IPAdmin.validate_ipv4_netmask('255.255.255.0') )
72
+ assert_not_nil(IPAdmin.validate_ipv4_netmask('128.0.0.0') )
73
+ assert_not_nil(IPAdmin.validate_ipv4_netmask('32') )
74
+ assert_not_nil(IPAdmin.validate_ipv4_netmask('/32') )
75
+ assert_not_nil(IPAdmin.validate_ipv4_netmask(32) )
76
+ assert_not_nil(IPAdmin.validate_ipv4_netmask('1') )
75
77
  assert_raise(RuntimeError){ IPAdmin.validate_ipv4_netmask('192.255.255.0') }
76
78
  assert_raise(RuntimeError){ IPAdmin.validate_ipv4_netmask('255.255.255.194') }
77
79
  assert_raise(RuntimeError){ IPAdmin.validate_ipv4_netmask('256.255.255.0') }
78
80
  assert_raise(RuntimeError){ IPAdmin.validate_ipv4_netmask('0') }
79
81
  assert_raise(RuntimeError){ IPAdmin.validate_ipv4_netmask('33') }
80
- assert_raise(RuntimeError){ IPAdmin.validate_ipv4_netmask('32z') }
82
+ assert_raise(RuntimeError){ IPAdmin.validate_ipv4_netmask('3a') }
83
+ assert_raise(RuntimeError){ IPAdmin.validate_ipv4_netmask('ff.ff.ff.ff') }
81
84
  end
82
85
 
83
86
 
84
87
  def test_validate_ipv6_addr
85
- assert_equal(1, IPAdmin.validate_ipv6_addr('ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff') )
86
- assert_equal(1, IPAdmin.validate_ipv6_addr('ffff::1') )
87
- assert_equal(1, IPAdmin.validate_ipv6_addr('1234:5678:9abc:def0:1234:5678:9abc:def0') )
88
- assert_equal(1, IPAdmin.validate_ipv6_addr('::1') )
89
- assert_equal(1, IPAdmin.validate_ipv6_addr('ffff::') )
90
- assert_equal(1, IPAdmin.validate_ipv6_addr('0001::1') )
88
+ assert_not_nil(IPAdmin.validate_ipv6_addr('ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff') )
89
+ assert_not_nil(IPAdmin.validate_ipv6_addr('ffff::1') )
90
+ assert_not_nil(IPAdmin.validate_ipv6_addr('1234:5678:9abc:def0:1234:5678:9abc:def0') )
91
+ assert_not_nil(IPAdmin.validate_ipv6_addr('::1') )
92
+ assert_not_nil(IPAdmin.validate_ipv6_addr('ffff::') )
93
+ assert_not_nil(IPAdmin.validate_ipv6_addr('0001::1') )
91
94
  assert_raise(RuntimeError){ IPAdmin.validate_ipv6_addr('ffff::1111::1111') }
92
95
  assert_raise(RuntimeError){ IPAdmin.validate_ipv6_addr('abcd:efgh::1') }
93
96
  assert_raise(RuntimeError){ IPAdmin.validate_ipv6_addr('fffff::1') }
94
97
  assert_raise(RuntimeError){ IPAdmin.validate_ipv6_addr(':::1') }
98
+ assert_raise(RuntimeError){ IPAdmin.validate_ipv6_addr('1:0:0:0:0:0:0:0:1') }
95
99
  end
96
100
 
97
101
 
98
102
  def test_validate_ipv6_netmask
99
- assert_equal(1, IPAdmin.validate_ipv6_netmask('1') )
100
- assert_equal(1, IPAdmin.validate_ipv6_netmask('128') )
101
- assert_equal(1, IPAdmin.validate_ipv6_netmask('/128') )
102
- assert_equal(1, IPAdmin.validate_ipv6_netmask(128) )
103
+ assert_not_nil(IPAdmin.validate_ipv6_netmask('1') )
104
+ assert_not_nil(IPAdmin.validate_ipv6_netmask('128') )
105
+ assert_not_nil(IPAdmin.validate_ipv6_netmask('/128') )
106
+ assert_not_nil(IPAdmin.validate_ipv6_netmask(128) )
103
107
  assert_raise(RuntimeError){ IPAdmin.validate_ipv6_netmask('0') }
104
108
  assert_raise(RuntimeError){ IPAdmin.validate_ipv6_netmask('129') }
105
109
  assert_raise(RuntimeError){ IPAdmin.validate_ipv6_netmask('128z') }
110
+ assert_raise(RuntimeError){ IPAdmin.validate_ipv6_netmask('1f') }
106
111
  end
107
112
 
108
113
 
109
114
  def test_compare
110
- ip4_1 = IPAdmin::IPAddr.new(:IPAddr => '192.168.1.1/24')
111
- ip4_2 = IPAdmin::IPAddr.new(:IPAddr => '192.168.1.2/24')
112
115
 
113
116
  cidr4_1 = IPAdmin::CIDR.new(:CIDR => '192.168.1.0/24')
114
117
  cidr4_2 = IPAdmin::CIDR.new(:CIDR => '192.168.1.0/25')
115
118
  cidr4_3 = IPAdmin::CIDR.new(:CIDR => '192.168.2.0/24')
116
119
  cidr4_4 = IPAdmin::CIDR.new(:CIDR => '192.168.2.64/26')
117
120
  cidr4_5 = IPAdmin::CIDR.new(:CIDR => '192.168.1.128/25')
118
-
119
- ip6_1 = IPAdmin::IPAddr.new(:IPAddr => 'fec0::1/64')
120
- ip6_2 = IPAdmin::IPAddr.new(:IPAddr => 'fec0::2/64')
121
-
121
+
122
122
  cidr6_1 = IPAdmin::CIDR.new(:CIDR => 'fec0::0/10')
123
123
  cidr6_2 = IPAdmin::CIDR.new(:CIDR => 'fec0::0/64')
124
124
  cidr6_3 = IPAdmin::CIDR.new(:CIDR => 'fe80::0/10')
@@ -133,10 +133,7 @@ class TestFunct < Test::Unit::TestCase
133
133
  comp7 = IPAdmin.compare(cidr6_1,cidr6_1)
134
134
  comp8 = IPAdmin.compare(cidr6_1,cidr6_3)
135
135
  comp9 = IPAdmin.compare(cidr4_2,cidr4_5)
136
- comp10 = IPAdmin.compare(ip4_1,ip4_2)
137
- comp11 = IPAdmin.compare(ip6_1,ip6_2)
138
- comp12 = IPAdmin.compare(cidr4_1,ip4_2)
139
- comp13 = IPAdmin.compare(cidr6_1,ip6_2)
136
+
140
137
 
141
138
  assert_equal([cidr4_1,cidr4_2],comp1)
142
139
  assert_equal([cidr4_3,cidr4_4],comp2)
@@ -147,37 +144,35 @@ class TestFunct < Test::Unit::TestCase
147
144
  assert_equal(1,comp7)
148
145
  assert_nil(comp8)
149
146
  assert_nil(comp9)
150
- assert_nil(comp10)
151
- assert_nil(comp11)
152
- assert_equal([cidr4_1,ip4_2],comp12)
153
- assert_equal([cidr6_1,ip6_2],comp13)
154
147
  end
155
148
 
156
149
 
157
150
  def test_range
158
- ip4_1 = IPAdmin::IPAddr.new(:IPAddr => '192.168.1.0')
159
- ip4_2 = IPAdmin::IPAddr.new(:IPAddr => '192.168.1.50')
160
- ip6_1 = IPAdmin::IPAddr.new(:IPAddr => 'fec0::0')
161
- ip6_2 = IPAdmin::IPAddr.new(:IPAddr => 'fec0::32')
162
-
163
- assert_equal(['192.168.1.1'], IPAdmin.range(:Boundaries => [ip4_1,ip4_2], :Limit => 1) )
164
- assert_equal(['fec0:0000:0000:0000:0000:0000:0000:0001'], IPAdmin.range(:Boundaries => [ip6_1,ip6_2], :Limit => 1) )
151
+ cidr4_1 = IPAdmin::CIDR.new(:CIDR => '192.168.1.0/24')
152
+ cidr4_2 = IPAdmin::CIDR.new(:CIDR => '192.168.1.50/24')
153
+ cidr4_3 = IPAdmin::CIDR.new(:CIDR => '192.168.1.2/24')
154
+ cidr6_1 = IPAdmin::CIDR.new(:CIDR => 'fec0::/64')
155
+ cidr6_2 = IPAdmin::CIDR.new(:CIDR => 'fec0::32/64')
165
156
 
166
- list = IPAdmin.range(:Boundaries => [ip4_1,ip4_2], :Bitstep => 2)
157
+ assert_equal(['192.168.1.1'], IPAdmin.range(:Boundaries => [cidr4_1,cidr4_2], :Limit => 1) )
158
+ assert_equal(['fec0:0000:0000:0000:0000:0000:0000:0001'], IPAdmin.range(:Boundaries => [cidr6_1,cidr6_2], :Limit => 1) )
167
159
 
160
+ list = IPAdmin.range(:Boundaries => [cidr4_1,cidr4_2], :Bitstep => 2)
168
161
  assert_equal(25, list.length)
169
162
  assert_equal('192.168.1.49', list[24])
170
163
 
164
+ list = IPAdmin.range(:Boundaries => [cidr4_1,cidr4_3], :Objectify => 2)
165
+ assert_kind_of(IPAdmin::CIDR, list[0])
166
+ assert_equal('192.168.1.1/32', (list[0]).desc)
167
+
171
168
  assert_raise(ArgumentError){ IPAdmin.range(:Limit => 1) }
172
169
  assert_raise(RuntimeError){ IPAdmin.range(:Boundaries => [1,2]) }
173
170
  end
174
171
 
175
172
  def test_arpa
176
- ip4 = IPAdmin::IPAddr.new(:IPAddr => '192.168.1.0/24')
177
173
  cidr4 = IPAdmin::CIDR.new(:CIDR => '192.168.1.0/24')
178
174
  cidr6 = IPAdmin::CIDR.new(:CIDR => 'fe80::0/64')
179
175
 
180
- assert_equal('0.1.168.192.in-addr.arpa.', IPAdmin.arpa(ip4) )
181
176
  assert_equal('1.168.192.in-addr.arpa.', IPAdmin.arpa(cidr4) )
182
177
  assert_equal('0.0.0.0.0.0.0.0.0.0.0.0.0.8.e.f.ip6.arpa.', IPAdmin.arpa(cidr6) )
183
178
 
@@ -187,10 +182,79 @@ class TestFunct < Test::Unit::TestCase
187
182
 
188
183
  def test_shorten
189
184
  assert_equal('fec0::', IPAdmin.shorten('fec0:0000:0000:0000:0000:0000:0000:0000') )
190
- assert_equal('fec0::2:0:0:1', IPAdmin.shorten('fec0:0000:0000:0000:0002:0000:0000:0001') )
185
+ assert_equal('fec0::2:0:0:1', IPAdmin.shorten('fec0:0000:0000:0000:0002:0000:0000:0001') )
186
+ assert_equal('fec0::2:0:0:1', IPAdmin.shorten('fec0:00:0000:0:02:0000:0:1') )
187
+ assert_raise(RuntimeError){ IPAdmin.shorten('fec0::') }
191
188
  end
192
-
193
189
 
190
+ def test_unshorten
191
+ assert_equal('fec0:0000:0000:0000:0000:0000:0000:0000', IPAdmin.unshorten('fec0::') )
192
+ assert_equal('fec0:0000:0000:0000:0002:0000:0000:0001', IPAdmin.unshorten('fec0::2:0:0:1') )
193
+ assert_equal('fec0:0000:0000:0000:0002:0000:0000:0001', IPAdmin.unshorten('fec0:0:0:0:2:0:0:1') )
194
+ end
195
+
196
+ def test_merge
197
+ cidr4 = [IPAdmin::CIDR.new(:CIDR => '192.168.1.0/24'),
198
+ IPAdmin::CIDR.new(:CIDR => '192.168.1.0/26'),
199
+ IPAdmin::CIDR.new(:CIDR => '192.168.1.4/30'),
200
+ IPAdmin::CIDR.new(:CIDR => '192.168.1.0/30'),
201
+ IPAdmin::CIDR.new(:CIDR => '192.168.1.64/27'),
202
+ IPAdmin::CIDR.new(:CIDR => '192.168.1.96/27'),
203
+ IPAdmin::CIDR.new(:CIDR => '192.168.1.128/25'),
204
+ IPAdmin::CIDR.new(:CIDR => '10.1.0.0/31'),
205
+ IPAdmin::CIDR.new(:CIDR => '10.1.0.0/24'),
206
+ IPAdmin::CIDR.new(:CIDR => '10.1.0.2/31'),
207
+ IPAdmin::CIDR.new(:CIDR => '10.1.0.4/30'),
208
+ IPAdmin::CIDR.new(:CIDR => '10.1.0.16/28'),
209
+ IPAdmin::CIDR.new(:CIDR => '10.1.0.32/28'),
210
+ IPAdmin::CIDR.new(:CIDR => '10.1.0.48/28'),
211
+ IPAdmin::CIDR.new(:CIDR => '10.1.0.0/27'),
212
+ IPAdmin::CIDR.new(:CIDR => '10.1.0.64/26'),
213
+ IPAdmin::CIDR.new(:CIDR => '10.1.0.128/25'),
214
+ IPAdmin::CIDR.new(:CIDR => '10.1.0.0/27'),
215
+ IPAdmin::CIDR.new(:CIDR => '10.1.0.0/24')]
216
+
217
+ cidr4_2 = [IPAdmin::CIDR.new(:CIDR => '10.0.0.0/9'),
218
+ IPAdmin::CIDR.new(:CIDR => '10.1.0.0/9'),
219
+ IPAdmin::CIDR.new(:CIDR => '10.1.0.0/24'),
220
+ IPAdmin::CIDR.new(:CIDR => '10.1.0.64/26'),
221
+ IPAdmin::CIDR.new(:CIDR => '10.1.0.128/26'),
222
+ IPAdmin::CIDR.new(:CIDR => '128.0.0.0/2'),
223
+ IPAdmin::CIDR.new(:CIDR => '129.0.0.0/2'),
224
+ IPAdmin::CIDR.new(:CIDR => '1.1.1.0'),
225
+ IPAdmin::CIDR.new(:CIDR => '1.1.1.1'),
226
+ IPAdmin::CIDR.new(:CIDR => '1.1.1.3'),
227
+ IPAdmin::CIDR.new(:CIDR => '1.1.1.4'),
228
+ IPAdmin::CIDR.new(:CIDR => '1.1.1.5'),
229
+ IPAdmin::CIDR.new(:CIDR => '1.1.1.6'),
230
+ IPAdmin::CIDR.new(:CIDR => '1.1.1.7'),
231
+ IPAdmin::CIDR.new(:CIDR => '192.168.1.0/27'),
232
+ IPAdmin::CIDR.new(:CIDR => '192.168.1.32/27'),
233
+ IPAdmin::CIDR.new(:CIDR => '192.168.1.96/27'),
234
+ IPAdmin::CIDR.new(:CIDR => '192.168.1.128/26'),
235
+ IPAdmin::CIDR.new(:CIDR => '192.168.1.192/26')]
236
+
237
+ cidr6 = [IPAdmin::CIDR.new(:CIDR => 'fec0::/16'),
238
+ IPAdmin::CIDR.new(:CIDR => 'fec0::/17'),
239
+ IPAdmin::CIDR.new(:CIDR => 'fec0:8000::/18'),
240
+ IPAdmin::CIDR.new(:CIDR => 'fec0:c000::/18'),
241
+ IPAdmin::CIDR.new(:CIDR => 'fec0::/64'),
242
+ IPAdmin::CIDR.new(:CIDR => 'fec0::/66'),
243
+ IPAdmin::CIDR.new(:CIDR => 'fec0::8000:0:0:0/66'),
244
+ IPAdmin::CIDR.new(:CIDR => 'fec0::c000:0:0:0/66'),
245
+ IPAdmin::CIDR.new(:CIDR => 'fec0::/127'),
246
+ IPAdmin::CIDR.new(:CIDR => 'fec0::2/127')]
247
+
248
+ merge4 = IPAdmin.merge(:List => cidr4)
249
+ merge4_2 = IPAdmin.merge(:List => cidr4_2, :Objectify => 1)
250
+ merge6 = IPAdmin.merge(:List => cidr6)
251
+
252
+ assert_equal(5, merge4.length)
253
+ assert_equal(11, merge4_2.length)
254
+ assert_equal(5, merge6.length)
255
+
256
+ assert_equal('1.1.1.0/31', merge4_2[0].desc)
257
+ end
194
258
 
195
259
 
196
260
  end