def assert(object=NOT_SPECIFIED, message=nil, &block)
_wrap_assertion do
have_object = !NOT_SPECIFIED.equal?(object)
if block
message = object if have_object
if defined?(PowerAssert)
PowerAssert.start(block, :assertion_method => __callee__) do |pa|
pa_message = AssertionMessage.delayed_literal(&pa.message_proc)
assertion_message = build_message(message, "?", pa_message)
assert_block(assertion_message) do
pa.yield
end
end
else
assert(yield, message)
end
else
unless have_object
raise ArgumentError, "wrong number of arguments (0 for 1..2)"
end
assertion_message = nil
case message
when nil, String, Proc
when AssertionMessage
assertion_message = message
else
error_message = "assertion message must be String, Proc or "
error_message += "#{AssertionMessage}: "
error_message += "<#{message.inspect}>(<#{message.class}>)"
raise ArgumentError, error_message, filter_backtrace(caller)
end
assertion_message ||= build_message(message,
"<?> is not true.",
object)
assert_block(assertion_message) do
object
end
end
end
end