# File lib/test/unit/assertions.rb, line 129
      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