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.codehaus.activemq.selector;
19
20 import junit.framework.TestCase;
21 import org.codehaus.activemq.filter.ComparisonExpression;
22 import org.codehaus.activemq.filter.Expression;
23 import org.codehaus.activemq.filter.ExpressionFilter;
24 import org.codehaus.activemq.filter.Filter;
25 import org.codehaus.activemq.filter.LogicExpression;
26 import org.codehaus.activemq.filter.PropertyExpression;
27
28 /***
29 * @version $Revision: 1.4 $
30 */
31 public class SelectorParserTest extends TestCase {
32
33 public void testParseWithParensAround() throws Exception {
34 String[] values = {"x = 1 and y = 2", "(x = 1) and (y = 2)", "((x = 1) and (y = 2))"};
35
36 for (int i = 0; i < values.length; i++) {
37 String value = values[i];
38 System.out.println("Parsing: " + value);
39
40 Filter filter = parse(value);
41 assertTrue("Created ExpressionFilter filter", filter instanceof ExpressionFilter);
42 Expression andExpression = ((ExpressionFilter) filter).getExpression();
43 assertTrue("Created LogicExpression expression", andExpression instanceof LogicExpression);
44 LogicExpression logicExpression = (LogicExpression) andExpression;
45 Expression left = logicExpression.getLeft();
46 Expression right = logicExpression.getRight();
47
48 assertTrue("Left is a binary filter", left instanceof ComparisonExpression);
49 assertTrue("Right is a binary filter", right instanceof ComparisonExpression);
50 ComparisonExpression leftCompare = (ComparisonExpression) left;
51 ComparisonExpression rightCompare = (ComparisonExpression) right;
52 assertPropertyExpression("left", leftCompare.getLeft(), "x");
53 assertPropertyExpression("right", rightCompare.getLeft(), "y");
54 }
55 }
56
57 protected void assertPropertyExpression(String message, Expression expression, String expected) {
58 assertTrue(message + ". Must be PropertyExpression", expression instanceof PropertyExpression);
59 PropertyExpression propExp = (PropertyExpression) expression;
60 assertEquals(message + ". Property name", expected, propExp.getName());
61 }
62
63 protected Filter parse(String text) throws Exception {
64 return new SelectorParser().parse(text);
65 }
66 }