summaryrefslogtreecommitdiff
path: root/test/ruby
diff options
context:
space:
mode:
authorzverok <zverok.offline@gmail.com>2024-09-08 19:26:23 +0300
committerAkinori Musha <knu@idaemons.org>2024-09-09 17:46:13 +0900
commitd7b0f269636749fdae2ba155ba5f9b752aa17341 (patch)
tree12cf7a325dafb84ecbe36339c6a0071cbce52d36 /test/ruby
parent155989415b660caba247db74f96b299e0cea66c1 (diff)
Return back legacy Range#step behavior for symbol ranges
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/11573
Diffstat (limited to 'test/ruby')
-rw-r--r--test/ruby/test_range.rb52
1 files changed, 52 insertions, 0 deletions
diff --git a/test/ruby/test_range.rb b/test/ruby/test_range.rb
index 6c591b3155..842be77ab3 100644
--- a/test/ruby/test_range.rb
+++ b/test/ruby/test_range.rb
@@ -519,6 +519,58 @@ class TestRange < Test::Unit::TestCase
assert_equal(%w[a b c], ('a'...).step.take(3))
end
+ def test_step_symbol_legacy
+ # finite
+ a = []
+ (:a..:g).step(2) { a << _1 }
+ assert_equal(%i[a c e g], a)
+
+ assert_kind_of(Enumerator, (:a..:g).step(2))
+ assert_equal(%i[a c e g], (:a..:g).step(2).to_a)
+
+ a = []
+ (:a...:g).step(2) { a << _1 }
+ assert_equal(%i[a c e], a)
+
+ assert_kind_of(Enumerator, (:a...:g).step(2))
+ assert_equal(%i[a c e], (:a...:g).step(2).to_a)
+
+ # endless
+ a = []
+ (:a...).step(2) { a << _1; break if a.size == 3 }
+ assert_equal(%i[a c e], a)
+
+ assert_kind_of(Enumerator, (:a...).step(2))
+ assert_equal(%i[a c e], (:a...).step(2).take(3))
+
+ # beginless
+ assert_raise(ArgumentError) { (...:g).step(2) {} }
+ assert_raise(ArgumentError) { (...:g).step(2) }
+
+ # step is not provided
+ a = []
+ (:a..:d).step { a << _1 }
+ assert_equal(%i[a b c d], a)
+
+ assert_kind_of(Enumerator, (:a..:d).step)
+ assert_equal(%i[a b c d], (:a..:d).step.to_a)
+
+ a = []
+ (:a...:d).step { a << _1 }
+ assert_equal(%i[a b c], a)
+
+ assert_kind_of(Enumerator, (:a...:d).step)
+ assert_equal(%i[a b c], (:a...:d).step.to_a)
+
+ # endless
+ a = []
+ (:a...).step { a << _1; break if a.size == 3 }
+ assert_equal(%i[a b c], a)
+
+ assert_kind_of(Enumerator, (:a...).step)
+ assert_equal(%i[a b c], (:a...).step.take(3))
+ end
+
def test_step_bug15537
assert_equal([10.0, 9.0, 8.0, 7.0], (10 ..).step(-1.0).take(4))
assert_equal([10.0, 9.0, 8.0, 7.0], (10.0 ..).step(-1).take(4))