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