require "#{File.dirname(__FILE__)}/test_setup"
require 'gauge/log_reader'
require 'stringio'

class LogReaderTest < Test::Unit::TestCase
  FIXTURES = "#{File.dirname(__FILE__)}/fixtures"

  def test_when_log_file_absent
    reader = nil
    assert_nothing_raised do
      reader = Gauge::LogReader.new(:bogus, "#{FIXTURES}/logger/pristine",
        :number => 0)
    end
    assert_nil reader.next_record
  end

  def test_read_record
    now = Time.now
    data = record(now)
    io = StringIO.new(data)
    reader = Gauge::LogReader.new(:test, io)
    record = reader.next_record
    assert_not_nil record
    assert_equal now.to_f, record.time
    assert_equal $$, record.pid
    assert_equal :test, record.name
    assert_equal "demo", record.data
    assert_nil reader.next_record
  end

  private

    def record(now = Time.now)
      [21, now.to_f, $$, 4, "test", "demo"].pack("NGNCa*a*")
    end
end
