# frozen_string_literal: true

class FakeLogger
  attr_reader :debugs, :infos, :warnings, :errors, :fatals, :severities
  attr_accessor :level

  def initialize
    @debugs = []
    @infos = []
    @warnings = []
    @errors = []
    @fatals = []
    @level = Logger::DEBUG
    @severities = { 0 => :debugs, 1 => :infos, 2 => :warnings, 3 => :errors, 4 => :fatals }
  end

  def debug(message = nil)
    @debugs << message
  end

  def debug?
    @level <= Logger::DEBUG
  end

  def info(message = nil)
    @infos << message
  end

  def info?
    @level <= Logger::INFO
  end

  def warn(message = nil)
    @warnings << message
  end

  def warn?
    @level <= Logger::WARN
  end

  def error(message = nil)
    @errors << message
  end

  def error?
    @level <= Logger::ERROR
  end

  def fatal(message = nil)
    @fatals << message
  end

  def fatal?
    @level <= Logger::FATAL
  end

  def formatter
  end

  def add(severity, message = nil, progname = nil)
    public_send(severities[severity]) << message
  end

  def broadcasts
    [self]
  end
end