Strange bahaviour of "Set"


#1

Hi,

I already mentioned this in another thread, but I think this is of
general interest. So sorry, if you read it twice.

While working on something involving the “Set” class of the Ruby
standard library, I came across the following:

require “set”
require “test/unit”

class TestSet < Test::Unit::TestCase

def test_set
array_of_arrays=[[“a”, “b”]]
array_of_sets=array_of_arrays.map{|an_array| an_array.to_set}
set_of_sets=array_of_sets.to_set
contained_array=[“a”,“b”]
contained_set=contained_array.to_set
# OK
assert_equal(true, array_of_arrays.include?(contained_array))
# OK
assert_equal(true, array_of_sets.include?(contained_set))
# fails
assert_equal(true, set_of_sets.include?(contained_set))
end
end

The third assertion fails. Is this intended behaviour?

Timo


#2

I believe include? checks for the specific Object ID for the set, not
the contents of the set.

-Justin