summaryrefslogtreecommitdiff
path: root/spec/ruby/core/string/start_with_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/ruby/core/string/start_with_spec.rb')
-rw-r--r--spec/ruby/core/string/start_with_spec.rb47
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