diff options
Diffstat (limited to 'spec/rubyspec/optional/capi/range_spec.rb')
-rw-r--r-- | spec/rubyspec/optional/capi/range_spec.rb | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/spec/rubyspec/optional/capi/range_spec.rb b/spec/rubyspec/optional/capi/range_spec.rb index b145079f39..aa16f9773e 100644 --- a/spec/rubyspec/optional/capi/range_spec.rb +++ b/spec/rubyspec/optional/capi/range_spec.rb @@ -65,4 +65,31 @@ describe "C-API Range function" do excl.should be_false end end + + describe "rb_range_beg_len" do + it "returns correct begin, length and result" do + r = 2..5 + begp, lenp, result = @s.rb_range_beg_len(r, 0, 0, 10, 0) + result.should be_true + begp.should == 2 + lenp.should == 4 + end + + it "returns nil when not in range" do + r = 2..5 + begp, lenp, result = @s.rb_range_beg_len(r, 0, 0, 1, 0) + result.should be_nil + end + + it "raises a RangeError when not in range and err is 1" do + r = -5..-1 + lambda { @s.rb_range_beg_len(r, 0, 0, 1, 1) }.should raise_error(RangeError) + end + + it "returns nil when not in range and err is 0" do + r = -5..-1 + begp, lenp, result = @s.rb_range_beg_len(r, 0, 0, 1, 0) + result.should be_nil + end + end end |