1
2
3
4
5
6
7
8
9
10
11 package ch.qos.logback.core;
12
13
14 import static org.junit.Assert.*;
15
16 import java.io.StringWriter;
17 import java.io.Writer;
18
19 import org.junit.After;
20 import org.junit.Before;
21 import org.junit.Test;
22
23 import ch.qos.logback.core.pattern.parser.SamplePatternLayout;
24
25 public class WriterAppenderTest {
26
27 Context context = new ContextBase();
28
29 @Before
30 public void setUp() throws Exception {
31 }
32
33 @After
34 public void tearDown() throws Exception {
35 }
36
37 @Test
38 public void smoke() {
39 String FILE_HEADER = "FILE_HEADER ";
40 String PRESENTATION_HEADER = "PRESENTATION_HEADER";
41 String PRESENTATION_FOOTER = "PRESENTATION_FOOTER ";
42 String FILE_FOOTER = "FILE_FOOTER";
43 headerFooterCheck(FILE_HEADER, PRESENTATION_HEADER, PRESENTATION_FOOTER, FILE_FOOTER);
44 }
45
46 @Test
47 public void nullFileHeader() {
48 String FILE_HEADER = null;
49 String PRESENTATION_HEADER = "PRESENTATION_HEADER";
50 String PRESENTATION_FOOTER = "PRESENTATION_FOOTER ";
51 String FILE_FOOTER = "FILE_FOOTER";
52 headerFooterCheck(FILE_HEADER, PRESENTATION_HEADER, PRESENTATION_FOOTER, FILE_FOOTER);
53 }
54
55 @Test
56 public void nullPresentationHeader() {
57 String FILE_HEADER = "FILE_HEADER ";
58 String PRESENTATION_HEADER = null;
59 String PRESENTATION_FOOTER = "PRESENTATION_FOOTER ";
60 String FILE_FOOTER = "FILE_FOOTER";
61 headerFooterCheck(FILE_HEADER, PRESENTATION_HEADER, PRESENTATION_FOOTER, FILE_FOOTER);
62 }
63
64 @Test
65 public void nullPresentationFooter() {
66 String FILE_HEADER = "FILE_HEADER ";
67 String PRESENTATION_HEADER = "PRESENTATION_HEADER";
68 String PRESENTATION_FOOTER = null;
69 String FILE_FOOTER = "FILE_FOOTER";
70 headerFooterCheck(FILE_HEADER, PRESENTATION_HEADER, PRESENTATION_FOOTER, FILE_FOOTER);
71 }
72
73 @Test
74 public void nullFileFooter() {
75 String FILE_HEADER = "FILE_HEADER ";
76 String PRESENTATION_HEADER = "PRESENTATION_HEADER";
77 String PRESENTATION_FOOTER = "PRESENTATION_FOOTER ";
78 String FILE_FOOTER = null;
79 headerFooterCheck(FILE_HEADER, PRESENTATION_HEADER, PRESENTATION_FOOTER, FILE_FOOTER);
80 }
81
82 public void headerFooterCheck(String fileHeader, String presentationHeader, String presentationFooter, String fileFooter) {
83 WriterAppender<Object> wa = new WriterAppender<Object>();
84 wa.setContext(context);
85 Writer sw = new StringWriter();
86
87 SamplePatternLayout<Object> spl = new SamplePatternLayout<Object>();
88 spl.setContext(context);
89
90 spl.setFileHeader(fileHeader);
91 spl.setPresentationHeader(presentationHeader);
92 spl.setPresentationFooter(presentationFooter);
93 spl.setFileFooter(fileFooter);
94
95 spl.start();
96
97 wa.setLayout(spl);
98 wa.setWriter(sw);
99 wa.start();
100
101 wa.stop();
102 String result = sw.toString();
103
104 String expectedHeader = emtptyIfNull(fileHeader) + emtptyIfNull(presentationHeader);
105 assertTrue(result, result.startsWith(expectedHeader));
106
107 String expectedFooter = emtptyIfNull(presentationFooter) + emtptyIfNull(fileFooter);
108 assertTrue(result, result.endsWith(expectedFooter));
109 }
110
111 String emtptyIfNull(String s) {
112 return s == null ? "" : s;
113 }
114 }