diff options
Diffstat (limited to 'spec/ruby/core/matchdata/integer_at_spec.rb')
| -rw-r--r-- | spec/ruby/core/matchdata/integer_at_spec.rb | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/spec/ruby/core/matchdata/integer_at_spec.rb b/spec/ruby/core/matchdata/integer_at_spec.rb new file mode 100644 index 0000000000..65f73a7bee --- /dev/null +++ b/spec/ruby/core/matchdata/integer_at_spec.rb @@ -0,0 +1,38 @@ +# -*- encoding: utf-8 -*- + +require_relative '../../spec_helper' + +ruby_version_is "4.1" do + describe "MatchData#integer_at" do + it "converts the corresponding match to an Integer and returns it when given an Integer" do + md = /(\d{4})(\d{2})(\d{2})/.match("20260308") + md.integer_at(0).should == 20260308 + md.integer_at(1).should == 2026 + md.integer_at(2).should == 3 + end + + it "returns nil on non-matching index matches" do + md = /\b(\d)?\b/.match("THX1138.") + md.integer_at(1).should == nil + end + + it "returns nil on non-integer matches" do + md = /(\w)?/.match("THX1138.") + md.integer_at(1).should == nil + end + + it "converts the match to an Integer in the given base" do + md = /\w+/.match("0c") + md.integer_at(0).should == 0 + md.integer_at(0, 16).should == 12 + end + + it "converts the match to an Integer in the prefix when given base is zero" do + /\w+/.match("010").integer_at(0, 0).should == 010 + /\w+/.match("0x10").integer_at(0, 0).should == 0x10 + /\w+/.match("0d10").integer_at(0, 0).should == 0d10 + /\w+/.match("0o10").integer_at(0, 0).should == 0o10 + /\w+/.match("0b10").integer_at(0, 0).should == 0b10 + end + end +end |
