diff options
Diffstat (limited to 'spec/ruby/core/string/start_with_spec.rb')
| -rw-r--r-- | spec/ruby/core/string/start_with_spec.rb | 47 |
1 files changed, 10 insertions, 37 deletions
diff --git a/spec/ruby/core/string/start_with_spec.rb b/spec/ruby/core/string/start_with_spec.rb index 1b27fdaed7..8b0ba6b5a7 100644 --- a/spec/ruby/core/string/start_with_spec.rb +++ b/spec/ruby/core/string/start_with_spec.rb @@ -1,45 +1,18 @@ # -*- encoding: utf-8 -*- -require File.expand_path('../../../spec_helper', __FILE__) -require File.expand_path('../fixtures/classes.rb', __FILE__) +require_relative '../../spec_helper' +require_relative 'fixtures/classes' +require_relative '../../shared/string/start_with' describe "String#start_with?" do - it "returns true only if beginning match" do - s = "hello" - s.start_with?('h').should be_true - s.start_with?('hel').should be_true - s.start_with?('el').should be_false - end - - it "returns true only if any beginning match" do - "hello".start_with?('x', 'y', 'he', 'z').should be_true - end - - it "returns true if the search string is empty" do - "hello".start_with?("").should be_true - "".start_with?("").should be_true - end - - it "converts its argument using :to_str" do - s = "hello" - find = mock('h') - find.should_receive(:to_str).and_return("h") - s.start_with?(find).should be_true - end - - it "ignores arguments not convertible to string" do - "hello".start_with?().should be_false - lambda { "hello".start_with?(1) }.should raise_error(TypeError) - lambda { "hello".start_with?(["h"]) }.should raise_error(TypeError) - lambda { "hello".start_with?(1, nil, "h") }.should raise_error(TypeError) - end + it_behaves_like :start_with, :to_s - it "uses only the needed arguments" do - find = mock('h') - find.should_not_receive(:to_str) - "hello".start_with?("h",find).should be_true + # Here and not in the shared examples because this is invalid as a Symbol + it "matches part of a character with the same part" do + "\xA9".should.start_with?("\xA9") # A9 is not a character head for UTF-8 end - it "works for multibyte strings" do - "céréale".start_with?("cér").should be_true + it "checks we are matching only part of a character" do + "\xe3\x81\x82".size.should == 1 + "\xe3\x81\x82".should_not.start_with?("\xe3") end end |
