1   /***
2    * Redistribution and use of this software and associated documentation
3    * ("Software"), with or without modification, are permitted provided
4    * that the following conditions are met:
5    *
6    * 1. Redistributions of source code must retain copyright
7    *    statements and notices.  Redistributions must also contain a
8    *    copy of this document.
9    *
10   * 2. Redistributions in binary form must reproduce the
11   *    above copyright notice, this list of conditions and the
12   *    following disclaimer in the documentation and/or other
13   *    materials provided with the distribution.
14   *
15   * 3. The name "Exolab" must not be used to endorse or promote
16   *    products derived from this Software without prior written
17   *    permission of Exoffice Technologies.  For written permission,
18   *    please contact tma@netspace.net.au.
19   *
20   * 4. Products derived from this Software may not be called "Exolab"
21   *    nor may "Exolab" appear in their names without prior written
22   *    permission of Exoffice Technologies. Exolab is a registered
23   *    trademark of Exoffice Technologies.
24   *
25   * 5. Due credit should be given to the Exolab Project
26   *    (http://www.exolab.org/).
27   *
28   * THIS SOFTWARE IS PROVIDED BY EXOFFICE TECHNOLOGIES AND CONTRIBUTORS
29   * ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
30   * NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
31   * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
32   * EXOFFICE TECHNOLOGIES OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
33   * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
34   * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
35   * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
36   * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
37   * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
38   * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
39   * OF THE POSSIBILITY OF SUCH DAMAGE.
40   *
41   * Copyright 2001-2004 (C) Exoffice Technologies Inc. All Rights Reserved.
42   *
43   * $Id: BetweenOperatorTest.java,v 1.5 2004/02/03 21:52:11 tanderson Exp $
44   */
45  package org.exolab.jmscts.test.selector;
46  
47  import java.util.HashMap;
48  
49  import junit.framework.Test;
50  
51  import org.exolab.jmscts.core.TestCreator;
52  
53  
54  /***
55   * This class tests selector containing the BETWEEN operator.
56   *
57   * @author <a href="mailto:tma@netspace.net.au">Tim Anderson</a>
58   * @version $Revision: 1.5 $
59   * @see AbstractSelectorTestCase
60   * @jmscts.message BytesMessage
61   */
62  public class BetweenOperatorTest extends AbstractSelectorTestCase {
63  
64      /***
65       * Message properties
66       */
67      private static final HashMap PROPERTIES = new HashMap();
68  
69  
70      /***
71       * Create an instance of this class for a specific test case
72       *
73       * @param name the name of test case
74       */
75      public BetweenOperatorTest(String name) {
76          super(name);
77      }
78  
79      /***
80       * Sets up the test suite
81       *
82       * @return an instance of this class that may be run by
83       * {@link org.exolab.jmscts.core.JMSTestRunner}
84       */
85      public static Test suite() {
86          return TestCreator.createSendReceiveTest(BetweenOperatorTest.class);
87      }
88  
89      /***
90       * Verifies that the selector <code>17 between 16 and 18</code> selects
91       * all messages
92       *
93       * @jmscts.requirement selector.operator.between
94       * @jmscts.requirement selector.expression
95       * @throws Exception for any error
96       */
97      public void testBetween1() throws Exception {
98          checkSelector("17 between 16 and 18", true);
99      }
100 
101     /***
102      * Verifies that the selector <code>17 between 18 and 19</code> selects
103      * no messages
104      *
105      * @jmscts.requirement selector.operator.between
106      * @jmscts.requirement selector.expression
107      * @throws Exception for any error
108      */
109     public void testBetween2() throws Exception {
110         checkSelector("17 between 18 and 19", false);
111     }
112 
113     /***
114      * Verifies that the selector <code>17 Between 17 And 17</code> selects
115      * all messages
116      *
117      * @jmscts.requirement selector.operator.between
118      * @jmscts.requirement selector.expression
119      * @jmscts.requirement selector.reservedwords.case
120      * @throws Exception for any error
121      */
122     public void testBetween3() throws Exception {
123         checkSelector("17 Between 17 And 17", true);
124     }
125 
126     /***
127      * Verifies that the selector <code>17 between 4 * 4 and 10 + 8</code>
128      * selects all messages
129      *
130      * @jmscts.requirement selector.operator.between
131      * @jmscts.requirement selector.expression
132      * @throws Exception for any error
133      */
134     public void testBetween4() throws Exception {
135         checkSelector("17 between 4 * 4 and 10 + 8", true);
136     }
137 
138     /***
139      * Verifies that the selector <code>17 between 4 * 5 and 10 + 12</code>
140      * selects no messages
141      *
142      * @jmscts.requirement selector.operator.between
143      * @jmscts.requirement selector.expression
144      * @throws Exception for any error
145      */
146     public void testBetween5() throws Exception {
147         checkSelector("17 between 4 * 5 and 10 + 12", false);
148     }
149 
150     /***
151      * Verifies that the selector <code>two between one and three</code>
152      * selects all messages, where one, two and three are integer properties
153      * with with corresponding values
154      *
155      * @jmscts.requirement selector.operator.between
156      * @jmscts.requirement selector.expression
157      * @throws Exception for any error
158      */
159     public void testBetween6() throws Exception {
160         checkSelector("two between one and three", true, PROPERTIES);
161     }
162 
163     /***
164      * Verifies that the selector <code>17 not between 18 and 19</code> selects
165      * all messages
166      *
167      * @jmscts.requirement selector.operator.between
168      * @jmscts.requirement selector.expression
169      * @throws Exception for any error
170      */
171     public void testNotBetween1() throws Exception {
172         checkSelector("17 not between 18 and 19", true);
173     }
174 
175     /***
176      * Verifies that the selector <code>17 not between 16 and 18</code> selects
177      * no messages
178      *
179      * @jmscts.requirement selector.operator.between
180      * @jmscts.requirement selector.expression
181      * @throws Exception for any error
182      */
183     public void testNotBetween2() throws Exception {
184         checkSelector("17 not between 16 and 18", false);
185     }
186 
187     /***
188      * Verifies that the selector <code>17 not between 17 and 17</code> selects
189      * no messages
190      *
191      * @jmscts.requirement selector.operator.between
192      * @jmscts.requirement selector.expression
193      * @throws Exception for any error
194      */
195     public void testNotBetween3() throws Exception {
196         checkSelector("17 NOT between 17 and 17", false);
197     }
198 
199     /***
200      * Verifies that the selector <code>17 Not Between 4 * 5 And 20 / 1</code>
201      * selects all messages
202      *
203      * @jmscts.requirement selector.operator.between
204      * @jmscts.requirement selector.expression
205      * @jmscts.requirement selector.reservedwords.case
206      * @throws Exception for any error
207      */
208     public void testNotBetween4() throws Exception {
209         checkSelector("17 Not Between 4 * 5 And 20 / 1", true);
210     }
211 
212     /***
213      * Verifies that the selector <code>two not between one and three</code>
214      * selects all messages, where one, two and three are integer properties
215      * with with corresponding values
216      *
217      * @jmscts.requirement selector.operator.between
218      * @jmscts.requirement selector.expression
219      * @throws Exception for any error
220      */
221     public void testNotBetween5() throws Exception {
222         checkSelector("two not between one and three", false, PROPERTIES);
223     }
224 
225     /***
226      * Verifies that the selector <code>dummy between 1 and 10</code> selects
227      * no messages, for the unset property 'dummy'
228      *
229      * @jmscts.requirement selector.operator.between
230      * @jmscts.requirement selector.expression
231      * @jmscts.requirement selector.values.null
232      * @throws Exception for any error
233      */
234     public void testUnsetProperty1() throws Exception {
235         checkSelector("dummy between 1 and 10", false);
236     }
237 
238     /***
239      * Verifies that the selector <code>1 between dummy and 10</code> selects
240      * no messages, for the unset property 'dummy'
241      *
242      * @jmscts.requirement selector.operator.between
243      * @jmscts.requirement selector.expression
244      * @jmscts.requirement selector.values.null
245      * @throws Exception for any error
246      */
247     public void testUnsetProperty2() throws Exception {
248         checkSelector("1 between dummy and 10", false);
249     }
250 
251     /***
252      * Verifies that the selector <code>1 between 0 and dummy</code> selects
253      * no messages, for the unset property 'dummy'
254      *
255      * @jmscts.requirement selector.operator.between
256      * @jmscts.requirement selector.expression
257      * @jmscts.requirement selector.values.null
258      * @throws Exception for any error
259      */
260     public void testUnsetProperty3() throws Exception {
261         checkSelector("1 between 0 and dummy", false);
262     }
263 
264     /***
265      * Verifies that the selector <code>two between '1' and '3'</code>
266      * throws InvalidSelectorException
267      *
268      * @jmscts.requirement selector.validation
269      * @throws Exception for any error
270      */
271     public void testInvalid1() throws Exception {
272         checkInvalidSelector("two between '1' and '3'");
273     }
274 
275     /***
276      * Verifies that the selector <code>one between false and true</code>
277      * throws InvalidSelectorException
278      *
279      * @jmscts.requirement selector.validation
280      * @throws Exception for any error
281      */
282     public void testInvalid2() throws Exception {
283         checkInvalidSelector("one between false and true");
284     }
285 
286     /***
287      * Verifies that the selector <code>b' between 'a' and 'c'</code>
288      * throws InvalidSelectorException
289      *
290      * @jmscts.requirement selector.validation
291      * @throws Exception for any error
292      */
293     public void testInvalid3() throws Exception {
294         checkInvalidSelector("'b' between 'a' and 'c'");
295     }
296 
297     /***
298      * Verifies that the selector <code>between 1 and 3</code>
299      * throws InvalidSelectorException
300      *
301      * @jmscts.requirement selector.validation
302      * @throws Exception for any error
303      */
304     public void testInvalid4() throws Exception {
305         checkInvalidSelector("between 1 and 3");
306     }
307 
308     /***
309      * Verifies that the selector <code>not between 1 and 3</code>
310      * throws InvalidSelectorException
311      *
312      * @jmscts.requirement selector.validation
313      * @throws Exception for any error
314      */
315     public void testInvalid5() throws Exception {
316         checkInvalidSelector("not between 1 and 3");
317     }
318 
319     /***
320      * Verifies that the selector <code>2 between 1, 3</code>
321      * throws InvalidSelectorException
322      *
323      * @jmscts.requirement selector.validation
324      * @throws Exception for any error
325      */
326     public void testInvalid6() throws Exception {
327         checkInvalidSelector("2 between 1, 3");
328     }
329 
330     /***
331      * Verifies that the selector <code>2 between 1 and</code>
332      * throws InvalidSelectorException
333      *
334      * @jmscts.requirement selector.validation
335      * @throws Exception for any error
336      */
337     public void testInvalid7() throws Exception {
338         checkInvalidSelector("2 between 1 and");
339     }
340 
341     /***
342      * Verifies that the selector <code>2 between and 3</code>
343      * throws InvalidSelectorException
344      *
345      * @jmscts.requirement selector.validation
346      * @throws Exception for any error
347      */
348     public void testInvalid8() throws Exception {
349         checkInvalidSelector("2 between and 3");
350     }
351 
352     /***
353      * Verifies that the selector <code>JMSMessageID between 1 and 10</code>
354      * throws InvalidSelectorException
355      *
356      * @jmscts.requirement selector.validation
357      * @throws Exception for any error
358      */
359     public void testInvalid9() throws Exception {
360         checkInvalidSelector("JMSMessageID between 1 and 10");
361     }
362 
363     static {
364         PROPERTIES.put("one", new Integer(1));
365         PROPERTIES.put("two", new Integer(2));
366         PROPERTIES.put("three", new Integer(3));
367     }
368 
369 }
This page was automatically generated by Maven