diff options
Diffstat (limited to 'spec/ruby/core/range/step_spec.rb')
-rw-r--r-- | spec/ruby/core/range/step_spec.rb | 35 |
1 files changed, 23 insertions, 12 deletions
diff --git a/spec/ruby/core/range/step_spec.rb b/spec/ruby/core/range/step_spec.rb index cdf66e4565..818207974a 100644 --- a/spec/ruby/core/range/step_spec.rb +++ b/spec/ruby/core/range/step_spec.rb @@ -1,21 +1,10 @@ require_relative '../../spec_helper' describe "Range#step" do - step_enum_class = Enumerator - ruby_version_is "2.6" do - step_enum_class = Enumerator::ArithmeticSequence - end - before :each do ScratchPad.record [] end - it "returns an #{step_enum_class} when no block is given" do - enum = (1..10).step(4) - enum.should be_an_instance_of(step_enum_class) - enum.to_a.should eql([1, 5, 9]) - end - it "returns self" do r = 1..2 r.step { }.should equal(r) @@ -268,7 +257,7 @@ describe "Range#step" do end describe "when no block is given" do - describe "returned #{step_enum_class}" do + describe "returned Enumerator" do describe "size" do it "raises a TypeError if step does not respond to #to_int" do obj = mock("Range#step non-integer") @@ -363,6 +352,28 @@ describe "Range#step" do enum.size.should == nil end end + + describe "type" do + ruby_version_is ""..."2.6" do + it "returns an instance of Enumerator" do + (1..10).step.class.should == Enumerator + end + end + + ruby_version_is "2.6" do + context "when both begin and end are numerics" do + it "returns an instance of Enumerator::ArithmeticSequence" do + (1..10).step.class.should == Enumerator::ArithmeticSequence + end + end + + context "when begin and end are not numerics" do + it "returns an instance of Enumerator" do + ("a".."z").step.class.should == Enumerator + end + end + end + end end end end |