@Test
  public void append_basic() {
    MockLoggingChannel log = new MockLoggingChannel();
    KettleLogChannelAppender appender = new KettleLogChannelAppender(log);
    Logger testLogger = Logger.getLogger(getClass());
    testLogger.setLevel(Level.ALL);
    Layout layout = new Log4jKettleLayout();

    // ALL, INFO, and WARN messages should be interpreted as "basic" messages
    @SuppressWarnings("deprecation")
    LoggingEvent infoEvent =
        new LoggingEvent("org.test", testLogger, Priority.INFO, "Testing Info", null);
    @SuppressWarnings("deprecation")
    LoggingEvent warnEvent =
        new LoggingEvent("org.test", testLogger, Priority.WARN, "Testing Warning", null);
    @SuppressWarnings("deprecation")
    LoggingEvent allEvent =
        new LoggingEvent(
            "org.test", testLogger, Priority.toPriority(Priority.ALL_INT), "Testing All", null);
    appender.doAppend(infoEvent);
    appender.doAppend(warnEvent);
    appender.doAppend(allEvent);

    assertEquals(0, log.getDebugMessages().size());
    assertEquals(0, log.getDetailedMessages().size());
    assertEquals(0, log.getErrorMessages().size());
    assertEquals(0, log.getMinimalMessages().size());
    assertEquals(0, log.getRowLevelMessages().size());

    assertEquals(3, log.getBasicMessages().size());
    assertEquals(layout.format(infoEvent), log.getBasicMessages().get(0).getMessage());
    assertEquals(layout.format(warnEvent), log.getBasicMessages().get(1).getMessage());
    assertEquals(layout.format(allEvent), log.getBasicMessages().get(2).getMessage());
  }
  @Test
  public void append_debug() {
    MockLoggingChannel log = new MockLoggingChannel();
    KettleLogChannelAppender appender = new KettleLogChannelAppender(log);
    Logger testLogger = Logger.getLogger(getClass());
    testLogger.setLevel(Level.ALL);

    // DEBUG messages should be interpreted as "debug" messages
    Layout layout = new Log4jKettleLayout();
    @SuppressWarnings("deprecation")
    LoggingEvent event =
        new LoggingEvent("org.test", testLogger, Priority.DEBUG, "debug test!", null);

    appender.doAppend(event);
    assertEquals(0, log.getBasicMessages().size());
    assertEquals(0, log.getDetailedMessages().size());
    assertEquals(0, log.getErrorMessages().size());
    assertEquals(0, log.getMinimalMessages().size());
    assertEquals(0, log.getRowLevelMessages().size());

    assertEquals(1, log.getDebugMessages().size());
    assertEquals(layout.format(event), log.getDebugMessages().get(0).getMessage());
  }
  @Test
  public void append_error() {
    MockLoggingChannel log = new MockLoggingChannel();
    KettleLogChannelAppender appender = new KettleLogChannelAppender(log);
    Logger testLogger = Logger.getLogger(getClass());
    testLogger.setLevel(Level.ALL);

    // ERROR and FATAL map to "error" messages
    Layout layout = new Log4jKettleLayout();
    @SuppressWarnings("deprecation")
    LoggingEvent errorEvent1 =
        new LoggingEvent("org.test", testLogger, Priority.ERROR, "Testing", null);
    Exception errorException = new Exception("something went wrong!");
    @SuppressWarnings("deprecation")
    LoggingEvent errorEvent2 =
        new LoggingEvent("org.test", testLogger, Priority.ERROR, "Testing", errorException);
    @SuppressWarnings("deprecation")
    LoggingEvent fatalEvent1 =
        new LoggingEvent("org.test", testLogger, Priority.FATAL, "Testing", null);
    Exception fatalException = new Exception("something went fatally wrong!");
    @SuppressWarnings("deprecation")
    LoggingEvent fatalEvent2 =
        new LoggingEvent("org.test", testLogger, Priority.FATAL, "Testing", fatalException);

    appender.doAppend(errorEvent1);
    appender.doAppend(errorEvent2);
    appender.doAppend(fatalEvent1);
    appender.doAppend(fatalEvent2);

    assertEquals(0, log.getDebugMessages().size());
    assertEquals(0, log.getDetailedMessages().size());
    assertEquals(0, log.getBasicMessages().size());
    assertEquals(0, log.getMinimalMessages().size());
    assertEquals(0, log.getRowLevelMessages().size());

    assertEquals(4, log.getErrorMessages().size());
    assertEquals(layout.format(errorEvent1), log.getErrorMessages().get(0).getMessage());
    assertEquals(layout.format(errorEvent1), log.getErrorMessages().get(1).getMessage());
    assertEquals(errorException, log.getErrorMessages().get(1).getThrowable());
    assertEquals(layout.format(fatalEvent1), log.getErrorMessages().get(2).getMessage());
    assertEquals(layout.format(fatalEvent2), log.getErrorMessages().get(3).getMessage());
    assertEquals(fatalException, log.getErrorMessages().get(3).getThrowable());
  }