aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorktsj <ktsj@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-05-04 09:06:59 +0000
committerktsj <ktsj@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-05-04 09:06:59 +0000
commitb4cdbe1b003fc12366202c98c507f178bd3a8aa8 (patch)
treed767acf140daac04b710745da5a9ae9e37ee8c2a /test
parent95c9dde1728d5882465aca8278d69827dfe3ed48 (diff)
downloadruby-b4cdbe1b003fc12366202c98c507f178bd3a8aa8.tar.gz
* lib/set.rb (Set#{delete_if,keep_if,collect!,reject!,select!,classify,divide},
SortedSet#{delete_if,keep_if}): Return sized enumerators. * test/test_set.rb: add test for above. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54903 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test')
-rw-r--r--test/test_set.rb63
1 files changed, 63 insertions, 0 deletions
diff --git a/test/test_set.rb b/test/test_set.rb
index cb0727558e..9439974fea 100644
--- a/test/test_set.rb
+++ b/test/test_set.rb
@@ -432,6 +432,12 @@ class TC_Set < Test::Unit::TestCase
ret = set.delete_if { |i| i % 3 == 0 }
assert_same(set, ret)
assert_equal(Set[1,2,4,5,7,8,10], set)
+
+ set = Set.new(1..10)
+ enum = set.delete_if
+ assert_equal(set.size, enum.size)
+ assert_same(set, enum.each { |i| i % 3 == 0 })
+ assert_equal(Set[1,2,4,5,7,8,10], set)
end
def test_keep_if
@@ -444,6 +450,12 @@ class TC_Set < Test::Unit::TestCase
ret = set.keep_if { |i| i % 3 != 0 }
assert_same(set, ret)
assert_equal(Set[1,2,4,5,7,8,10], set)
+
+ set = Set.new(1..10)
+ enum = set.keep_if
+ assert_equal(set.size, enum.size)
+ assert_same(set, enum.each { |i| i % 3 != 0 })
+ assert_equal(Set[1,2,4,5,7,8,10], set)
end
def test_collect!
@@ -462,6 +474,22 @@ class TC_Set < Test::Unit::TestCase
assert_same(set, ret)
assert_equal(Set[2,4,6,'A','B','C',nil], set)
+
+ set = Set[1,2,3,'a','b','c',-1..1,2..4]
+ enum = set.collect!
+
+ assert_equal(set.size, enum.size)
+ assert_same(set, enum.each { |i|
+ case i
+ when Numeric
+ i * 2
+ when String
+ i.upcase
+ else
+ nil
+ end
+ })
+ assert_equal(Set[2,4,6,'A','B','C',nil], set)
end
def test_reject!
@@ -474,6 +502,12 @@ class TC_Set < Test::Unit::TestCase
ret = set.reject! { |i| i % 3 == 0 }
assert_same(set, ret)
assert_equal(Set[1,2,4,5,7,8,10], set)
+
+ set = Set.new(1..10)
+ enum = set.reject!
+ assert_equal(set.size, enum.size)
+ assert_same(set, enum.each { |i| i % 3 == 0 })
+ assert_equal(Set[1,2,4,5,7,8,10], set)
end
def test_select!
@@ -486,6 +520,12 @@ class TC_Set < Test::Unit::TestCase
ret = set.select! { |i| i % 3 != 0 }
assert_same(set, ret)
assert_equal(Set[1,2,4,5,7,8,10], set)
+
+ set = Set.new(1..10)
+ enum = set.select!
+ assert_equal(set.size, enum.size)
+ assert_equal(nil, enum.each { |i| i <= 10 })
+ assert_equal(Set.new(1..10), set)
end
def test_merge
@@ -563,6 +603,18 @@ class TC_Set < Test::Unit::TestCase
assert_equal(Set[3,6,9], ret[0])
assert_equal(Set[1,4,7,10], ret[1])
assert_equal(Set[2,5,8], ret[2])
+
+ set = Set.new(1..10)
+ enum = set.classify
+
+ assert_equal(set.size, enum.size)
+ ret = enum.each { |i| i % 3 }
+ assert_equal(3, ret.size)
+ assert_instance_of(Hash, ret)
+ ret.each_value { |value| assert_instance_of(Set, value) }
+ assert_equal(Set[3,6,9], ret[0])
+ assert_equal(Set[1,4,7,10], ret[1])
+ assert_equal(Set[2,5,8], ret[2])
end
def test_divide
@@ -596,6 +648,17 @@ class TC_Set < Test::Unit::TestCase
raise "unexpected group: #{s.inspect}"
end
}
+
+ set = Set.new(1..10)
+ enum = set.divide
+ ret = enum.each { |i| i % 3 }
+
+ assert_equal(set.size, enum.size)
+ assert_equal(3, ret.size)
+ n = 0
+ ret.each { |s| n += s.size }
+ assert_equal(set.size, n)
+ assert_equal(set, ret.flatten)
end
def test_taintness