Sha256: 9b941cb7e80b935b05340db07bdd1f71a6441a4ea0382ddabfa1cf8c722c3775

Contents?: true

Size: 1.47 KB

Versions: 11

Compression:

Stored size: 1.47 KB

Contents

module Spec
  module Expectations
    class InvalidMatcherError < ArgumentError; end        
    
    class ExpectationMatcherHandler        
      def self.handle_matcher(actual, matcher, &block)
        ::Spec::Matchers.last_should = "should"
        return Spec::Matchers::PositiveOperatorMatcher.new(actual) if matcher.nil?

        unless matcher.respond_to?(:matches?)
          raise InvalidMatcherError, "Expected a matcher, got #{matcher.inspect}."
        end
        
        match = matcher.matches?(actual, &block)
        ::Spec::Matchers.last_matcher = matcher
        Spec::Expectations.fail_with(matcher.failure_message) unless match
        match
      end
    end

    class NegativeExpectationMatcherHandler
      def self.handle_matcher(actual, matcher, &block)
        ::Spec::Matchers.last_should = "should not"
        return Spec::Matchers::NegativeOperatorMatcher.new(actual) if matcher.nil?
        
        unless matcher.respond_to?(:matches?)
          raise InvalidMatcherError, "Expected a matcher, got #{matcher.inspect}."
        end

        unless matcher.respond_to?(:negative_failure_message)
          Spec::Expectations.fail_with(
<<-EOF
Matcher does not support should_not.
See Spec::Matchers for more information
about matchers.
EOF
)
        end
        match = matcher.matches?(actual, &block)
        ::Spec::Matchers.last_matcher = matcher
        Spec::Expectations.fail_with(matcher.negative_failure_message) if match
        match
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 2 rubygems

Version Path
dchelimsky-rspec-1.1.11.1 lib/spec/expectations/handler.rb
dchelimsky-rspec-1.1.11.2 lib/spec/expectations/handler.rb
dchelimsky-rspec-1.1.11.3 lib/spec/expectations/handler.rb
dchelimsky-rspec-1.1.11.4 lib/spec/expectations/handler.rb
dchelimsky-rspec-1.1.11.5 lib/spec/expectations/handler.rb
dchelimsky-rspec-1.1.11.6 lib/spec/expectations/handler.rb
spree-0.6.0 vendor/plugins/rspec/lib/spec/expectations/handler.rb
spree-0.7.0 vendor/plugins/rspec/lib/spec/expectations/handler.rb
spree-0.7.1 vendor/plugins/rspec/lib/spec/expectations/handler.rb
spree-0.8.0 vendor/plugins/rspec/lib/spec/expectations/handler.rb
spree-0.8.1 vendor/plugins/rspec/lib/spec/expectations/handler.rb