summaryrefslogtreecommitdiff
path: root/test/ruby/test_enum.rb
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-09-13 11:10:24 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-09-13 11:10:24 +0000
commit384fda18b885872aacf225ac6ad7805fb101e497 (patch)
tree4ce162ac23bd0b9a6e78a1f3c82fa57ea97480bf /test/ruby/test_enum.rb
parentcff6bdfcba57995e1879c7a2003f9949aec29632 (diff)
warn unused blocks with Enumerable#all? any? one? none?
[Fix GH-1953] From: Koji Onishi <fursich0@gmail.com> git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64733 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/ruby/test_enum.rb')
-rw-r--r--test/ruby/test_enum.rb60
1 files changed, 60 insertions, 0 deletions
diff --git a/test/ruby/test_enum.rb b/test/ruby/test_enum.rb
index 2167271886..5c5d359b82 100644
--- a/test/ruby/test_enum.rb
+++ b/test/ruby/test_enum.rb
@@ -314,6 +314,21 @@ class TestEnumerable < Test::Unit::TestCase
assert_equal(false, @obj.all?(1..2))
end
+ def test_all_with_unused_block
+ assert_in_out_err [], <<-EOS, [], ["-:1: warning: given block not used"]
+ [1, 2].all?(1) {|x| x == 3 }
+ EOS
+ assert_in_out_err [], <<-EOS, [], ["-:1: warning: given block not used"]
+ (1..2).all?(1) {|x| x == 3 }
+ EOS
+ assert_in_out_err [], <<-EOS, [], ["-:1: warning: given block not used"]
+ 3.times.all?(1) {|x| x == 3 }
+ EOS
+ assert_in_out_err [], <<-EOS, [], ["-:1: warning: given block not used"]
+ {a: 1, b: 2}.all?([:b, 2]) {|x| x == 4 }
+ EOS
+ end
+
def test_any
assert_equal(true, @obj.any? {|x| x >= 3 })
assert_equal(false, @obj.any? {|x| x > 3 })
@@ -329,6 +344,21 @@ class TestEnumerable < Test::Unit::TestCase
assert_equal(true, {a: 1, b: 2}.any?(->(kv) { kv == [:b, 2] }))
end
+ def test_any_with_unused_block
+ assert_in_out_err [], <<-EOS, [], ["-:1: warning: given block not used"]
+ [1, 23].any?(1) {|x| x == 1 }
+ EOS
+ assert_in_out_err [], <<-EOS, [], ["-:1: warning: given block not used"]
+ (1..2).any?(34) {|x| x == 2 }
+ EOS
+ assert_in_out_err [], <<-EOS, [], ["-:1: warning: given block not used"]
+ 3.times.any?(1) {|x| x == 3 }
+ EOS
+ assert_in_out_err [], <<-EOS, [], ["-:1: warning: given block not used"]
+ {a: 1, b: 2}.any?([:b, 2]) {|x| x == 4 }
+ EOS
+ end
+
def test_one
assert(@obj.one? {|x| x == 3 })
assert(!(@obj.one? {|x| x == 1 }))
@@ -348,6 +378,21 @@ class TestEnumerable < Test::Unit::TestCase
assert([ nil, true, 99 ].one?(Integer))
end
+ def test_one_with_unused_block
+ assert_in_out_err [], <<-EOS, [], ["-:1: warning: given block not used"]
+ [1, 2].one?(1) {|x| x == 3 }
+ EOS
+ assert_in_out_err [], <<-EOS, [], ["-:1: warning: given block not used"]
+ (1..2).one?(1) {|x| x == 3 }
+ EOS
+ assert_in_out_err [], <<-EOS, [], ["-:1: warning: given block not used"]
+ 3.times.one?(1) {|x| x == 3 }
+ EOS
+ assert_in_out_err [], <<-EOS, [], ["-:1: warning: given block not used"]
+ {a: 1, b: 2}.one?([:b, 2]) {|x| x == 4 }
+ EOS
+ end
+
def test_none
assert(@obj.none? {|x| x == 4 })
assert(!(@obj.none? {|x| x == 1 }))
@@ -365,6 +410,21 @@ class TestEnumerable < Test::Unit::TestCase
assert(@empty.none?)
end
+ def test_none_with_unused_block
+ assert_in_out_err [], <<-EOS, [], ["-:1: warning: given block not used"]
+ [1, 2].none?(1) {|x| x == 3 }
+ EOS
+ assert_in_out_err [], <<-EOS, [], ["-:1: warning: given block not used"]
+ (1..2).none?(1) {|x| x == 3 }
+ EOS
+ assert_in_out_err [], <<-EOS, [], ["-:1: warning: given block not used"]
+ 3.times.none?(1) {|x| x == 3 }
+ EOS
+ assert_in_out_err [], <<-EOS, [], ["-:1: warning: given block not used"]
+ {a: 1, b: 2}.none?([:b, 2]) {|x| x == 4 }
+ EOS
+ end
+
def test_min
assert_equal(1, @obj.min)
assert_equal(3, @obj.min {|a,b| b <=> a })