1
2
3
4
5
6
7 package org.mule.config;
8
9 import org.mule.DefaultMuleMessage;
10 import org.mule.api.MuleMessage;
11 import org.mule.api.routing.filter.Filter;
12 import org.mule.config.expression.ExpressionFilterParser;
13 import org.mule.routing.filters.ExpressionFilter;
14 import org.mule.routing.filters.logic.AndFilter;
15 import org.mule.tck.junit4.AbstractMuleContextTestCase;
16
17 import org.junit.Test;
18
19 import static org.junit.Assert.assertEquals;
20 import static org.junit.Assert.assertFalse;
21 import static org.junit.Assert.assertNotNull;
22 import static org.junit.Assert.assertTrue;
23
24 public class FilterExpressionParserTestCase extends AbstractMuleContextTestCase
25 {
26 @Test
27 public void testSimpleFilters() throws Exception
28 {
29 ExpressionFilterParser parser = new ExpressionFilterParser();
30 Filter f = parser.parseFilterString("#[regex:foo bar]");
31 assertNotNull(f);
32 assertTrue(f instanceof ExpressionFilter);
33
34 MuleMessage message = new DefaultMuleMessage("foo bar baz", muleContext);
35 assertTrue(f.accept(message));
36
37
38 f = parser.parseFilterString("#[regex:.* bar] AND #[wildcard:foo*]");
39 assertNotNull(f);
40 assertTrue(f instanceof AndFilter);
41 assertEquals(2, ((AndFilter)f).getFilters().size());
42 assertTrue(((AndFilter)f).getFilters().get(0) instanceof ExpressionFilter);
43 assertEquals("regex", ((ExpressionFilter)((AndFilter)f).getFilters().get(0)).getEvaluator());
44 assertTrue(((AndFilter)f).getFilters().get(1) instanceof ExpressionFilter);
45 assertEquals("wildcard", ((ExpressionFilter)((AndFilter)f).getFilters().get(1)).getEvaluator());
46
47 message = new DefaultMuleMessage("foo bar", muleContext);
48 assertTrue(f.accept(message));
49
50 message = new DefaultMuleMessage("foo car", muleContext);
51 assertFalse(f.accept(message));
52
53 f = parser.parseFilterString("#[regex:.* bar] OR #[wildcard:foo*]");
54 assertNotNull(f);
55
56 message = new DefaultMuleMessage("foo bar", muleContext);
57 assertTrue(f.accept(message));
58
59 message = new DefaultMuleMessage("foo car", muleContext);
60 assertTrue(f.accept(message));
61 }
62 }