class Fluent::Test::BufferedOutputTestDriver

def emit(record, time=Engine.now)

def emit(record, time=Engine.now)
  @entries << [time, record]
  self
end

def expect_format(str)

def expect_format(str)
  (@expected_buffer ||= '') << str
end

def initialize(klass, tag='test', &block)

def initialize(klass, tag='test', &block)
  super(klass, &block)
  @entries = []
  @expected_buffer = nil
  @tag = tag
  def @instance.buffer
    @buffer
  end
end

def run(num_waits = 10, &block)

def run(num_waits = 10, &block)
  result = nil
  super(num_waits) {
    block.call if block
    es = ArrayEventStream.new(@entries)
    buffer = @instance.format_stream(@tag, es)
    if @expected_buffer
      assert_equal(@expected_buffer, buffer)
    end
    chunk = if @instance.instance_eval{ @chunk_key_tag }
              @instance.buffer.generate_chunk(@instance.metadata(@tag, nil, nil)).staged!
            else
              @instance.buffer.generate_chunk(@instance.metadata(nil, nil, nil)).staged!
            end
    chunk.concat(buffer, es.size)
    begin
      result = @instance.write(chunk)
    ensure
      chunk.purge
    end
  }
  result
end