1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package com.fatwire.gst.foundation.facade.assetapi;
18
19 import com.fatwire.assetapi.query.Condition;
20 import com.fatwire.assetapi.query.ConditionExpression;
21 import com.fatwire.assetapi.query.OpTypeEnum;
22 import com.fatwire.assetapi.query.QueryProperties;
23 import junit.framework.Assert;
24 import junit.framework.TestCase;
25
26 import java.util.List;
27
28 public class ConditionParserTest extends TestCase {
29
30 public void testParseNumber() {
31 ConditionParser parser = new ConditionParser();
32 Condition c = parser.parse("name = 123");
33 Assert.assertEquals("name", c.getExpression().getAttributeName());
34 Assert.assertEquals(OpTypeEnum.EQUALS, c.getExpression().getOpType());
35 List<?> vals = c.getExpression().getValues();
36 Assert.assertEquals(1, vals.size());
37 Object o = vals.get(0);
38
39 Assert.assertEquals("123", o);
40 }
41
42 public void testParseLessThan() {
43 ConditionParser parser = new ConditionParser();
44 Condition c = parser.parse("name < 123");
45 Assert.assertEquals("name", c.getExpression().getAttributeName());
46 Assert.assertEquals(OpTypeEnum.LESS_THAN, c.getExpression().getOpType());
47 List<?> vals = c.getExpression().getValues();
48 Assert.assertEquals(1, vals.size());
49 Object o = vals.get(0);
50
51 Assert.assertEquals("123", o);
52 }
53
54 public void testParseBetween() {
55 ConditionParser parser = new ConditionParser();
56 Condition c = parser.parse("size{123,130}");
57 Assert.assertEquals("size", c.getExpression().getAttributeName());
58 Assert.assertEquals(OpTypeEnum.BETWEEN, c.getExpression().getOpType());
59 List<?> vals = c.getExpression().getValues();
60 Assert.assertEquals(2, vals.size());
61
62 Assert.assertEquals("123", vals.get(0));
63 Assert.assertEquals("130", vals.get(1));
64
65 }
66
67 public void testParseSimpleOr() {
68 ConditionParser parser = new ConditionParser();
69 Condition c = parser.parse("size=[123,130]");
70 assertNotNull(c);
71 List<?> vals = c.getExpression().getValues();
72 assertEquals(2, vals.size());
73 assertEquals("123", vals.get(0));
74 assertEquals("130", vals.get(1));
75
76 }
77
78 public void testValueSplit() {
79 ConditionParser parser = new ConditionParser();
80 String[] c = parser.valueSplit("john,'mary','mary poppins','barker,john'");
81 assertEquals(4, c.length);
82 assertEquals("john", c[0]);
83 assertEquals("mary", c[1]);
84 assertEquals("mary poppins", c[2]);
85 assertEquals("barker,john", c[3]);
86
87 }
88
89 public void testParseSimpleOr_with_quotes() {
90 ConditionParser parser = new ConditionParser();
91 Condition c = parser.parse("name=[john,'mary','mary poppins','barker,john']");
92 assertNotNull(c);
93 List<?> vals = c.getExpression().getValues();
94 Assert.assertEquals(4, vals.size());
95
96 Assert.assertEquals("john", vals.get(0));
97 Assert.assertEquals("mary", vals.get(1));
98 Assert.assertEquals("mary poppins", vals.get(2));
99 assertEquals("barker,john", vals.get(3));
100
101 }
102
103 void print(Condition c) {
104 if (c == null) {
105 return;
106 }
107 System.out.println("JoinType: " + c.getJoinType());
108 ConditionExpression e = c.getExpression();
109 if (e != null) {
110 QueryProperties p = e.getProperties();
111
112 System.out.println("ConditionExpression: " + e.getAttributeName() + " " + e.getOpType() + " "
113 + e.getValues() + ": " + (p != null ? p.getIsBasicSearch() : ""));
114 }
115 if (c.getLeftCondition() != null) {
116 System.out.println("left:");
117 print(c.getLeftCondition());
118 }
119 if (c.getRightCondition() != null) {
120 System.out.println("right:");
121 print(c.getRightCondition());
122 }
123 }
124
125 void checkValue(Condition c, String expectedName, OpTypeEnum op, String expected) {
126 assertNotNull("expression is null", c.getExpression());
127 Assert.assertEquals(expectedName, c.getExpression().getAttributeName());
128 Assert.assertEquals(op, c.getExpression().getOpType());
129 List<?> vals = c.getExpression().getValues();
130 Assert.assertEquals(1, vals.size());
131 Assert.assertEquals(expected, vals.get(0));
132 }
133
134 public void testParseLike() {
135 ConditionParser parser = new ConditionParser();
136 Condition c = parser.parse("name~foo");
137 Assert.assertEquals("name", c.getExpression().getAttributeName());
138 Assert.assertEquals(OpTypeEnum.LIKE, c.getExpression().getOpType());
139 List<?> vals = c.getExpression().getValues();
140 Assert.assertEquals(1, vals.size());
141
142 Assert.assertEquals("foo", vals.get(0));
143
144 }
145
146 public void testParseFloat() {
147 ConditionParser parser = new ConditionParser();
148 Condition c = parser.parse("name = 123.0");
149 Assert.assertEquals("name", c.getExpression().getAttributeName());
150 Assert.assertEquals(OpTypeEnum.EQUALS, c.getExpression().getOpType());
151 List<?> vals = c.getExpression().getValues();
152 Assert.assertEquals(1, vals.size());
153 Object o = vals.get(0);
154
155 Assert.assertEquals(new Float(123.0).toString(), o);
156 }
157
158 public void testParseNoSpace() {
159 ConditionParser parser = new ConditionParser();
160 Condition c = parser.parse("name=123.0");
161 Assert.assertEquals("name", c.getExpression().getAttributeName());
162 Assert.assertEquals(OpTypeEnum.EQUALS, c.getExpression().getOpType());
163 List<?> vals = c.getExpression().getValues();
164 Assert.assertEquals(1, vals.size());
165 Object o = vals.get(0);
166
167 Assert.assertEquals("123.0", o);
168 }
169
170 public void testParseDoubleSpace() {
171 ConditionParser parser = new ConditionParser();
172 Condition c = parser.parse("name= 123.0");
173 Assert.assertEquals("name", c.getExpression().getAttributeName());
174 Assert.assertEquals(OpTypeEnum.EQUALS, c.getExpression().getOpType());
175 List<?> vals = c.getExpression().getValues();
176 Assert.assertEquals(1, vals.size());
177 Object o = vals.get(0);
178
179 Assert.assertEquals("123.0", o);
180 }
181
182 public void testParseQuote() {
183 ConditionParser parser = new ConditionParser();
184 Condition c = parser.parse("name='foo'");
185 Assert.assertEquals("name", c.getExpression().getAttributeName());
186 Assert.assertEquals(OpTypeEnum.EQUALS, c.getExpression().getOpType());
187 List<?> vals = c.getExpression().getValues();
188 Assert.assertEquals(1, vals.size());
189 Object o = vals.get(0);
190
191 Assert.assertEquals("foo", o);
192 }
193
194 public void testParseQuoteWithSpace() {
195 ConditionParser parser = new ConditionParser();
196 Condition c = parser.parse("name='foo bar'");
197 Assert.assertEquals("name", c.getExpression().getAttributeName());
198 Assert.assertEquals(OpTypeEnum.EQUALS, c.getExpression().getOpType());
199 List<?> vals = c.getExpression().getValues();
200 Assert.assertEquals(1, vals.size());
201 Object o = vals.get(0);
202
203 Assert.assertEquals("foo bar", o);
204 }
205
206 public void testParseQuoteStartWithSpace() {
207 ConditionParser parser = new ConditionParser();
208 Condition c = parser.parse("name=' foo bar'");
209 Assert.assertEquals("name", c.getExpression().getAttributeName());
210 Assert.assertEquals(OpTypeEnum.EQUALS, c.getExpression().getOpType());
211 List<?> vals = c.getExpression().getValues();
212 Assert.assertEquals(1, vals.size());
213 Object o = vals.get(0);
214
215 Assert.assertEquals(" foo bar", o);
216 }
217
218 public void testToOpType() {
219 ConditionParser parser = new ConditionParser();
220 OpTypeEnum e = parser.toOpType("=");
221 Assert.assertEquals(OpTypeEnum.EQUALS, e);
222 }
223
224 }