Sha256: 2cb947748f7533e5ab118d518ef5a83e2647c488b6f12abf8f2feb4eed4b9b56
Contents?: true
Size: 1.77 KB
Versions: 4
Compression:
Stored size: 1.77 KB
Contents
module Spec module Matchers class Matcher include Spec::Matchers::Pretty attr_reader :expected, :actual def initialize(name, *expected, &declarations) @name = name @expected = expected @declarations = declarations @diffable = false @messages = { :description => lambda {"#{name_to_sentence}#{expected_to_sentence}"}, :failure_message_for_should => lambda {|actual| "expected #{actual.inspect} to #{name_to_sentence}#{expected_to_sentence}"}, :failure_message_for_should_not => lambda {|actual| "expected #{actual.inspect} not to #{name_to_sentence}#{expected_to_sentence}"} } end def matches?(actual) @actual = actual instance_exec(*@expected, &@declarations) instance_exec(@actual, &@match_block) end def description(&block) cache_or_call_cached(:description, &block) end def failure_message_for_should(&block) cache_or_call_cached(:failure_message_for_should, @actual, &block) end def failure_message_for_should_not(&block) cache_or_call_cached(:failure_message_for_should_not, @actual, &block) end def match(&block) @match_block = block end def diffable? @diffable end def diffable @diffable = true end private def cache_or_call_cached(key, actual=nil, &block) block ? @messages[key] = block : actual.nil? ? @messages[key].call : @messages[key].call(actual) end def name_to_sentence split_words(@name) end def expected_to_sentence to_sentence(@expected) end end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
rspec-1.2.3 | lib/spec/matchers/matcher.rb |
rspec-1.2.4 | lib/spec/matchers/matcher.rb |
rspec-1.2.5 | lib/spec/matchers/matcher.rb |
rspec-1.2.6 | lib/spec/matchers/matcher.rb |