1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
require 'mocha/inspect'
require 'mocha/parameter_matchers'
module Mocha
class ParametersMatcher
def initialize(expected_parameters = [ParameterMatchers::AnyParameters.new], &matching_block)
@expected_parameters, @matching_block = expected_parameters, matching_block
end
def match?(actual_parameters = [])
if @matching_block
return @matching_block.call(*actual_parameters)
else
return parameters_match?(actual_parameters)
end
end
def parameters_match?(actual_parameters)
matchers.all? { |matcher| matcher.matches?(actual_parameters) } && (actual_parameters.length == 0)
end
def mocha_inspect
signature = matchers.mocha_inspect
signature = signature.gsub(/^\[|\]$/, '')
signature = signature.gsub(/^\{|\}$/, '') if matchers.length == 1
"(#{signature})"
end
def matchers
@expected_parameters.map { |parameter| parameter.to_matcher }
end
end
end
|