lib/muack/mock.rb in muack-1.3.2 vs lib/muack/mock.rb in muack-1.4.0

- old
+ new

@@ -59,18 +59,11 @@ else Mock.__send__(:raise, # Wrong argument Unexpected.new(object, [defi], msg, actual_args)) end else - defis = __mock_disps[msg] - if expected = defis.find{ |d| __mock_check_args(d.args, actual_args) } - Mock.__send__(:raise, # Too many times - Expected.new(object, expected, defis.size, defis.size+1)) - else - Mock.__send__(:raise, # Wrong argument - Unexpected.new(object, defis, msg, actual_args)) - end + __mock_failed(msg, actual_args) end end # used for mocked object to dispatch mocked method def __mock_dispatch_call context, disp, actual_args, actual_block, &_yield @@ -176,10 +169,21 @@ end } target.__send__(privilege, defi.msg) end + # used for __mock_dispatch + def __mock_failed msg, actual_args, disps=__mock_disps[msg] + if expected = __mock_find_checked_difi(disps, actual_args) + Mock.__send__(:raise, # Too many times + Expected.new(object, expected, disps.size, disps.size+1)) + else + Mock.__send__(:raise, # Wrong argument + Unexpected.new(object, disps, msg, actual_args)) + end + end + # used for __mock_dispatch_call def __mock_block_call context, block, actual_args, actual_block, splat return unless block # for AnyInstanceOf, we don't have the actual context at the time # we're defining it, so we update it here @@ -187,9 +191,13 @@ if splat block.call(*actual_args, &actual_block) else # peek_return doesn't need splat block.call(actual_args, &actual_block) end + end + + def __mock_find_checked_difi defis, actual_args, meth=:find + defis.public_send(meth){ |d| __mock_check_args(d.args, actual_args) } end def __mock_check_args expected_args, actual_args if expected_args == [WithAnyArgs] true