1   /**
2    * LOGBack: the reliable, fast and flexible logging library for Java.
3    *
4    * Copyright (C) 1999-2006, QOS.ch
5    *
6    * This library is free software, you can redistribute it and/or
7    * modify it under the terms of the GNU Lesser General Public License as
8    * published by the Free Software Foundation.
9    */
10  package ch.qos.logback.core.appender;
11  
12  
13  import static org.junit.Assert.assertFalse;
14  import static org.junit.Assert.assertTrue;
15  
16  import org.junit.Test;
17  
18  import ch.qos.logback.core.AppenderBase;
19  import ch.qos.logback.core.Context;
20  import ch.qos.logback.core.ContextBase;
21  import ch.qos.logback.core.status.StatusChecker;
22  
23  
24  
25  abstract public class AbstractAppenderTest<E>  {
26    
27    
28    abstract protected AppenderBase<E> getAppender();
29    abstract protected AppenderBase<E> getConfiguredAppender();
30  
31    @Test
32    public void testNewAppender() {
33      // new appenders should be inactive
34      AppenderBase appender = getAppender();
35      assertFalse( appender.isStarted()); 
36    }
37    
38    @Test
39    public void testConfiguredAppender() {
40      AppenderBase appender = getConfiguredAppender();
41      appender.start();
42      assertTrue(appender.isStarted());
43     
44      appender.stop();
45      assertFalse(appender.isStarted());
46      
47    }
48    
49    @Test
50    public void testNoStart() {
51      AppenderBase<E> appender = getAppender();
52      Context context = new ContextBase();
53      appender.setContext(context);
54      appender.setName("doh");
55      // is null OK?
56      appender.doAppend(null);
57      StatusChecker checker = new StatusChecker(context.getStatusManager());
58      //StatusPrinter.print(context.getStatusManager());
59      assertTrue(checker.containsMatch("Attempted to append to non started appender \\[doh\\]."));
60    }
61  }
62  
63