summaryrefslogtreecommitdiff
path: root/test/ruby/test_arithmetic_sequence.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/ruby/test_arithmetic_sequence.rb')
-rw-r--r--test/ruby/test_arithmetic_sequence.rb45
1 files changed, 36 insertions, 9 deletions
diff --git a/test/ruby/test_arithmetic_sequence.rb b/test/ruby/test_arithmetic_sequence.rb
index 143906f4e2..5e2a825265 100644
--- a/test/ruby/test_arithmetic_sequence.rb
+++ b/test/ruby/test_arithmetic_sequence.rb
@@ -26,6 +26,11 @@ class TestArithmeticSequence < Test::Unit::TestCase
assert_equal(10, 10.step(to: 1, by: -2).begin)
assert_equal(10, 10.step(to: -1, by: -2).begin)
assert_equal(10.0, 10.0.step(to: -1.0, by: -2.0).begin)
+
+ assert_equal(3, (3..).step(2).begin)
+ assert_equal(4, (4...).step(7).begin)
+ assert_equal(nil, (..10).step(9).begin)
+ assert_equal(nil, (...11).step(5).begin)
end
def test_end
@@ -44,6 +49,11 @@ class TestArithmeticSequence < Test::Unit::TestCase
assert_equal(1, 10.step(to: 1, by: -2).end)
assert_equal(-1, 10.step(to: -1, by: -2).end)
assert_equal(-1.0, 10.0.step(to: -1.0, by: -2.0).end)
+
+ assert_equal(nil, (3..).step(2).end)
+ assert_equal(nil, (4...).step(7).end)
+ assert_equal(10, (..10).step(9).end)
+ assert_equal(11, (...11).step(5).end)
end
def test_exclude_end_p
@@ -61,6 +71,11 @@ class TestArithmeticSequence < Test::Unit::TestCase
assert_equal(false, 10.step(to: 1, by: -1).exclude_end?)
assert_equal(false, 10.step(to: 1, by: -2).exclude_end?)
assert_equal(false, 10.step(to: -1, by: -2).exclude_end?)
+
+ assert_equal(false, (3..).step(2).exclude_end?)
+ assert_equal(true, (4...).step(7).exclude_end?)
+ assert_equal(false, (..10).step(9).exclude_end?)
+ assert_equal(true, (...11).step(5).exclude_end?)
end
def test_step
@@ -79,6 +94,11 @@ class TestArithmeticSequence < Test::Unit::TestCase
assert_equal(-2, 10.step(to: 1, by: -2).step)
assert_equal(-2, 10.step(to: -1, by: -2).step)
assert_equal(-2.0, 10.0.step(to: -1.0, by: -2.0).step)
+
+ assert_equal(2, (3..).step(2).step)
+ assert_equal(7, (4...).step(7).step)
+ assert_equal(9, (..10).step(9).step)
+ assert_equal(5, (...11).step(5).step)
end
def test_eq
@@ -142,15 +162,20 @@ class TestArithmeticSequence < Test::Unit::TestCase
assert_equal([], seq.first(1))
assert_equal([], seq.first(3))
- seq = 1.step(10, by: 0)
- assert_equal(1, seq.first)
- assert_equal([1], seq.first(1))
- assert_equal([1, 1, 1], seq.first(3))
-
seq = 10.0.step(-1.0, by: -2.0)
assert_equal(10.0, seq.first)
assert_equal([10.0], seq.first(1))
assert_equal([10.0, 8.0, 6.0], seq.first(3))
+
+ seq = (1..).step(2)
+ assert_equal(1, seq.first)
+ assert_equal([1], seq.first(1))
+ assert_equal([1, 3, 5], seq.first(3))
+
+ seq = (..10).step(2)
+ assert_equal(nil, seq.first)
+ assert_raise(TypeError) { seq.first(1) }
+ assert_raise(TypeError) { seq.first(3) }
end
def test_first_bug15518
@@ -239,6 +264,11 @@ class TestArithmeticSequence < Test::Unit::TestCase
assert_instance_of Integer, res[1]
end
+ def test_last_bug17218
+ seq = (1.0997r .. 1.1r).step(0.0001r)
+ assert_equal(1.1r, seq.last, '[ruby-core:100312] [Bug #17218]')
+ end
+
def test_to_a
assert_equal([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 1.step(10).to_a)
assert_equal([1, 3, 5, 7, 9], 1.step(10, 2).to_a)
@@ -254,7 +284,7 @@ class TestArithmeticSequence < Test::Unit::TestCase
'[ruby-core:90648] [Bug #15444]')
end
- def test_last_bug17218
+ def test_to_a_bug17218
seq = (1.0997r .. 1.1r).step(0.0001r)
assert_equal([1.0997r, 1.0998r, 1.0999r, 1.1r], seq.to_a, '[ruby-core:100312] [Bug #17218]')
end
@@ -315,9 +345,6 @@ class TestArithmeticSequence < Test::Unit::TestCase
[10, 8, 6, 4, 2].each do |i|
assert_equal(i, seq.next)
end
-
- seq = ((1/10r)..(1/2r)).step(0)
- assert_equal(1/10r, seq.next)
end
def test_next_bug15444