Class: RSpec::Matchers::BuiltIn::StartAndEndWith

Inherits:
BaseMatcher
  • Object
show all
Defined in:
lib/rspec/matchers/built_in/start_and_end_with.rb

Direct Known Subclasses

EndWith, StartWith

Instance Attribute Summary

Attributes inherited from BaseMatcher

#actual, #expected, #rescued_exception

Instance Method Summary collapse

Methods inherited from BaseMatcher

#==, #description, #diffable?, #match_unless_raises

Methods included from Pretty

#_pretty_print, #expected_to_sentence, #name, #name_to_sentence, #split_words, #to_sentence, #underscore

Constructor Details

#initialize(*expected) ⇒ StartAndEndWith

Returns a new instance of StartAndEndWith.



5
6
7
# File 'lib/rspec/matchers/built_in/start_and_end_with.rb', line 5

def initialize(*expected)
  @expected = expected.length == 1 ? expected.first : expected
end

Instance Method Details

#failure_message_for_shouldObject



18
19
20
# File 'lib/rspec/matchers/built_in/start_and_end_with.rb', line 18

def failure_message_for_should
  "expected #{@actual.inspect} to #{self.class.name.split('::').last.sub(/With/,'').downcase} with #{@expected.inspect}"
end

#failure_message_for_should_notObject



22
23
24
# File 'lib/rspec/matchers/built_in/start_and_end_with.rb', line 22

def failure_message_for_should_not
  "expected #{@actual.inspect} not to #{self.class.name.split('::').last.sub(/With/,'').downcase} with #{@expected.inspect}"
end

#matches?(actual) ⇒ Boolean

Returns:

  • (Boolean)


9
10
11
12
13
14
15
16
# File 'lib/rspec/matchers/built_in/start_and_end_with.rb', line 9

def matches?(actual)
  @actual = actual.respond_to?(:[]) ? actual : (raise ArgumentError.new("#{actual.inspect} does not respond to :[]"))
  begin
    @expected.respond_to?(:length) ? subset_matches?(@expected, @actual) : element_matches?(@expected, @actual)
  rescue ArgumentError
    raise ArgumentError.new("#{actual.inspect} does not have ordered elements")
  end
end