View Javadoc

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  package org.apache.log4j.filter;
18  
19  import junit.framework.TestCase;
20  import org.apache.log4j.Level;
21  import org.apache.log4j.Logger;
22  import org.apache.log4j.spi.Filter;
23  import org.apache.log4j.spi.LoggingEvent;
24  
25  
26  /***
27   * Unit tests for AndFilter.
28   */
29  public class AndFilterTest extends TestCase {
30  
31      /***
32       * Create new test instance.
33       *
34       * @param name test name.
35       */
36      public AndFilterTest(final String name) {
37          super(name);
38      }
39  
40      /***
41       * Check that AndFilter.decide() returns Filter.ACCEPT if no filters added.
42       */
43      public void test1() {
44          LoggingEvent event = new LoggingEvent("org.apache.log4j.Logger",
45                  Logger.getLogger(AndFilterTest.class),
46                  System.currentTimeMillis(), Level.INFO, "Hello, World", null);
47          Filter filter = new AndFilter();
48          filter.activateOptions();
49          assertEquals(Filter.ACCEPT, filter.decide(event));
50      }
51  
52      /***
53       * Check that AndFilter.decide() returns Filter.ACCEPT if
54       *    only nested filter returns Filter.ACCEPT.
55       */
56      public void test2() {
57          LoggingEvent event = new LoggingEvent("org.apache.log4j.Logger",
58                  Logger.getLogger(AndFilterTest.class),
59                  System.currentTimeMillis(), Level.INFO, "Hello, World", null);
60          AndFilter filter = new AndFilter();
61          LevelMatchFilter filter1 = new LevelMatchFilter();
62          filter1.setLevelToMatch("info");
63          filter1.activateOptions();
64          filter.addFilter(filter1);
65          filter.activateOptions();
66          assertEquals(Filter.ACCEPT, filter.decide(event));
67      }
68  
69      /***
70       * Check that AndFilter.decide() returns Filter.ACCEPT if
71       *    two nested filters return Filter.ACCEPT.
72       */
73      public void test3() {
74          LoggingEvent event = new LoggingEvent("org.apache.log4j.Logger",
75                  Logger.getLogger(AndFilterTest.class),
76                  System.currentTimeMillis(), Level.INFO, "Hello, World", null);
77          AndFilter filter = new AndFilter();
78          LevelMatchFilter filter1 = new LevelMatchFilter();
79          filter1.setLevelToMatch("info");
80          filter1.activateOptions();
81          filter.addFilter(filter1);
82          LevelMatchFilter filter2 = new LevelMatchFilter();
83          filter2.setLevelToMatch("info");
84          filter2.activateOptions();
85          filter.addFilter(filter2);
86          filter.activateOptions();
87          assertEquals(Filter.ACCEPT, filter.decide(event));
88      }
89  
90      /***
91       * Check that AndFilter.decide() returns Filter.DENY if
92       *    only nested filter returns Filter.ACCEPT
93       *    and acceptOnMatch is false.
94       */
95      public void test4() {
96          LoggingEvent event = new LoggingEvent("org.apache.log4j.Logger",
97                  Logger.getLogger(AndFilterTest.class),
98                  System.currentTimeMillis(), Level.INFO, "Hello, World", null);
99          AndFilter filter = new AndFilter();
100         LevelMatchFilter filter1 = new LevelMatchFilter();
101         filter1.setLevelToMatch("info");
102         filter1.activateOptions();
103         filter.addFilter(filter1);
104         filter.setAcceptOnMatch(false);
105         filter.activateOptions();
106         assertEquals(Filter.DENY, filter.decide(event));
107     }
108 
109     /***
110      * Check that AndFilter.decide() returns Filter.NEUTRAL if
111      *    nested filters return Filter.ACCEPT and Filter.DENY.
112      */
113     public void test5() {
114         LoggingEvent event = new LoggingEvent("org.apache.log4j.Logger",
115                 Logger.getLogger(AndFilterTest.class),
116                 System.currentTimeMillis(), Level.INFO, "Hello, World", null);
117         AndFilter filter = new AndFilter();
118         LevelMatchFilter filter1 = new LevelMatchFilter();
119         filter1.setLevelToMatch("info");
120         filter1.activateOptions();
121         filter.addFilter(filter1);
122         Filter filter2 = new DenyAllFilter();
123         filter2.activateOptions();
124         filter.addFilter(filter2);
125         filter.activateOptions();
126         assertEquals(Filter.NEUTRAL, filter.decide(event));
127     }
128 
129     /***
130      * Check that AndFilter.decide() returns Filter.NEUTRAL if
131      *    nested filters return Filter.ACCEPT and Filter.NEUTRAL.
132      */
133     public void test6() {
134         LoggingEvent event = new LoggingEvent("org.apache.log4j.Logger",
135                 Logger.getLogger(AndFilterTest.class),
136                 System.currentTimeMillis(), Level.INFO, "Hello, World", null);
137         AndFilter filter = new AndFilter();
138         LevelMatchFilter filter1 = new LevelMatchFilter();
139         filter1.setLevelToMatch("info");
140         filter1.activateOptions();
141         filter.addFilter(filter1);
142         Filter filter2 = new StringMatchFilter();
143         filter2.activateOptions();
144         filter.addFilter(filter2);
145         filter.activateOptions();
146         assertEquals(Filter.NEUTRAL, filter.decide(event));
147     }
148 
149 }
150