1
2
3
4
5
6
7 package org.mule.routing.filters;
8
9 import org.mule.DefaultMuleMessage;
10 import org.mule.api.MuleContext;
11 import org.mule.api.MuleMessage;
12 import org.mule.api.config.MuleConfiguration;
13 import org.mule.api.config.MuleProperties;
14 import org.mule.tck.junit4.AbstractMuleTestCase;
15
16 import java.util.regex.Pattern;
17
18 import org.junit.Test;
19
20 import static org.junit.Assert.assertEquals;
21 import static org.junit.Assert.assertFalse;
22 import static org.junit.Assert.assertNotNull;
23 import static org.junit.Assert.assertNull;
24 import static org.junit.Assert.assertTrue;
25 import static org.mockito.Mockito.mock;
26 import static org.mockito.Mockito.when;
27
28 public class RegExFilterTestCase extends AbstractMuleTestCase
29 {
30 private static final String PATTERN = "(.*) brown fox";
31
32 @Test
33 public void testRegexFilterNoPattern()
34 {
35
36 RegExFilter filter = new RegExFilter();
37 assertNull(filter.getPattern());
38 assertFalse(filter.accept("No tengo dinero"));
39
40
41 filter.setPattern("(.*) brown fox");
42 assertTrue(filter.accept("The quick brown fox"));
43
44
45 filter.setPattern(null);
46 assertFalse(filter.accept("oh-oh"));
47 }
48
49 @Test
50 public void testRegexFilter()
51 {
52 RegExFilter filter = new RegExFilter("The quick (.*)");
53 assertNotNull(filter.getPattern());
54
55 assertTrue(filter.accept("The quick brown fox"));
56 assertTrue(filter.accept("The quick "));
57
58 assertFalse(filter.accept("The quickbrown fox"));
59 assertFalse(filter.accept("he quick brown fox"));
60
61 filter.setPattern("(.*) brown fox");
62 assertTrue(filter.accept("The quick brown fox"));
63 assertTrue(filter.accept(" brown fox"));
64
65 assertFalse(filter.accept("The quickbrown fox"));
66 assertFalse(filter.accept("The quick brown fo"));
67
68 filter.setPattern("(.*) brown (.*)");
69 assertTrue(filter.accept("The quick brown fox"));
70 assertTrue(filter.accept("(.*) brown fox"));
71
72 assertFalse(filter.accept("The quickbrown fox"));
73 assertTrue(filter.accept("The quick brown fo"));
74
75 filter.setPattern("(.*)");
76 assertTrue(filter.accept("The quick brown fox"));
77 }
78
79 @Test
80 public void testNullInput()
81 {
82 RegExFilter filter = new RegExFilter("The quick (.*)");
83 assertNotNull(filter.getPattern());
84 assertFalse(filter.accept((Object) null));
85 }
86
87 @Test
88 public void testMuleMessageInput()
89 {
90 RegExFilter filter = new RegExFilter("The quick (.*)");
91 assertNotNull(filter.getPattern());
92
93 MuleConfiguration muleConfiguration = mock(MuleConfiguration.class);
94 when(muleConfiguration.isCacheMessageAsBytes()).thenReturn(false);
95 MuleContext muleContext= mock(MuleContext.class);
96 when(muleContext.getConfiguration()).thenReturn(muleConfiguration);
97
98 MuleMessage message = new DefaultMuleMessage("The quick brown fox", muleContext);
99 assertTrue(filter.accept(message));
100 }
101
102 @Test
103 public void testByteArrayInput()
104 {
105 System.setProperty(MuleProperties.MULE_ENCODING_SYSTEM_PROPERTY, "UTF-8");
106 RegExFilter filter = new RegExFilter("The quick (.*)");
107 assertNotNull(filter.getPattern());
108
109 byte[] bytes = "The quick brown fox".getBytes();
110 assertTrue(filter.accept(bytes));
111 }
112
113 @Test
114 public void testCharArrayInput()
115 {
116 RegExFilter filter = new RegExFilter("The quick (.*)");
117 assertNotNull(filter.getPattern());
118
119 char[] chars = "The quick brown fox".toCharArray();
120 assertTrue(filter.accept(chars));
121 }
122
123 @Test
124 public void testEqualsWithSamePattern()
125 {
126 RegExFilter filter1 = new RegExFilter(PATTERN);
127 RegExFilter filter2 = new RegExFilter(PATTERN);
128 assertEquals(filter1, filter2);
129 }
130
131 @Test
132 public void testEqualsWithDifferentPattern()
133 {
134 RegExFilter filter1 = new RegExFilter("foo");
135 RegExFilter filter2 = new RegExFilter("bar");
136 assertFalse(filter1.equals(filter2));
137 }
138
139 @Test
140 public void testEqualsWithEqualPatternAndDifferentFlags()
141 {
142 RegExFilter filter1 = new RegExFilter(PATTERN, Pattern.DOTALL);
143 RegExFilter filter2 = new RegExFilter(PATTERN, Pattern.CASE_INSENSITIVE);
144 assertFalse(filter1.equals(filter2));
145
146 filter1 = new RegExFilter(PATTERN, Pattern.DOTALL);
147 filter2 = new RegExFilter(PATTERN, Pattern.DOTALL);
148 assertEquals(filter1, filter2);
149 }
150 }