Sha256: 432a195ecbda648e676b650ec3ea96bec44e5c2e47ff8014c6d88966f0cee828
Contents?: true
Size: 1.46 KB
Versions: 1
Compression:
Stored size: 1.46 KB
Contents
module Spec module Matchers class OperatorMatcher def initialize(actual) @actual = actual end ['==','===','<','<=','>=','>','=~'].each do |operator| define_method operator do |expected| ::Spec::Matchers.last_matcher = self @operator, @expected = operator, expected __delegate_operator(@actual, operator, expected) end end def fail_with_message(message) Spec::Expectations.fail_with(message, @expected, @actual) end def description "#{@operator} #{@expected.inspect}" end end class PositiveOperatorMatcher < OperatorMatcher #:nodoc: def __delegate_operator(actual, operator, expected) return true if actual.__send__(operator, expected) if ['==','===', '=~'].include?(operator) fail_with_message("expected: #{expected.inspect},\n got: #{actual.inspect} (using #{operator})") else fail_with_message("expected: #{operator} #{expected.inspect},\n got: #{operator.gsub(/./, ' ')} #{actual.inspect}") end end end class NegativeOperatorMatcher < OperatorMatcher #:nodoc: def __delegate_operator(actual, operator, expected) return true unless actual.__send__(operator, expected) return fail_with_message("expected not: #{operator} #{expected.inspect},\n got: #{operator.gsub(/./, ' ')} #{actual.inspect}") end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
dchelimsky-rspec-1.1.11.1 | lib/spec/matchers/operator_matcher.rb |