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 java.util.List;
20
21 import junit.framework.Assert;
22 import junit.framework.TestCase;
23
24 import com.fatwire.assetapi.query.Condition;
25 import com.fatwire.assetapi.query.ConditionExpression;
26 import com.fatwire.assetapi.query.OpTypeEnum;
27 import com.fatwire.assetapi.query.QueryProperties;
28
29 public class ConditionParserTest extends TestCase {
30
31 public void testParseNumber() {
32 ConditionParser parser = new ConditionParser();
33 Condition c = parser.parse("name = 123");
34 Assert.assertEquals("name", c.getExpression().getAttributeName());
35 Assert.assertEquals(OpTypeEnum.EQUALS, c.getExpression().getOpType());
36 List<?> vals = c.getExpression().getValues();
37 Assert.assertEquals(1, vals.size());
38 Object o = vals.get(0);
39
40 Assert.assertEquals("123", o);
41 }
42
43 public void testParseLessThan() {
44 ConditionParser parser = new ConditionParser();
45 Condition c = parser.parse("name < 123");
46 Assert.assertEquals("name", c.getExpression().getAttributeName());
47 Assert.assertEquals(OpTypeEnum.LESS_THAN, c.getExpression().getOpType());
48 List<?> vals = c.getExpression().getValues();
49 Assert.assertEquals(1, vals.size());
50 Object o = vals.get(0);
51
52 Assert.assertEquals("123", o);
53 }
54
55 public void testParseBetween() {
56 ConditionParser parser = new ConditionParser();
57 Condition c = parser.parse("size{123,130}");
58 Assert.assertEquals("size", c.getExpression().getAttributeName());
59 Assert.assertEquals(OpTypeEnum.BETWEEN, c.getExpression().getOpType());
60 List<?> vals = c.getExpression().getValues();
61 Assert.assertEquals(2, vals.size());
62
63 Assert.assertEquals("123", vals.get(0));
64 Assert.assertEquals("130", vals.get(1));
65
66 }
67
68 public void testParseSimpleOr() {
69 ConditionParser parser = new ConditionParser();
70 Condition c = parser.parse("size=[123,130]");
71 assertNotNull(c);
72 List<?> vals = c.getExpression().getValues();
73 assertEquals(2, vals.size());
74 assertEquals("123", vals.get(0));
75 assertEquals("130", vals.get(1));
76
77 }
78
79 public void testValueSplit() {
80 ConditionParser parser = new ConditionParser();
81 String[] c = parser.valueSplit("john,'mary','mary poppins','barker,john'");
82 assertEquals(4, c.length);
83 assertEquals("john", c[0]);
84 assertEquals("mary", c[1]);
85 assertEquals("mary poppins", c[2]);
86 assertEquals("barker,john", c[3]);
87
88 }
89
90 public void testParseSimpleOr_with_quotes() {
91 ConditionParser parser = new ConditionParser();
92 Condition c = parser.parse("name=[john,'mary','mary poppins','barker,john']");
93 assertNotNull(c);
94 List<?> vals = c.getExpression().getValues();
95 Assert.assertEquals(4, vals.size());
96
97 Assert.assertEquals("john", vals.get(0));
98 Assert.assertEquals("mary", vals.get(1));
99 Assert.assertEquals("mary poppins", vals.get(2));
100 assertEquals("barker,john", vals.get(3));
101
102 }
103
104 void print(Condition c) {
105 if (c == null)
106 return;
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 }