mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* lib/set.rb (Set#^): Fix XOR operation against a container that
holds duplicate values. [issue: #6444] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@11265 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
3963aaa75b
commit
30065371d1
2 changed files with 14 additions and 2 deletions
|
|
@ -1,3 +1,8 @@
|
|||
Thu Nov 2 14:48:30 2006 Akinori MUSHA <knu@iDaemons.org>
|
||||
|
||||
* lib/set.rb (Set#^): Fix XOR operation against a container that
|
||||
holds duplicate values. [issue: #6444]
|
||||
|
||||
Wed Nov 1 02:41:38 2006 Akinori MUSHA <knu@iDaemons.org>
|
||||
|
||||
* ext/digest/lib/digest/hmac.rb (Digest::HMAC::update): Minor
|
||||
|
|
|
|||
11
lib/set.rb
11
lib/set.rb
|
|
@ -301,8 +301,8 @@ class Set
|
|||
# ((set | enum) - (set & enum)).
|
||||
def ^(enum)
|
||||
enum.is_a?(Enumerable) or raise ArgumentError, "value must be enumerable"
|
||||
n = dup
|
||||
enum.each { |o| if n.include?(o) then n.delete(o) else n.add(o) end }
|
||||
n = Set.new(enum)
|
||||
each { |o| if n.include?(o) then n.delete(o) else n.add(o) end }
|
||||
n
|
||||
end
|
||||
|
||||
|
|
@ -1049,6 +1049,13 @@ class TC_Set < Test::Unit::TestCase
|
|||
assert_equal(Set[2,4], ret)
|
||||
end
|
||||
|
||||
def test_xor
|
||||
set = Set[1,2,3,4]
|
||||
ret = set ^ [2,4,5,5]
|
||||
assert_not_same(set, ret)
|
||||
assert_equal(Set[1,3,5], ret)
|
||||
end
|
||||
|
||||
def test_eq
|
||||
set1 = Set[2,3,1]
|
||||
set2 = Set[1,2,3]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue