module SemanticLogger::Test::Minitest

def assert_semantic_logger_entry(event, name, expected, actual = event.send(name))

def assert_semantic_logger_entry(event, name, expected, actual = event.send(name))
  return if expected.nil?
  case expected
  when :nil
    assert_nil actual, "Expected nil #{name} for log event: #{event.to_h.inspect}"
  when Class
    assert actual.is_a?(expected), lambda {
      "Type #{expected} expected for #{name} in log event: #{event.to_h.inspect}"
    }
  else
    assert_equal expected, actual, "Mismatched #{name} for log event: #{event.to_h.inspect}"
  end
end