class Mocha::ParametersMatcher
def initialize(expected_parameters = [ParameterMatchers::AnyParameters.new], expectation = nil, &matching_block)
def initialize(expected_parameters = [ParameterMatchers::AnyParameters.new], expectation = nil, &matching_block) @expected_parameters = expected_parameters @expectation = expectation @matching_block = matching_block end
def match?(actual_parameters = [])
def match?(actual_parameters = []) if @matching_block @matching_block.call(*actual_parameters) else parameters_match?(actual_parameters) end end
def matchers
def matchers @expected_parameters.map.with_index do |parameter, index| parameter.to_matcher( expectation: @expectation, top_level: true, last: index == @expected_parameters.length - 1 ) end end
def mocha_inspect
def mocha_inspect if @matching_block '(arguments_accepted_by_custom_matching_block)' else signature = matchers.mocha_inspect signature = signature.gsub(/^\[|\]$/, '') "(#{signature})" end end
def parameters_match?(actual_parameters)
def parameters_match?(actual_parameters) matchers.all? { |matcher| matcher.matches?(actual_parameters) } && actual_parameters.empty? end