diff options
author | knu <knu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2002-09-07 10:48:14 +0000 |
---|---|---|
committer | knu <knu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2002-09-07 10:48:14 +0000 |
commit | 5fb5a5e0302d264b41c4aa130a3a71cb3af549b1 (patch) | |
tree | fa0603bd1cc773eaf70cb14f0246ade0ba07b5cf /lib/set.rb | |
parent | 295120678ce501cdc76e29bcd2c2f68f6fd4c658 (diff) | |
download | ruby-5fb5a5e0302d264b41c4aa130a3a71cb3af549b1.tar.gz ruby-5fb5a5e0302d264b41c4aa130a3a71cb3af549b1.tar.xz ruby-5fb5a5e0302d264b41c4aa130a3a71cb3af549b1.zip |
* lib/set.rb: Disallow Set.new(false). Add even more tests.
[Submitted by: "Christoph" <chr_news@gmx.net>]
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@2814 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/set.rb')
-rw-r--r-- | lib/set.rb | 37 |
1 files changed, 33 insertions, 4 deletions
diff --git a/lib/set.rb b/lib/set.rb index 195d6a693..374b43da3 100644 --- a/lib/set.rb +++ b/lib/set.rb @@ -188,10 +188,10 @@ class Set def initialize(enum = nil) @hash = {} - if enum - enum.is_a?(Enumerable) or raise ArgumentError, "value must be enumerable" - enum.each { |o| @hash[o] = true } - end + enum.nil? and return + + enum.is_a?(Enumerable) or raise ArgumentError, "value must be enumerable" + enum.each { |o| @hash[o] = true } end def dup @@ -465,6 +465,9 @@ class TC_Set < Test::Unit::TestCase Set.new('XYZ') } assert_raises(ArgumentError) { + Set.new(false) + } + assert_raises(ArgumentError) { Set.new(1) } assert_raises(ArgumentError) { @@ -577,6 +580,23 @@ class TC_Set < Test::Unit::TestCase assert_raises(ArgumentError) { set1.flatten! } + + # test5; miscellaneus + empty = Set[] + set = Set[Set[empty, "a"],Set[empty, "b"]] + + assert_nothing_raised { + set.flatten + } + + set1 = empty.merge(Set["no_more", set]) + + assert_nil(Set.new(0..31).flatten!) + + x = Set[Set[],Set[1,2]].flatten! + y = Set[1,2] + + assert_equal(x, y) end def test_include? @@ -726,6 +746,15 @@ class TC_Set < Test::Unit::TestCase assert_equal(set1, set1) assert_equal(set1, set2) assert_not_equal(Set[1], [1]) + + set1 = Class.new(Set)["a", "b"] + set2 = Set["a", "b", set1] + set1 = set1.add(set1.clone) + + assert_equal(set1, set2) + assert_equal(set2, set1) + assert_equal(set2, set2.clone) + assert_equal(set1.clone, set1) end # def test_hash |