1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.log4j;
19
20 import org.apache.log4j.spi.LoggingEvent;
21
22
23 /***
24 * Test for PatternLayout.
25 *
26 * @author Curt Arnold
27 */
28 public class PatternLayoutTest extends LayoutTest {
29 /***
30 * Construct new instance of PatternLayoutTest.
31 *
32 * @param testName test name.
33 */
34 public PatternLayoutTest(final String testName) {
35 super(testName, "text/plain", true, null, null);
36 }
37
38 /***
39 * @{inheritDoc}
40 */
41 protected Layout createLayout() {
42 return new PatternLayout("[%t] %p %c - %m%n");
43 }
44
45 /***
46 * Tests format.
47 */
48 public void testFormat() {
49 Logger logger = Logger.getLogger("org.apache.log4j.LayoutTest");
50 LoggingEvent event =
51 new LoggingEvent(
52 "org.apache.log4j.Logger", logger, Level.INFO, "Hello, World", null);
53 PatternLayout layout = (PatternLayout) createLayout();
54 String result = layout.format(event);
55 StringBuffer buf = new StringBuffer(100);
56 buf.append('[');
57 buf.append(event.getThreadName());
58 buf.append("] ");
59 buf.append(event.getLevel().toString());
60 buf.append(' ');
61 buf.append(event.getLoggerName());
62 buf.append(" - ");
63 buf.append(event.getMessage());
64 buf.append(System.getProperty("line.separator"));
65 assertEquals(buf.toString(), result);
66 }
67
68 /***
69 * Tests getPatternFormat().
70 */
71 public void testGetPatternFormat() {
72 PatternLayout layout = (PatternLayout) createLayout();
73 assertEquals("[%t] %p %c - %m%n", layout.getConversionPattern());
74 }
75
76 /***
77 * Tests DEFAULT_CONVERSION_PATTERN constant.
78 */
79 public void testDefaultConversionPattern() {
80 assertEquals("%m%n", PatternLayout.DEFAULT_CONVERSION_PATTERN);
81 }
82
83 /***
84 * Tests DEFAULT_CONVERSION_PATTERN constant.
85 */
86 public void testTTCCConversionPattern() {
87 assertEquals(
88 "%r [%t] %p %c %x - %m%n", PatternLayout.TTCC_CONVERSION_PATTERN);
89 }
90
91 /***
92 * Tests buffer downsizing code path.
93 */
94 public void testFormatResize() {
95 Logger logger = Logger.getLogger("org.apache.log4j.xml.PatternLayoutTest");
96 NDC.clear();
97
98 char[] msg = new char[2000];
99
100 for (int i = 0; i < msg.length; i++) {
101 msg[i] = 'A';
102 }
103
104 LoggingEvent event1 =
105 new LoggingEvent(
106 "org.apache.log4j.Logger", logger, Level.DEBUG, new String(msg), null);
107 PatternLayout layout = (PatternLayout) createLayout();
108 String result = layout.format(event1);
109 LoggingEvent event2 =
110 new LoggingEvent(
111 "org.apache.log4j.Logger", logger, Level.WARN, "Hello, World", null);
112 result = layout.format(event2);
113 assertEquals("[", result.substring(0, 1));
114 }
115
116 /***
117 * Class to ensure that protected members are still available.
118 */
119 private static final class DerivedPatternLayout extends PatternLayout {
120 /***
121 * Constructs a new instance of DerivedPatternLayout.
122 */
123 public DerivedPatternLayout() {
124 }
125
126 /***
127 * Get BUF_SIZE.
128 * @return return initial buffer size in characters.
129 */
130 public int getBufSize() {
131 return BUF_SIZE;
132 }
133
134 /***
135 * Get MAX_CAPACITY.
136 * @return maximum capacity in characters.
137 */
138 public int getMaxCapacity() {
139 return MAX_CAPACITY;
140 }
141 }
142 }