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