@@ -21,11 +21,13 @@ def test_s_new
21
21
assert_equal ( "::" , a . to_s )
22
22
assert_equal ( "0000:0000:0000:0000:0000:0000:0000:0000" , a . to_string )
23
23
assert_equal ( Socket ::AF_INET6 , a . family )
24
+ assert_equal ( 128 , a . prefixlen )
24
25
25
26
a = IPAddr . new ( "0123:4567:89ab:cdef:0ABC:DEF0:1234:5678" )
26
27
assert_equal ( "123:4567:89ab:cdef:abc:def0:1234:5678" , a . to_s )
27
28
assert_equal ( "0123:4567:89ab:cdef:0abc:def0:1234:5678" , a . to_string )
28
29
assert_equal ( Socket ::AF_INET6 , a . family )
30
+ assert_equal ( 128 , a . prefixlen )
29
31
30
32
a = IPAddr . new ( "3ffe:505:2::/48" )
31
33
assert_equal ( "3ffe:505:2::" , a . to_s )
@@ -34,34 +36,47 @@ def test_s_new
34
36
assert_equal ( false , a . ipv4? )
35
37
assert_equal ( true , a . ipv6? )
36
38
assert_equal ( "#<IPAddr: IPv6:3ffe:0505:0002:0000:0000:0000:0000:0000/ffff:ffff:ffff:0000:0000:0000:0000:0000>" , a . inspect )
39
+ assert_equal ( 48 , a . prefixlen )
37
40
38
41
a = IPAddr . new ( "3ffe:505:2::/ffff:ffff:ffff::" )
39
42
assert_equal ( "3ffe:505:2::" , a . to_s )
40
43
assert_equal ( "3ffe:0505:0002:0000:0000:0000:0000:0000" , a . to_string )
41
44
assert_equal ( Socket ::AF_INET6 , a . family )
45
+ assert_equal ( 48 , a . prefixlen )
42
46
43
47
a = IPAddr . new ( "0.0.0.0" )
44
48
assert_equal ( "0.0.0.0" , a . to_s )
45
49
assert_equal ( "0.0.0.0" , a . to_string )
46
50
assert_equal ( Socket ::AF_INET , a . family )
51
+ assert_equal ( 32 , a . prefixlen )
47
52
48
53
a = IPAddr . new ( "192.168.1.2" )
49
54
assert_equal ( "192.168.1.2" , a . to_s )
50
55
assert_equal ( "192.168.1.2" , a . to_string )
51
56
assert_equal ( Socket ::AF_INET , a . family )
52
57
assert_equal ( true , a . ipv4? )
53
58
assert_equal ( false , a . ipv6? )
59
+ assert_equal ( 32 , a . prefixlen )
54
60
55
- a = IPAddr . new ( "192.168.1.2/24 " )
61
+ a = IPAddr . new ( "192.168.1.2/26 " )
56
62
assert_equal ( "192.168.1.0" , a . to_s )
57
63
assert_equal ( "192.168.1.0" , a . to_string )
58
64
assert_equal ( Socket ::AF_INET , a . family )
59
- assert_equal ( "#<IPAddr: IPv4:192.168.1.0/255.255.255.0>" , a . inspect )
65
+ assert_equal ( "#<IPAddr: IPv4:192.168.1.0/255.255.255.192>" , a . inspect )
66
+ assert_equal ( 26 , a . prefixlen )
60
67
61
68
a = IPAddr . new ( "192.168.1.2/255.255.255.0" )
62
69
assert_equal ( "192.168.1.0" , a . to_s )
63
70
assert_equal ( "192.168.1.0" , a . to_string )
64
71
assert_equal ( Socket ::AF_INET , a . family )
72
+ assert_equal ( 24 , a . prefixlen )
73
+
74
+ ( 0 ..32 ) . each do |prefixlen |
75
+ assert_equal ( prefixlen , IPAddr . new ( "10.20.30.40/#{ prefixlen } " ) . prefixlen )
76
+ end
77
+ ( 0 ..128 ) . each do |prefixlen |
78
+ assert_equal ( prefixlen , IPAddr . new ( "1:2:3:4:5:6:7:8/#{ prefixlen } " ) . prefixlen )
79
+ end
65
80
66
81
assert_equal ( "0:0:0:1::" , IPAddr . new ( "0:0:0:1::" ) . to_s )
67
82
assert_equal ( "2001:200:300::" , IPAddr . new ( "2001:200:300::/48" ) . to_s )
@@ -153,6 +168,27 @@ def test_ip6_int
153
168
}
154
169
end
155
170
171
+ def test_prefixlen_writer
172
+ a = IPAddr . new ( "192.168.1.2" )
173
+ [ "1" , "255.255.255.0" , "ffff:ffff:ffff:ffff::" , nil , 1.0 , -1 , 33 ] . each { |x |
174
+ assert_raise ( IPAddr ::InvalidPrefixError ) { a . prefixlen = x }
175
+ }
176
+ a = IPAddr . new ( "1:2:3:4:5:6:7:8" )
177
+ [ "1" , "255.255.255.0" , "ffff:ffff:ffff:ffff::" , nil , 1.0 , -1 , 129 ] . each { |x |
178
+ assert_raise ( IPAddr ::InvalidPrefixError ) { a . prefixlen = x }
179
+ }
180
+
181
+ a = IPAddr . new ( "192.168.1.2" )
182
+ a . prefixlen = 26
183
+ assert_equal ( 26 , a . prefixlen )
184
+ assert_equal ( "192.168.1.0" , a . to_s )
185
+
186
+ a = IPAddr . new ( "1:2:3:4:5:6:7:8" )
187
+ a . prefixlen = 52
188
+ assert_equal ( 52 , a . prefixlen )
189
+ assert_equal ( "1:2:3::" , a . to_s )
190
+ end
191
+
156
192
def test_to_s
157
193
assert_equal ( "3ffe:0505:0002:0000:0000:0000:0000:0001" , IPAddr . new ( "3ffe:505:2::1" ) . to_string )
158
194
assert_equal ( "3ffe:505:2::1" , IPAddr . new ( "3ffe:505:2::1" ) . to_s )
0 commit comments