ipadmin 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,177 @@
1
+ #!/usr/bin/ruby
2
+
3
+ require '../lib/ip_admin.rb'
4
+ require 'test/unit'
5
+
6
+
7
+
8
+ class TestCIDR < Test::Unit::TestCase
9
+
10
+ def test_new
11
+ assert_not_nil(IPAdmin::CIDRTable.new(4) )
12
+ assert_not_nil(IPAdmin::CIDRTable.new(6) )
13
+
14
+ end
15
+
16
+ def test_add_cidr
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')
21
+
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
+ table4 = IPAdmin::CIDRTable.new(4)
28
+ table6 = IPAdmin::CIDRTable.new(6)
29
+
30
+ assert_raise(RuntimeError){table4.add_cidr(cidr6_1)}
31
+ assert_raise(RuntimeError){table6.add_cidr(cidr4_1)}
32
+
33
+ assert_nothing_raised(RuntimeError){table4.add_cidr(cidr4_1)}
34
+ assert_nothing_raised(RuntimeError){table4.add_cidr(cidr4_2)}
35
+ assert_nothing_raised(RuntimeError){table4.add_cidr(cidr4_3)}
36
+ assert_nothing_raised(RuntimeError){table4.add_cidr(cidr4_4)}
37
+ assert_nothing_raised(RuntimeError){table6.add_cidr(cidr6_1)}
38
+ assert_nothing_raised(RuntimeError){table6.add_cidr(cidr6_2)}
39
+ assert_nothing_raised(RuntimeError){table6.add_cidr(cidr6_3)}
40
+ assert_nothing_raised(RuntimeError){table6.add_cidr(cidr6_4)}
41
+
42
+ end
43
+
44
+ def test_find_ip
45
+ ip4_1 = IPAdmin::IPAddr.new(:IPAddr => '192.168.1.1')
46
+ ip4_2 = IPAdmin::IPAddr.new(:IPAddr => '10.1.0.1')
47
+ ip4_3 = IPAdmin::IPAddr.new(:IPAddr => '10.2.0.1')
48
+ cidr4_1 = IPAdmin::CIDR.new(:CIDR => '192.168.1.0/24')
49
+ cidr4_2 = IPAdmin::CIDR.new(:CIDR => '10.1.0.0/24')
50
+ cidr4_3 = IPAdmin::CIDR.new(:CIDR => '192.168.1.0/26')
51
+ cidr4_4 =IPAdmin::CIDR.new(:CIDR => '192.168.1.0/30')
52
+
53
+ ip6_1 = IPAdmin::IPAddr.new(:IPAddr => 'fec0::1')
54
+ ip6_2 = IPAdmin::IPAddr.new(:IPAddr => 'fe80::1')
55
+ cidr6_1 = IPAdmin::CIDR.new(:CIDR => 'fec0::/10')
56
+ cidr6_2 = IPAdmin::CIDR.new(:CIDR => 'fe80::/10')
57
+ cidr6_3 = IPAdmin::CIDR.new(:CIDR => 'fec0::/64')
58
+ cidr6_4 =IPAdmin::CIDR.new(:CIDR => 'fec0::/126')
59
+
60
+ table4 = IPAdmin::CIDRTable.new(4)
61
+ table6 = IPAdmin::CIDRTable.new(6)
62
+
63
+ table4.add_cidr(cidr4_1)
64
+ table4.add_cidr(cidr4_2)
65
+ table4.add_cidr(cidr4_3)
66
+ table4.add_cidr(cidr4_4)
67
+ table6.add_cidr(cidr6_1)
68
+ table6.add_cidr(cidr6_2)
69
+ table6.add_cidr(cidr6_3)
70
+ table6.add_cidr(cidr6_4)
71
+
72
+ assert_equal('192.168.1.0/30', table4.find_ip(ip4_1).desc)
73
+ assert_equal('10.1.0.0/24', table4.find_ip(ip4_2).desc)
74
+ assert_equal(nil, table4.find_ip(ip4_3) )
75
+ assert_equal('fec0:0000:0000:0000:0000:0000:0000:0000/126', table6.find_ip(ip6_1).desc)
76
+ assert_equal('fe80:0000:0000:0000:0000:0000:0000:0000/10', table6.find_ip(ip6_2).desc)
77
+
78
+ end
79
+
80
+ def test_dump
81
+ ip4_1 = IPAdmin::IPAddr.new(:IPAddr => '192.168.1.1')
82
+ ip4_2 = IPAdmin::IPAddr.new(:IPAddr => '10.1.0.1')
83
+ ip4_3 = IPAdmin::IPAddr.new(:IPAddr => '10.2.0.1')
84
+ cidr4_1 = IPAdmin::CIDR.new(:CIDR => '192.168.1.0/24')
85
+ cidr4_2 = IPAdmin::CIDR.new(:CIDR => '10.1.0.0/24')
86
+ cidr4_3 = IPAdmin::CIDR.new(:CIDR => '192.168.1.0/26')
87
+ cidr4_4 =IPAdmin::CIDR.new(:CIDR => '192.168.1.0/30')
88
+
89
+ ip6_1 = IPAdmin::IPAddr.new(:IPAddr => 'fec0::1')
90
+ ip6_2 = IPAdmin::IPAddr.new(:IPAddr => 'fe80::1')
91
+ cidr6_1 = IPAdmin::CIDR.new(:CIDR => 'fec0::/10')
92
+ cidr6_2 = IPAdmin::CIDR.new(:CIDR => 'fe80::/10')
93
+ cidr6_3 = IPAdmin::CIDR.new(:CIDR => 'fec0::/64')
94
+ cidr6_4 =IPAdmin::CIDR.new(:CIDR => 'fec0::/126')
95
+
96
+ table4 = IPAdmin::CIDRTable.new(4)
97
+ table6 = IPAdmin::CIDRTable.new(6)
98
+
99
+ table4.add_cidr(cidr4_1)
100
+ table4.add_cidr(cidr4_2)
101
+ table4.add_cidr(cidr4_3)
102
+ table4.add_cidr(cidr4_4)
103
+ table6.add_cidr(cidr6_1)
104
+ table6.add_cidr(cidr6_2)
105
+ table6.add_cidr(cidr6_3)
106
+ table6.add_cidr(cidr6_4)
107
+
108
+ dump4 = table4.dump()
109
+ dump6 = table6.dump()
110
+ assert_equal('10.1.0.0/24', dump4[0].desc)
111
+ assert_equal('192.168.1.0/24', dump4[1].desc)
112
+ assert_equal('192.168.1.0/30', dump4[3].desc)
113
+ assert_equal('fe80:0000:0000:0000:0000:0000:0000:0000/10', dump6[0].desc)
114
+ assert_equal('fec0:0000:0000:0000:0000:0000:0000:0000/10', dump6[1].desc)
115
+ assert_equal('fec0:0000:0000:0000:0000:0000:0000:0000/126', dump6[3].desc)
116
+
117
+ end
118
+
119
+ def test_find_space
120
+ cidr4_1 = IPAdmin::CIDR.new(:CIDR => '192.168.1.0/24')
121
+ cidr4_2 = IPAdmin::CIDR.new(:CIDR => '10.1.0.0/24')
122
+ cidr4_3 = IPAdmin::CIDR.new(:CIDR => '192.168.1.0/26')
123
+ cidr4_4 =IPAdmin::CIDR.new(:CIDR => '192.168.1.0/30')
124
+ cidr4_5 =IPAdmin::CIDR.new(:CIDR => '192.168.1.64/26')
125
+ cidr4_6 =IPAdmin::CIDR.new(:CIDR => '192.168.1.128/26')
126
+ cidr4_7 =IPAdmin::CIDR.new(:CIDR => '192.168.1.224/27')
127
+ cidr4_8 = IPAdmin::CIDR.new(:CIDR => '10.1.0.0/25')
128
+
129
+
130
+ cidr6_1 = IPAdmin::CIDR.new(:CIDR => 'fec0::/10')
131
+ cidr6_2 = IPAdmin::CIDR.new(:CIDR => 'fe80::/10')
132
+ cidr6_3 = IPAdmin::CIDR.new(:CIDR => 'fec0::/64')
133
+ cidr6_4 =IPAdmin::CIDR.new(:CIDR => 'fec0::/126')
134
+ cidr6_5 = IPAdmin::CIDR.new(:CIDR => 'fec0::/96')
135
+ cidr6_6 = IPAdmin::CIDR.new(:CIDR => 'fec0:2000::/64')
136
+ cidr6_7 = IPAdmin::CIDR.new(:CIDR => 'fec0:3000::/96')
137
+
138
+
139
+ table4 = IPAdmin::CIDRTable.new(4)
140
+ table6 = IPAdmin::CIDRTable.new(6)
141
+
142
+ table4.add_cidr(cidr4_1)
143
+ table4.add_cidr(cidr4_2)
144
+ table4.add_cidr(cidr4_3)
145
+ table4.add_cidr(cidr4_4)
146
+ table4.add_cidr(cidr4_5)
147
+ table4.add_cidr(cidr4_6)
148
+ table4.add_cidr(cidr4_7)
149
+ table4.add_cidr(cidr4_8)
150
+
151
+ table6.add_cidr(cidr6_1)
152
+ table6.add_cidr(cidr6_2)
153
+ table6.add_cidr(cidr6_3)
154
+ table6.add_cidr(cidr6_4)
155
+ table6.add_cidr(cidr6_5)
156
+ table6.add_cidr(cidr6_6)
157
+ table6.add_cidr(cidr6_7)
158
+
159
+
160
+ list4 = table4.find_space(:Size => 27, :Limit => 2)
161
+ assert_equal('10.1.0.0/25', list4[0].desc)
162
+ assert_equal('192.168.1.64/26', list4[1].desc)
163
+
164
+ list6 = table6.find_space(:Size => 98)
165
+ assert_equal('fe80:0000:0000:0000:0000:0000:0000:0000/10', list6[0].desc)
166
+ assert_equal('fec0:2000:0000:0000:0000:0000:0000:0000/64', list6[1].desc)
167
+ assert_equal('fec0:3000:0000:0000:0000:0000:0000:0000/96', list6[2].desc)
168
+
169
+ end
170
+
171
+
172
+
173
+ end
174
+
175
+
176
+
177
+
@@ -0,0 +1,96 @@
1
+ #!/usr/bin/ruby
2
+
3
+ require '../lib/ip_admin.rb'
4
+ require 'test/unit'
5
+
6
+
7
+
8
+ class TestCIDR < Test::Unit::TestCase
9
+
10
+ def test_new
11
+ assert_not_nil(IPAdmin::CIDR.new(:CIDR => '192.168.1.0/24') )
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 => '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') }
17
+ end
18
+
19
+ def test_simple_methods
20
+ ip4 = IPAdmin::IPAddr.new(:IPAddr => '192.168.1.1')
21
+ ip6 = IPAdmin::IPAddr.new(:IPAddr => 'fec0::1')
22
+ cidr4 = IPAdmin::CIDR.new(:CIDR => '192.168.1.0/24')
23
+ cidr6 = IPAdmin::CIDR.new(:CIDR => 'fec0::/64')
24
+
25
+ assert_equal(1,cidr4.contains(ip4) )
26
+ assert_equal(1,cidr6.contains(ip6) )
27
+
28
+ assert_equal('192.168.1.0/24',cidr4.desc() )
29
+ assert_equal('fec0:0000:0000:0000:0000:0000:0000:0000/64',cidr6.desc() )
30
+
31
+ assert_equal('0.0.0.255',cidr4.hostmask_ext() )
32
+
33
+ assert_equal(24,cidr4.netmask() )
34
+ assert_equal(64,cidr6.netmask() )
35
+
36
+ assert_equal('255.255.255.0',cidr4.netmask_ext() )
37
+
38
+ assert_equal('192.168.1.0',cidr4.network() )
39
+ assert_equal('fec0:0000:0000:0000:0000:0000:0000:0000',cidr6.network() )
40
+
41
+ assert_equal('192.168.1.1',cidr4.nth(:Index => 1) )
42
+ assert_kind_of(IPAdmin::IPAddr,cidr4.nth(:Index => 1, :Objectify => 1) )
43
+ assert_equal('fec0:0000:0000:0000:0000:0000:0000:0001',cidr6.nth(:Index => 1) )
44
+
45
+ assert_equal(256,cidr4.size() )
46
+ assert_equal(2**64,cidr6.size() )
47
+ end
48
+
49
+ def test_enumerate
50
+ cidr4 = IPAdmin::CIDR.new(:CIDR => '192.168.1.0/24')
51
+ cidr6 = IPAdmin::CIDR.new(:CIDR => 'fec0::/64')
52
+
53
+ assert_equal(['192.168.1.0'],cidr4.enumerate(:Limit => 1) )
54
+ assert_equal(['fec0:0000:0000:0000:0000:0000:0000:0000'],cidr6.enumerate(:Limit => 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::IPAddr, enums4[0] )
64
+
65
+ end
66
+
67
+ def test_subnet
68
+ cidr4 = IPAdmin::CIDR.new(:CIDR => '192.168.1.0/24')
69
+ cidr6 = IPAdmin::CIDR.new(:CIDR => 'fec0::/64')
70
+
71
+ subnet4 = cidr4.subnet(:Subnet => 26, :MinCount => 4)
72
+ subnet6 = cidr6.subnet(:Subnet => 66, :MinCount => 4)
73
+ assert_equal('192.168.1.0/26', subnet4[0].desc)
74
+ assert_equal('fec0:0000:0000:0000:0000:0000:0000:0000/66', subnet6[0].desc)
75
+
76
+ subnet4 = cidr4.subnet(:Subnet => 26, :MinCount => 1)
77
+ assert_equal('192.168.1.0/26', subnet4[0].desc)
78
+ assert_equal('192.168.1.64/26', subnet4[1].desc)
79
+ assert_equal('192.168.1.128/25', subnet4[2].desc)
80
+
81
+ subnet4 = cidr4.subnet(:Subnet => 28, :MinCount => 3)
82
+ assert_equal('192.168.1.0/28', subnet4[0].desc)
83
+ assert_equal('192.168.1.16/28', subnet4[1].desc)
84
+ assert_equal('192.168.1.32/28', subnet4[2].desc)
85
+ assert_equal('192.168.1.48/28', subnet4[3].desc)
86
+ assert_equal('192.168.1.64/26', subnet4[4].desc)
87
+ assert_equal('192.168.1.128/25', subnet4[5].desc)
88
+
89
+ end
90
+
91
+
92
+ end
93
+
94
+
95
+
96
+
@@ -0,0 +1,154 @@
1
+ #!/usr/bin/ruby
2
+
3
+ require '../lib/ip_admin.rb'
4
+ require 'test/unit'
5
+
6
+
7
+
8
+ class TestIPAdmin < Test::Unit::TestCase
9
+
10
+ def test_pack_ipv4_addr
11
+ assert_equal(2**32-1, IPAdmin.pack_ipv4_addr('255.255.255.255') )
12
+ end
13
+
14
+
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
+ end
19
+
20
+
21
+ def test_pack_ipv6_addr
22
+ assert_equal(2**128-1, IPAdmin.pack_ipv6_addr('ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff') )
23
+ assert_equal(1, IPAdmin.pack_ipv6_addr('::1') )
24
+ end
25
+
26
+
27
+ def test_pack_ipv6_netmask
28
+ assert_equal([2**128-1,0], IPAdmin.pack_ipv6_netmask('128') )
29
+ end
30
+
31
+
32
+ def test_unpack_ipv4_addr
33
+ assert_equal('255.255.255.255', IPAdmin.unpack_ipv4_addr(2**32-1) )
34
+ end
35
+
36
+
37
+ def test_unpack_ipv4_netmask
38
+ assert_equal(32, IPAdmin.unpack_ipv4_netmask(2**32-1) )
39
+ end
40
+
41
+
42
+ def test_unpack_ipv6_addr
43
+ assert_equal('ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff', IPAdmin.unpack_ipv6_addr(2**128-1) )
44
+ end
45
+
46
+
47
+ def test_unpack_ipv6_netmask
48
+ assert_equal(128, IPAdmin.unpack_ipv6_netmask(2**128-1) )
49
+ end
50
+
51
+
52
+ def test_validate_ipv4_addr
53
+ assert_equal(1, IPAdmin.validate_ipv4_addr('192.168.1.0') )
54
+ assert_equal(1, IPAdmin.validate_ipv4_addr('255.255.255.255') )
55
+ assert_raise(RuntimeError){ IPAdmin.validate_ipv4_addr('192.168.1.256') }
56
+ assert_raise(RuntimeError){ IPAdmin.validate_ipv4_addr('192..168.1.1') }
57
+ assert_raise(RuntimeError){ IPAdmin.validate_ipv4_addr('0.168.1.1') }
58
+ assert_raise(RuntimeError){ IPAdmin.validate_ipv4_addr('192.168.1z.255') }
59
+ assert_raise(RuntimeError){ IPAdmin.validate_ipv4_addr('192.168.1.1.1') }
60
+ assert_raise(RuntimeError){ IPAdmin.validate_ipv4_addr('ffff::1111:1111') }
61
+ end
62
+
63
+
64
+ def test_validate_ipv4_netmask
65
+ assert_equal(1, IPAdmin.validate_ipv4_netmask('255.255.255.0') )
66
+ assert_equal(1, IPAdmin.validate_ipv4_netmask('128.0.0.0') )
67
+ assert_equal(1, IPAdmin.validate_ipv4_netmask('32') )
68
+ assert_equal(1, IPAdmin.validate_ipv4_netmask(32) )
69
+ assert_equal(1, IPAdmin.validate_ipv4_netmask('1') )
70
+ assert_raise(RuntimeError){ IPAdmin.validate_ipv4_netmask('192.255.255.0') }
71
+ assert_raise(RuntimeError){ IPAdmin.validate_ipv4_netmask('255.255.255.194') }
72
+ assert_raise(RuntimeError){ IPAdmin.validate_ipv4_netmask('256.255.255.0') }
73
+ assert_raise(RuntimeError){ IPAdmin.validate_ipv4_netmask('0') }
74
+ assert_raise(RuntimeError){ IPAdmin.validate_ipv4_netmask('33') }
75
+ assert_raise(RuntimeError){ IPAdmin.validate_ipv4_netmask('32z') }
76
+ end
77
+
78
+
79
+ def test_validate_ipv6_addr
80
+ assert_equal(1, IPAdmin.validate_ipv6_addr('ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff') )
81
+ assert_equal(1, IPAdmin.validate_ipv6_addr('ffff::1') )
82
+ assert_equal(1, IPAdmin.validate_ipv6_addr('1234:5678:9abc:def0:1234:5678:9abc:def0') )
83
+ assert_equal(1, IPAdmin.validate_ipv6_addr('::1') )
84
+ assert_equal(1, IPAdmin.validate_ipv6_addr('ffff::') )
85
+ assert_equal(1, IPAdmin.validate_ipv6_addr('0001::1') )
86
+ assert_raise(RuntimeError){ IPAdmin.validate_ipv6_addr('ffff::1111::1111') }
87
+ assert_raise(RuntimeError){ IPAdmin.validate_ipv6_addr('abcd:efgh::1') }
88
+ assert_raise(RuntimeError){ IPAdmin.validate_ipv6_addr('fffff::1') }
89
+ assert_raise(RuntimeError){ IPAdmin.validate_ipv6_addr(':::1') }
90
+ end
91
+
92
+
93
+ def test_validate_ipv6_netmask
94
+ assert_equal(1, IPAdmin.validate_ipv6_netmask('1') )
95
+ assert_equal(1, IPAdmin.validate_ipv6_netmask('128') )
96
+ assert_equal(1, IPAdmin.validate_ipv6_netmask(128) )
97
+ assert_raise(RuntimeError){ IPAdmin.validate_ipv6_netmask('0') }
98
+ assert_raise(RuntimeError){ IPAdmin.validate_ipv6_netmask('129') }
99
+ assert_raise(RuntimeError){ IPAdmin.validate_ipv6_netmask('128z') }
100
+ end
101
+
102
+
103
+ def test_compare_cidr
104
+ cidr4_1 = IPAdmin::CIDR.new(:CIDR => '192.168.1.0/24')
105
+ cidr4_2 = IPAdmin::CIDR.new(:CIDR => '192.168.1.0/25')
106
+ cidr4_3 = IPAdmin::CIDR.new(:CIDR => '192.168.2.0/24')
107
+ cidr4_4 = IPAdmin::CIDR.new(:CIDR => '192.168.2.64/26')
108
+
109
+ cidr6_1 = IPAdmin::CIDR.new(:CIDR => 'fec0::0/10')
110
+ cidr6_2 = IPAdmin::CIDR.new(:CIDR => 'fec0::0/64')
111
+ cidr6_3 = IPAdmin::CIDR.new(:CIDR => 'fe80::0/10')
112
+ cidr6_4 = IPAdmin::CIDR.new(:CIDR => 'fe80::0/11')
113
+
114
+ comp1 = IPAdmin.compare_cidr(cidr4_1,cidr4_2)
115
+ comp2 = IPAdmin.compare_cidr(cidr4_4,cidr4_3)
116
+ comp3 = IPAdmin.compare_cidr(cidr4_1,cidr4_1)
117
+ comp4 = IPAdmin.compare_cidr(cidr4_1,cidr4_3)
118
+
119
+ comp5 = IPAdmin.compare_cidr(cidr6_1,cidr6_2)
120
+ comp6 = IPAdmin.compare_cidr(cidr6_4,cidr6_3)
121
+ comp7 = IPAdmin.compare_cidr(cidr6_1,cidr6_1)
122
+ comp8 = IPAdmin.compare_cidr(cidr6_1,cidr6_3)
123
+
124
+ assert_equal([cidr4_1,cidr4_2],comp1)
125
+ assert_equal([cidr4_3,cidr4_4],comp2)
126
+ assert_equal(1,comp3)
127
+ assert_nil(comp4)
128
+ assert_equal([cidr6_1,cidr6_2],comp5)
129
+ assert_equal([cidr6_3,cidr6_4],comp6)
130
+ assert_equal(1,comp7)
131
+ assert_nil(comp8)
132
+ end
133
+
134
+
135
+ def test_merge_cidr
136
+ cidr4_1 = IPAdmin::CIDR.new(:CIDR => '192.168.1.0/24')
137
+ cidr4_2 = IPAdmin::CIDR.new(:CIDR => '192.168.0.0/24')
138
+ cidr4_3 = IPAdmin::CIDR.new(:CIDR => '192.168.2.0/24')
139
+
140
+ cidr6_1 = IPAdmin::CIDR.new(:CIDR => 'fec0::0/128')
141
+ cidr6_2 = IPAdmin::CIDR.new(:CIDR => 'fec0::1/128')
142
+ cidr6_3 = IPAdmin::CIDR.new(:CIDR => 'fe80::0/10')
143
+
144
+ assert_equal('192.168.0.0/23', IPAdmin.merge_cidr([cidr4_1,cidr4_2]).desc)
145
+ assert_equal('fec0:0000:0000:0000:0000:0000:0000:0000/127', IPAdmin.merge_cidr([cidr6_1,cidr6_2]).desc)
146
+ assert_raise(RuntimeError){ IPAdmin.merge_cidr([cidr4_1,cidr4_3]) }
147
+ assert_raise(RuntimeError){ IPAdmin.merge_cidr([cidr6_1,cidr6_3]) }
148
+ end
149
+
150
+ end
151
+
152
+
153
+
154
+
@@ -0,0 +1,53 @@
1
+ #!/usr/bin/ruby
2
+
3
+ require '../lib/ip_admin.rb'
4
+ require 'test/unit'
5
+
6
+
7
+
8
+ class TestCIDR < Test::Unit::TestCase
9
+
10
+ def test_new
11
+ assert_not_nil(IPAdmin::IPAddr.new(:IPAddr => '192.168.1.0/24') )
12
+ assert_not_nil(IPAdmin::IPAddr.new(:IPAddr => '192.168.1.0', :Netmask => '255.255.255.0') )
13
+ assert_not_nil(IPAdmin::IPAddr.new(:IPAddr => 'fec0::/64') )
14
+ assert_raise(RuntimeError){ IPAdmin::IPAddr.new(:IPAddr => '192.168.1.256/24') }
15
+ assert_raise(RuntimeError){ IPAdmin::IPAddr.new(:IPAddr => '192.168.1.1/33') }
16
+ assert_raise(RuntimeError){ IPAdmin::IPAddr.new(:IPAddr => 'fec0::1/129') }
17
+ end
18
+
19
+ def test_simple_methods
20
+ ip4 = IPAdmin::IPAddr.new(:IPAddr => '192.168.1.1/24')
21
+ ip6 = IPAdmin::IPAddr.new(:IPAddr => 'fec0::1/64')
22
+
23
+ assert_equal('192.168.1.0',ip4.base() )
24
+ assert_equal('fec0:0000:0000:0000:0000:0000:0000:0000',ip6.base() )
25
+
26
+ assert_equal('192.168.1.255',ip4.broadcast() )
27
+ assert_raise(RuntimeError){ip6.broadcast()}
28
+
29
+ assert_equal('192.168.1.1/24',ip4.desc() )
30
+ assert_equal('fec0:0000:0000:0000:0000:0000:0000:0001/64',ip6.desc() )
31
+
32
+ assert_equal('0.0.0.255',ip4.hostmask_ext() )
33
+ assert_raise(RuntimeError){ip6.hostmask_ext()}
34
+
35
+ assert_equal('192.168.1.1',ip4.ip() )
36
+ assert_equal('fec0:0000:0000:0000:0000:0000:0000:0001',ip6.ip() )
37
+
38
+ assert_equal(24,ip4.netmask() )
39
+ assert_equal(64,ip6.netmask() )
40
+
41
+ assert_equal('255.255.255.0',ip4.netmask_ext() )
42
+
43
+ end
44
+
45
+
46
+
47
+
48
+
49
+ end
50
+
51
+
52
+
53
+