1 package org.weda.store;
2
3 import java.util.Arrays;
4 import org.weda.test.WedaTestCase;
5 import org.weda.property.ObjectDescriptorRegistry;
6 import org.weda.converter.ValueTypeConverter;
7 import org.weda.store.QueryFilterElement.OperatorType;
8 import org.weda.store.impl.QueryFilterElementImpl;
9 import org.weda.domain.Company;
10 import org.weda.store.QueryFilterElement.ExpressionType;
11
12
13 /**
14 *
15 * @author tim
16 */
17 public class QueryFilterElementTest extends WedaTestCase {
18 QueryFilterElementImpl filterElement;
19 ObjectDescriptorRegistry descReg;
20
21 public QueryFilterElementTest(String name) throws Exception {
22 super(name);
23 }
24
25 public void setUp() throws Exception {
26 ValueTypeConverter converter =
27 (ValueTypeConverter)registry
28 .getService(ValueTypeConverter.class);
29 filterElement=new QueryFilterElementImpl();
30 filterElement.setObjectAlias("company");
31 descReg = (ObjectDescriptorRegistry)
32 registry.getService(ObjectDescriptorRegistry.class);
33 }
34
35 public void test_operatorExpression1() throws Exception {
36 filterElement.setProperty("id");
37
38 filterElement.setPropertyDescriptor(
39 descReg.getPropertyDescriptor(Company.class, "id"));
40
41 filterElement.setExpression(">5");
42
43 assertEquals(">5", filterElement.getExpression());
44 assertEquals(ExpressionType.OPERATOR, filterElement.getExpressionType());
45 assertEquals(OperatorType.SIMPLE, filterElement.getOperatorType());
46 assertEquals(">", filterElement.getOperator());
47 assertEquals(5l, filterElement.getParameterValue());
48
49 filterElement.setExpression("5");
50 assertEquals(ExpressionType.OPERATOR, filterElement.getExpressionType());
51 assertEquals(OperatorType.SIMPLE, filterElement.getOperatorType());
52 assertEquals("=", filterElement.getOperator());
53
54 assertEquals(5l, filterElement.getParameterValue());
55 }
56
57 public void test_operatorExpression2() throws Exception {
58 filterElement.setProperty("name");
59
60 filterElement.setPropertyDescriptor(
61 descReg.getPropertyDescriptor(Company.class, "name"));
62
63 filterElement.setExpression("%test");
64
65 assertEquals(ExpressionType.OPERATOR, filterElement.getExpressionType());
66 assertTrue(filterElement.getOperatorType()==OperatorType.LIKE);
67 assertEquals("%test", filterElement.getParameterValue());
68 }
69
70 public void test_betweenOperator() throws Exception {
71 filterElement.setProperty("id");
72 filterElement.setPropertyDescriptor(
73 descReg.getPropertyDescriptor(Company.class, "id"));
74 filterElement.setExpression("[ 5, 10 ]");
75 assertEquals(
76 ExpressionType.OPERATOR, filterElement.getExpressionType());
77 assertEquals(OperatorType.BETWEEN, filterElement.getOperatorType());
78 Arrays.equals(new Object[]{5,10}, (Object[])filterElement.getValue());
79 }
80
81 public void test_inOperator() throws Exception {
82 filterElement.setProperty("id");
83 filterElement.setPropertyDescriptor(
84 descReg.getPropertyDescriptor(Company.class, "id"));
85 filterElement.setExpression("{ 1, 10,2 }");
86 assertEquals(
87 ExpressionType.OPERATOR, filterElement.getExpressionType());
88 assertEquals(OperatorType.IN, filterElement.getOperatorType());
89 Arrays.equals(new Object[]{1,10,2}, (Object[])filterElement.getValue());
90 }
91
92 public void test_completeExpression() throws Exception {
93 filterElement.setProperty("id");
94
95 filterElement.setPropertyDescriptor(
96 descReg.getPropertyDescriptor(Company.class, "id"));
97
98 filterElement.setExpression("#between 1 and 5");
99 assertEquals(ExpressionType.COMPLETE, filterElement.getExpressionType());
100 assertEquals("between 1 and 5", filterElement.getValue());
101 }
102
103 }