1   /*
2    * $Id: LogicFiltersTestCase.java 7976 2007-08-21 14:26:13Z dirk.olmes $
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSource, Inc.  All rights reserved.  http://www.mulesource.com
5    *
6    * The software in this package is published under the terms of the CPAL v1.0
7    * license, a copy of which has been included with this distribution in the
8    * LICENSE.txt file.
9    */
10  
11  package org.mule.routing.filters;
12  
13  import org.mule.impl.MuleMessage;
14  import org.mule.routing.filters.logic.AndFilter;
15  import org.mule.routing.filters.logic.NotFilter;
16  import org.mule.routing.filters.logic.OrFilter;
17  import org.mule.tck.AbstractMuleTestCase;
18  
19  public class LogicFiltersTestCase extends AbstractMuleTestCase
20  {
21  
22      public void testAndFilter()
23      {
24          AndFilter filter = new AndFilter();
25          assertNull(filter.getLeftFilter());
26          assertNull(filter.getRightFilter());
27  
28          // both null
29          assertFalse(filter.accept(new MuleMessage("foo")));
30  
31          // left set, right null
32          filter.setLeftFilter(new EqualsFilter("foo"));
33          assertFalse(filter.accept(new MuleMessage("foo")));
34  
35          // right set too, but does not accept
36          filter.setRightFilter(new EqualsFilter("foo"));
37          assertFalse(filter.accept(new MuleMessage("bar")));
38  
39          // both accept
40          filter.setRightFilter(new EqualsFilter("foo"));
41          assertTrue(filter.accept(new MuleMessage("foo")));
42  
43          WildcardFilter left = new WildcardFilter("blah.blah.*");
44          WildcardFilter right = new WildcardFilter("blah.*");
45          filter = new AndFilter(left, right);
46          assertNotNull(filter.getLeftFilter());
47          assertNotNull(filter.getRightFilter());
48  
49          assertTrue(filter.accept(new MuleMessage("blah.blah.blah")));
50          assertTrue(right.accept(new MuleMessage("blah.blah")));
51          assertTrue(!left.accept(new MuleMessage("blah.blah")));
52          assertTrue(!filter.accept(new MuleMessage("blah.blah")));
53  
54          filter = new AndFilter();
55          filter.setLeftFilter(left);
56          filter.setRightFilter(right);
57  
58          assertTrue(filter.accept(new MuleMessage("blah.blah.blah")));
59          assertTrue(!filter.accept(new MuleMessage("blah.blah")));
60      }
61  
62      public void testOrFilter()
63      {
64          OrFilter filter = new OrFilter();
65          assertNull(filter.getLeftFilter());
66          assertNull(filter.getRightFilter());
67          assertFalse(filter.accept(new MuleMessage("foo")));
68  
69          WildcardFilter left = new WildcardFilter("blah.blah.*");
70          WildcardFilter right = new WildcardFilter("blah.b*");
71          filter = new OrFilter(left, right);
72          assertNotNull(filter.getLeftFilter());
73          assertNotNull(filter.getRightFilter());
74  
75          assertTrue(filter.accept(new MuleMessage("blah.blah.blah")));
76          assertTrue(right.accept(new MuleMessage("blah.blah")));
77          assertTrue(!left.accept(new MuleMessage("blah.blah")));
78          assertTrue(filter.accept(new MuleMessage("blah.blah")));
79          assertTrue(!filter.accept(new MuleMessage("blah.x.blah")));
80  
81          filter = new OrFilter();
82          filter.setLeftFilter(left);
83          filter.setRightFilter(right);
84  
85          assertTrue(filter.accept(new MuleMessage("blah.blah.blah")));
86          assertTrue(filter.accept(new MuleMessage("blah.blah")));
87          assertTrue(!filter.accept(new MuleMessage("blah.x.blah")));
88      }
89  
90      public void testNotFilter()
91      {
92          NotFilter notFilter = new NotFilter();
93          assertNull(notFilter.getFilter());
94          assertFalse(notFilter.accept(new MuleMessage("foo")));
95          assertFalse(notFilter.accept(new MuleMessage(null)));
96  
97          WildcardFilter filter = new WildcardFilter("blah.blah.*");
98          notFilter = new NotFilter(filter);
99          assertNotNull(notFilter.getFilter());
100 
101         assertTrue(filter.accept(new MuleMessage("blah.blah.blah")));
102         assertTrue(!notFilter.accept(new MuleMessage("blah.blah.blah")));
103 
104         notFilter = new NotFilter();
105         notFilter.setFilter(filter);
106         assertTrue(filter.accept(new MuleMessage("blah.blah.blah")));
107         assertTrue(!notFilter.accept(new MuleMessage("blah.blah.blah")));
108     }
109 
110 }