class Cheffish::RSpec::Matchers::PartiallyMatch

Public Class Methods

new(example, expected) click to toggle source
# File lib/cheffish/rspec/matchers/partially_match.rb, line 7
def initialize(example, expected)
  @example = example
  @expected = expected
end

Public Instance Methods

failure_message() click to toggle source
# File lib/cheffish/rspec/matchers/partially_match.rb, line 17
def failure_message
  "expected #{@actual} to match #{@expected}"
end
failure_message_when_negated() click to toggle source
# File lib/cheffish/rspec/matchers/partially_match.rb, line 21
def failure_message_when_negated
  "expected #{@actual} not to match #{@expected}"
end
matches?(actual) click to toggle source
# File lib/cheffish/rspec/matchers/partially_match.rb, line 12
def matches?(actual)
  @actual = actual
  partially_matches_values(@expected, actual)
end

Protected Instance Methods

partially_matches_arrays(expected, actual) click to toggle source
# File lib/cheffish/rspec/matchers/partially_match.rb, line 49
def partially_matches_arrays(expected, actual)
  expected.all? { |e| actual.any? { |a| partially_matches_values(e, a) } }
end
partially_matches_hashes(expected, actual) click to toggle source
# File lib/cheffish/rspec/matchers/partially_match.rb, line 45
def partially_matches_hashes(expected, actual)
  expected.all? { |key, value| partially_matches_values(value, actual[key]) }
end
partially_matches_values(expected, actual) click to toggle source
# File lib/cheffish/rspec/matchers/partially_match.rb, line 27
def partially_matches_values(expected, actual)
  if Hash === actual
    return partially_matches_hashes(expected, actual) if Hash === expected || Array === expected
  elsif Array === expected && Enumerable === actual && !(Struct === actual)
    return partially_matches_arrays(expected, actual)
  end

  return true if actual == expected

  begin
    expected === actual
  rescue ArgumentError
    # Some objects, like 0-arg lambdas on 1.9+, raise
    # ArgumentError for `expected === actual`.
    false
  end
end