Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: org/activemq/filter/DestinationFilterTest.java


1   /** 
2    * 
3    * Copyright 2004 Protique Ltd
4    * 
5    * Licensed under the Apache License, Version 2.0 (the "License"); 
6    * you may not use this file except in compliance with the License. 
7    * 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.activemq.filter;
19  
20  import org.activemq.message.ActiveMQMessage;
21  import org.activemq.test.TestSupport;
22  
23  import javax.jms.Destination;
24  import javax.jms.JMSException;
25  
26  
27  /**
28   * @version $Revision: 1.1.1.1 $
29   */
30  public class DestinationFilterTest extends TestSupport {
31  
32      public void testNonWildcard() throws JMSException {
33          Filter filter = createFilter("FOO.BAR");
34  
35          assertFilterMatches(filter, "FOO.BAR", true);
36          assertFilterMatches(filter, "FOO.BA", false);
37          assertFilterMatches(filter, "FOO.BAR.", false);
38          assertFilterMatches(filter, "FOO.BAR.Y", false);
39          assertFilterMatches(filter, "FOO", false);
40      }
41  
42      public void testPrefixWildcard() throws JMSException {
43          Filter filter = createFilter("FOO.>");
44  
45          assertFilterMatches(filter, "FOO.BAR", true);
46          assertFilterMatches(filter, "FOO.BA", true);
47          assertFilterMatches(filter, "FOO.BAR.", true);
48          assertFilterMatches(filter, "FOO.BAR.Y", true);
49          assertFilterMatches(filter, "FOO", false);
50          assertFilterMatches(filter, "BAR.BAR", false);
51      }
52  
53      public void testTwoLevelPrefixWildcard() throws JMSException {
54          Filter filter = createFilter("FOO.BAR.>");
55  
56          assertFilterMatches(filter, "FOO.BAR", false);
57          assertFilterMatches(filter, "FOO.BAR.FOO", true);
58          assertFilterMatches(filter, "FOO.BAR.FOO.WHATNOT", true);
59          assertFilterMatches(filter, "FOO.XAR.FOO", false);
60      }
61  
62      public void testMatchAnythingWildcard() throws JMSException {
63          Filter filter = createFilter(">");
64  
65          assertFilterMatches(filter, "FOO.BAR", true);
66          assertFilterMatches(filter, "FOO.BA", true);
67          assertFilterMatches(filter, "FOO.BAR.", true);
68          assertFilterMatches(filter, "FOO.BAR.Y", true);
69          assertFilterMatches(filter, "", true);
70          assertFilterMatches(filter, "FOO", true);
71          assertFilterMatches(filter, "BAR.BAR", true);
72      }
73  
74      public void testWildcard() throws JMSException {
75          Filter filter = createFilter("FOO.*");
76  
77          assertFilterMatches(filter, "FOO.BAR", true);
78          assertFilterMatches(filter, "FOO.BA", true);
79          assertFilterMatches(filter, "FOO.BAR.", false);
80          assertFilterMatches(filter, "FOO.BAR.Y", false);
81          assertFilterMatches(filter, "FOO", false);
82          assertFilterMatches(filter, "BAR.BAR", false);
83      }
84  
85      public void testDoubleWildcard() throws JMSException {
86          Filter filter = createFilter("FOO.*.*");
87  
88          assertFilterMatches(filter, "FOO.BAR", false);
89          assertFilterMatches(filter, "FOO.BAR.XYZ", true);
90          assertFilterMatches(filter, "FOO.BAR.", true);
91          assertFilterMatches(filter, "FOO.BAR.XYZ.", false);
92          assertFilterMatches(filter, "FOO.BAR.XYZ.ZZZ", false);
93          assertFilterMatches(filter, "FOO", false);
94          assertFilterMatches(filter, "BAR.BAR", false);
95      }
96  
97      public void testWildcardInMiddle() throws JMSException {
98          Filter filter = createFilter("FOO.*.XYZ");
99  
100         assertFilterMatches(filter, "FOO.BAR", false);
101         assertFilterMatches(filter, "FOO.BAR.XYZ", true);
102         assertFilterMatches(filter, "FOO..XYZ", true);
103         assertFilterMatches(filter, "FOO.WHATEVER.XYZ", true);
104         assertFilterMatches(filter, "FOO.BAR.XYZ.", false);
105         assertFilterMatches(filter, "FOO.BAR.XYZ.ZZZ", false);
106         assertFilterMatches(filter, "FOO", false);
107         assertFilterMatches(filter, "BAR.BAR", false);
108     }
109 
110     public void testIntermixedWildcards() throws JMSException {
111         Filter filter = createFilter("FOO.*.ABC.*");
112 
113         assertFilterMatches(filter, "FOO.BAR", false);
114         assertFilterMatches(filter, "FOO.BAR.ABC", false);
115         assertFilterMatches(filter, "FOO.BAR.ABC.DEF", true);
116         assertFilterMatches(filter, "FOO..ABC.DEF", true);
117         assertFilterMatches(filter, "FOO..ABC.", true);
118         assertFilterMatches(filter, "FOO.BAR.ABC.DEF.", false);
119         assertFilterMatches(filter, "FOO.BAR.ABC.DEF.X", false);
120         assertFilterMatches(filter, "FOO.BAR.ABC", false);
121         assertFilterMatches(filter, "FOO.BAR.XYZ.", false);
122         assertFilterMatches(filter, "FOO.BAR.XYZ.ZZZ", false);
123         assertFilterMatches(filter, "FOO", false);
124         assertFilterMatches(filter, "BAR.BAR", false);
125     }
126 
127     public void testCompositeFilter() throws JMSException {
128         Filter filter = createFilter("FOO.BAR.ABC.DEF,FOO.XYZ");
129 
130         assertFilterMatches(filter, "FOO.XYZ", true);
131         assertFilterMatches(filter, "FOO.BAR", false);
132         assertFilterMatches(filter, "FOO.BAR.ABC", false);
133         assertFilterMatches(filter, "FOO.BAR.ABC.DEF", true);
134         assertFilterMatches(filter, "FOO.BAR.ABC.DEF.", false);
135         assertFilterMatches(filter, "FOO.BAR.ABC.DEF.X", false);
136         assertFilterMatches(filter, "FOO.BAR.ABC", false);
137         assertFilterMatches(filter, "FOO.BAR.XYZ.", false);
138         assertFilterMatches(filter, "FOO.BAR.XYZ.ZZZ", false);
139         assertFilterMatches(filter, "FOO", false);
140         assertFilterMatches(filter, "BAR.BAR", false);
141     }
142 
143     protected void assertFilterMatches(Filter filter, String subject, boolean expected) throws JMSException {
144         Destination destination = createDestination(subject);
145         
146         // lets create a Message now
147         ActiveMQMessage message = createMessage();
148         message.setJMSDestination(destination);
149 
150         boolean actual = filter.matches(message);
151         assertEquals("Matching " + filter + " to: " + destination, expected, actual);
152     }
153 
154     protected Filter createFilter(String subject) {
155         return DestinationFilter.parseFilter(createDestination(subject));
156     }
157 }