* lib/ipaddr.rb (IPAddr#hash): Take account of netmask; submitted
by Nobuhiro IMAI in [ruby-dev:39011] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24411 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
8bc6c71547
commit
20a684739e
@ -1,3 +1,8 @@
|
|||||||
|
Thu Aug 6 00:09:56 2009 Akinori MUSHA <knu@iDaemons.org>
|
||||||
|
|
||||||
|
* lib/ipaddr.rb (IPAddr#hash): Take account of netmask; submitted
|
||||||
|
by Nobuhiro IMAI in [ruby-dev:39011]
|
||||||
|
|
||||||
Wed Aug 5 19:19:13 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
Wed Aug 5 19:19:13 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||||
|
|
||||||
* ruby.c (load_file_internal): assumes -x flag if no "ruby" is in
|
* ruby.c (load_file_internal): assumes -x flag if no "ruby" is in
|
||||||
|
@ -338,7 +338,7 @@ class IPAddr
|
|||||||
|
|
||||||
# Returns a hash value used by Hash, Set, and Array classes
|
# Returns a hash value used by Hash, Set, and Array classes
|
||||||
def hash
|
def hash
|
||||||
return (@addr.hash << 1) | (ipv4? ? 0 : 1)
|
return ([@addr, @mask_addr].hash << 1) | (ipv4? ? 0 : 1)
|
||||||
end
|
end
|
||||||
|
|
||||||
# Creates a Range object for the network address.
|
# Creates a Range object for the network address.
|
||||||
@ -827,17 +827,19 @@ class TC_Operator < Test::Unit::TestCase
|
|||||||
a4 = IPAddr.new('3ffe:505:2::1')
|
a4 = IPAddr.new('3ffe:505:2::1')
|
||||||
a5 = IPAddr.new('127.0.0.1')
|
a5 = IPAddr.new('127.0.0.1')
|
||||||
a6 = IPAddr.new('::1')
|
a6 = IPAddr.new('::1')
|
||||||
|
a7 = IPAddr.new('192.168.2.0/25')
|
||||||
|
a8 = IPAddr.new('192.168.2.0/25')
|
||||||
|
|
||||||
h = { a1 => 'ipv4', a2 => 'ipv4', a3 => 'ipv6', a4 => 'ipv6', a5 => 'ipv4', a6 => 'ipv6' }
|
h = { a1 => 'ipv4', a2 => 'ipv4', a3 => 'ipv6', a4 => 'ipv6', a5 => 'ipv4', a6 => 'ipv6', a7 => 'ipv4', a8 => 'ipv4'}
|
||||||
assert_equal(4, h.size)
|
assert_equal(5, h.size)
|
||||||
assert_equal('ipv4', h[a1])
|
assert_equal('ipv4', h[a1])
|
||||||
assert_equal('ipv4', h[a2])
|
assert_equal('ipv4', h[a2])
|
||||||
assert_equal('ipv6', h[a3])
|
assert_equal('ipv6', h[a3])
|
||||||
assert_equal('ipv6', h[a4])
|
assert_equal('ipv6', h[a4])
|
||||||
|
|
||||||
require 'set'
|
require 'set'
|
||||||
s = Set[a1, a2, a3, a4, a5, a6]
|
s = Set[a1, a2, a3, a4, a5, a6, a7, a8]
|
||||||
assert_equal(4, s.size)
|
assert_equal(5, s.size)
|
||||||
assert_equal(true, s.include?(a1))
|
assert_equal(true, s.include?(a1))
|
||||||
assert_equal(true, s.include?(a2))
|
assert_equal(true, s.include?(a2))
|
||||||
assert_equal(true, s.include?(a3))
|
assert_equal(true, s.include?(a3))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user