1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    *
9    *      http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  
18  package org.apache.log4j.pattern;
19  
20  import junit.framework.TestCase;
21  
22  
23  /**
24   * Tests for NameAbbrevator.
25   *
26   */
27  public class NameAbbreviatorTest extends TestCase {
28    /**
29     * Create a new instance.
30     *
31     * @param name test name
32     */
33    public NameAbbreviatorTest(final String name) {
34      super(name);
35    }
36  
37    /**
38     * Check that getDefaultAbbreviator does not return null.
39     *
40     */
41    public void testGetDefault() {
42      NameAbbreviator abbrev = NameAbbreviator.getDefaultAbbreviator();
43      assertNotNull(abbrev);
44    }
45  
46    /**
47     * Check that "0" drops all name content.
48     *
49     */
50    public void testZero() {
51      NameAbbreviator abbrev = NameAbbreviator.getAbbreviator("0");
52      StringBuffer buf = new StringBuffer("DEBUG - ");
53      int fieldStart = buf.length();
54      buf.append("org.example.foo.bar");
55      abbrev.abbreviate(fieldStart, buf);
56      assertEquals("DEBUG - ", buf.toString());
57    }
58  
59    /**
60     * Check that getAbbreviator(" ") returns default abbreviator.
61     *
62     */
63    public void testBlank() {
64      NameAbbreviator abbrev = NameAbbreviator.getAbbreviator("   ");
65      NameAbbreviator defaultAbbrev = NameAbbreviator.getDefaultAbbreviator();
66      assertTrue(abbrev == defaultAbbrev);
67    }
68  
69    /**
70     * Check that getAbbreviator("1").abbreviate() drops all but the final name element.
71     *
72     */
73    public void testOne() {
74      NameAbbreviator abbrev = NameAbbreviator.getAbbreviator("1");
75      StringBuffer buf = new StringBuffer("DEBUG - ");
76      int fieldStart = buf.length();
77      buf.append("org.example.foo.bar");
78      abbrev.abbreviate(fieldStart, buf);
79      assertEquals("DEBUG - bar", buf.toString());
80  
81      buf.setLength(0);
82      buf.append("DEBUG - ");
83      fieldStart = buf.length();
84      buf.append("bar");
85      abbrev.abbreviate(fieldStart, buf);
86      assertEquals("DEBUG - bar", buf.toString());
87  
88      buf.setLength(0);
89      buf.append("DEBUG - ");
90      fieldStart = buf.length();
91      abbrev.abbreviate(fieldStart, buf);
92      assertEquals("DEBUG - ", buf.toString());
93    }
94  
95    /**
96     * Check that blanks are trimmed in evaluating abbreviation pattern.
97     */
98    public void testBlankOne() {
99      NameAbbreviator abbrev = NameAbbreviator.getAbbreviator(" 1 ");
100     StringBuffer buf = new StringBuffer("DEBUG - ");
101     int fieldStart = buf.length();
102     buf.append("org.example.foo.bar");
103     abbrev.abbreviate(fieldStart, buf);
104     assertEquals("DEBUG - bar", buf.toString());
105 
106     buf.setLength(0);
107     buf.append("DEBUG - ");
108     fieldStart = buf.length();
109     buf.append("bar");
110     abbrev.abbreviate(fieldStart, buf);
111     assertEquals("DEBUG - bar", buf.toString());
112 
113     buf.setLength(0);
114     buf.append("DEBUG - ");
115     fieldStart = buf.length();
116     abbrev.abbreviate(fieldStart, buf);
117     assertEquals("DEBUG - ", buf.toString());
118   }
119 
120   /**
121    * Check that getAbbreviator("2").abbreviate drops all but the last two elements.
122    *
123    */
124   public void testTwo() {
125     NameAbbreviator abbrev = NameAbbreviator.getAbbreviator("2");
126     StringBuffer buf = new StringBuffer("DEBUG - ");
127     int fieldStart = buf.length();
128     buf.append("org.example.foo.bar");
129     abbrev.abbreviate(fieldStart, buf);
130     assertEquals("DEBUG - foo.bar", buf.toString());
131 
132     buf.setLength(0);
133     buf.append("DEBUG - ");
134     fieldStart = buf.length();
135     buf.append("foo.bar");
136     abbrev.abbreviate(fieldStart, buf);
137     assertEquals("DEBUG - foo.bar", buf.toString());
138 
139     buf.setLength(0);
140     buf.append("DEBUG - ");
141     fieldStart = buf.length();
142     buf.append("bar");
143     abbrev.abbreviate(fieldStart, buf);
144     assertEquals("DEBUG - bar", buf.toString());
145   }
146 
147   /**
148    * Check that getAbbreviator("1.").abbreviate abbreviates non-final elements
149    * to one character.
150    *
151    */
152   public void testOneDot() {
153     NameAbbreviator abbrev = NameAbbreviator.getAbbreviator("1.");
154     StringBuffer buf = new StringBuffer("DEBUG - ");
155     int fieldStart = buf.length();
156     buf.append("org.example.foo.bar");
157     abbrev.abbreviate(fieldStart, buf);
158     assertEquals("DEBUG - o.e.f.bar", buf.toString());
159 
160     buf.setLength(0);
161     buf.append("DEBUG - ");
162     fieldStart = buf.length();
163     buf.append("org.example.foo.");
164     abbrev.abbreviate(fieldStart, buf);
165     assertEquals("DEBUG - o.e.f.", buf.toString());
166 
167 
168     buf.setLength(0);
169     buf.append("DEBUG - ");
170     fieldStart = buf.length();
171     buf.append("foo.bar");
172     abbrev.abbreviate(fieldStart, buf);
173     assertEquals("DEBUG - f.bar", buf.toString());
174 
175     buf.setLength(0);
176     buf.append("DEBUG - ");
177     fieldStart = buf.length();
178     buf.append("bar");
179     abbrev.abbreviate(fieldStart, buf);
180     assertEquals("DEBUG - bar", buf.toString());
181 
182     buf.setLength(0);
183     buf.append("DEBUG - ");
184     fieldStart = buf.length();
185     abbrev.abbreviate(fieldStart, buf);
186     assertEquals("DEBUG - ", buf.toString());
187 
188     buf.setLength(0);
189     buf.append("DEBUG - ");
190     fieldStart = buf.length();
191     buf.append(".");
192     abbrev.abbreviate(fieldStart, buf);
193     assertEquals("DEBUG - .", buf.toString());
194   }
195 
196   /**
197    * Check that getAbbreviator("1~.").abbreviate abbreviates non-final elements
198    * to one character and a tilde.
199    *
200    */
201   public void testOneTildeDot() {
202     NameAbbreviator abbrev = NameAbbreviator.getAbbreviator("1~.");
203     StringBuffer buf = new StringBuffer("DEBUG - ");
204     int fieldStart = buf.length();
205     buf.append("org.example.foo.bar");
206     abbrev.abbreviate(fieldStart, buf);
207     assertEquals("DEBUG - o~.e~.f~.bar", buf.toString());
208 
209     buf.setLength(0);
210     buf.append("DEBUG - ");
211     fieldStart = buf.length();
212     buf.append("org.example.foo.");
213     abbrev.abbreviate(fieldStart, buf);
214     assertEquals("DEBUG - o~.e~.f~.", buf.toString());
215 
216     buf.setLength(0);
217     buf.append("DEBUG - ");
218     fieldStart = buf.length();
219     buf.append("foo.bar");
220     abbrev.abbreviate(fieldStart, buf);
221     assertEquals("DEBUG - f~.bar", buf.toString());
222 
223     buf.setLength(0);
224     buf.append("DEBUG - ");
225     fieldStart = buf.length();
226     buf.append("bar");
227     abbrev.abbreviate(fieldStart, buf);
228     assertEquals("DEBUG - bar", buf.toString());
229 
230     buf.setLength(0);
231     buf.append("DEBUG - ");
232     fieldStart = buf.length();
233     abbrev.abbreviate(fieldStart, buf);
234     assertEquals("DEBUG - ", buf.toString());
235 
236 
237     buf.setLength(0);
238     buf.append("DEBUG - ");
239     fieldStart = buf.length();
240     buf.append(".");
241     abbrev.abbreviate(fieldStart, buf);
242     assertEquals("DEBUG - .", buf.toString());
243 
244 
245     buf.setLength(0);
246     buf.append("DEBUG - ");
247     fieldStart = buf.length();
248     buf.append("o.e.f.bar");
249     abbrev.abbreviate(fieldStart, buf);
250     assertEquals("DEBUG - o.e.f.bar", buf.toString());
251   }
252 
253   /**
254    * Check that getAbbreviator("1.*.2").abbreviate drops all but the first
255    * character from the first element, uses all of the second element and
256    * drops all but the first two characters of the rest of the non-final elements.
257    *
258    */
259   public void testMulti() {
260     NameAbbreviator abbrev = NameAbbreviator.getAbbreviator("1.*.2");
261     StringBuffer buf = new StringBuffer("DEBUG - ");
262     int fieldStart = buf.length();
263     buf.append("org.example.foo.bar");
264     abbrev.abbreviate(fieldStart, buf);
265     assertEquals("DEBUG - o.example.fo.bar", buf.toString());
266 
267     buf.setLength(0);
268     buf.append("DEBUG - ");
269     fieldStart = buf.length();
270     buf.append("org.example.foo.");
271     abbrev.abbreviate(fieldStart, buf);
272     assertEquals("DEBUG - o.example.fo.", buf.toString());
273 
274     buf.setLength(0);
275     buf.append("DEBUG - ");
276     fieldStart = buf.length();
277     buf.append("foo.bar");
278     abbrev.abbreviate(fieldStart, buf);
279     assertEquals("DEBUG - f.bar", buf.toString());
280 
281     buf.setLength(0);
282     buf.append("DEBUG - ");
283     fieldStart = buf.length();
284     buf.append("bar");
285     abbrev.abbreviate(fieldStart, buf);
286     assertEquals("DEBUG - bar", buf.toString());
287 
288     buf.setLength(0);
289     buf.append("DEBUG - ");
290     fieldStart = buf.length();
291     abbrev.abbreviate(fieldStart, buf);
292     assertEquals("DEBUG - ", buf.toString());
293 
294     buf.setLength(0);
295     buf.append("DEBUG - ");
296     fieldStart = buf.length();
297     buf.append(".");
298     abbrev.abbreviate(fieldStart, buf);
299     assertEquals("DEBUG - .", buf.toString());
300   }
301 
302   /**
303    * Check that getAbbreviator("-1").abbreviate() drops first name element.
304    *
305    */
306   public void testMinusOne() {
307     NameAbbreviator abbrev = NameAbbreviator.getAbbreviator("-1");
308     StringBuffer buf = new StringBuffer("DEBUG - ");
309     int fieldStart = buf.length();
310     buf.append("org.example.foo.bar");
311     abbrev.abbreviate(fieldStart, buf);
312     assertEquals("DEBUG - example.foo.bar", buf.toString());
313 
314     buf.setLength(0);
315     buf.append("DEBUG - ");
316     fieldStart = buf.length();
317     buf.append("bar");
318     abbrev.abbreviate(fieldStart, buf);
319     assertEquals("DEBUG - bar", buf.toString());
320 
321     buf.setLength(0);
322     buf.append("DEBUG - ");
323     fieldStart = buf.length();
324     abbrev.abbreviate(fieldStart, buf);
325     assertEquals("DEBUG - ", buf.toString());
326 
327     buf.setLength(0);
328     buf.append("DEBUG - ");
329     fieldStart = buf.length();
330     buf.append(".");
331     abbrev.abbreviate(fieldStart, buf);
332     assertEquals("DEBUG - ", buf.toString());
333 
334   }
335 
336 }