diff options
author | Jeremy Evans <code@jeremyevans.net> | 2020-07-13 09:36:06 -0700 |
---|---|---|
committer | Hiroshi SHIBATA <hsbt@ruby-lang.org> | 2021-10-07 18:22:43 +0900 |
commit | bd6e1a0f0883dba7b02f30cefe5ebec96d02cb90 (patch) | |
tree | d9675feec41e545f8ed2225a84239ee0ae8d9814 /test/test_ipaddr.rb | |
parent | 74ed881e109ee2480854f5d47e8ef4a84b0cc1c5 (diff) | |
download | ruby-bd6e1a0f0883dba7b02f30cefe5ebec96d02cb90.tar.gz |
[ruby/ipaddr] Support zone identifiers in IPv6 addresses
These are supported by Ruby's socket library if the operating system
supports zone indentifiers, so they should be supported by ipaddr.
See RFCs 4007 and 6874 for additional information.
Implements Ruby Feature #10911
https://github.com/ruby/ipaddr/commit/09a6408fb2
Diffstat (limited to 'test/test_ipaddr.rb')
-rw-r--r-- | test/test_ipaddr.rb | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/test/test_ipaddr.rb b/test/test_ipaddr.rb index c055f4b2c4..029ad06642 100644 --- a/test/test_ipaddr.rb +++ b/test/test_ipaddr.rb @@ -43,6 +43,17 @@ class TC_IPAddr < Test::Unit::TestCase assert_equal("3ffe:0505:0002:0000:0000:0000:0000:0000", a.to_string) assert_equal(Socket::AF_INET6, a.family) assert_equal(48, a.prefix) + assert_nil(a.zone_id) + + a = IPAddr.new("fe80::1%ab0") + assert_equal("fe80::1%ab0", a.to_s) + assert_equal("fe80:0000:0000:0000:0000:0000:0000:0001%ab0", a.to_string) + assert_equal(Socket::AF_INET6, a.family) + assert_equal(false, a.ipv4?) + assert_equal(true, a.ipv6?) + assert_equal("#<IPAddr: IPv6:fe80:0000:0000:0000:0000:0000:0000:0001%ab0/ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff>", a.inspect) + assert_equal(128, a.prefix) + assert_equal('%ab0', a.zone_id) a = IPAddr.new("0.0.0.0") assert_equal("0.0.0.0", a.to_s) @@ -87,7 +98,8 @@ class TC_IPAddr < Test::Unit::TestCase assert_raise(IPAddr::InvalidAddressError) { IPAddr.new("192.168.0.256") } assert_raise(IPAddr::InvalidAddressError) { IPAddr.new("192.168.0.011") } - assert_raise(IPAddr::InvalidAddressError) { IPAddr.new("fe80::1%fxp0") } + assert_raise(IPAddr::InvalidAddressError) { IPAddr.new("fe80::1%") } + assert_raise(IPAddr::InvalidAddressError) { IPAddr.new("fe80::1%]") } assert_raise(IPAddr::InvalidAddressError) { IPAddr.new("[192.168.1.2]/120") } assert_raise(IPAddr::InvalidAddressError) { IPAddr.new("[2001:200:300::]\nINVALID") } assert_raise(IPAddr::InvalidAddressError) { IPAddr.new("192.168.0.1/32\nINVALID") } @@ -231,6 +243,18 @@ class TC_IPAddr < Test::Unit::TestCase a = IPAddr.new("192.168.1.2/24") assert_equal(a.netmask, "255.255.255.0") end + + def test_zone_id + a = IPAddr.new("192.168.1.2") + assert_raise(IPAddr::InvalidAddressError) { a.zone_id = '%ab0' } + assert_raise(IPAddr::InvalidAddressError) { a.zone_id } + + a = IPAddr.new("1:2:3:4:5:6:7:8") + a.zone_id = '%ab0' + assert_equal('%ab0', a.zone_id) + assert_equal("1:2:3:4:5:6:7:8%ab0", a.to_s) + assert_raise(IPAddr::InvalidAddressError) { a.zone_id = '%' } + end end class TC_Operator < Test::Unit::TestCase |