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

Constant Summary

Constant Summary

Constants inherited from BaseMatcher

BaseMatcher::UNDEFINED

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, #to_word, #underscore

Constructor Details

- (StartAndEndWith) initialize(*expected)

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

- (Object) failure_message_for_should



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

- (Object) failure_message_for_should_not



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

- (Boolean) matches?(actual)

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