summaryrefslogtreecommitdiff
path: root/lib/set.rb
diff options
context:
space:
mode:
authorknu <knu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2002-09-07 10:48:14 +0000
committerknu <knu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2002-09-07 10:48:14 +0000
commitd29143b99ea0fb2ea4821a804d489447cf92ed68 (patch)
treefa0603bd1cc773eaf70cb14f0246ade0ba07b5cf /lib/set.rb
parent6954ba398acc925443711f93c1f3f83136c99fe9 (diff)
* lib/set.rb: Disallow Set.new(false). Add even more tests.
[Submitted by: "Christoph" <chr_news@gmx.net>] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2814 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/set.rb')
-rw-r--r--lib/set.rb37
1 files changed, 33 insertions, 4 deletions
diff --git a/lib/set.rb b/lib/set.rb
index 195d6a6938..374b43da3f 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