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