@@ -26,6 +26,7 @@ import scala.util.{Failure, Success}
26
26
* Tests for the DelphiQL syntax.
27
27
*
28
28
* @author Lisa Nguyen Quang Do
29
+ * @author Ben Hermann
29
30
*/
30
31
class SyntaxTest extends FlatSpec with Matchers {
31
32
@@ -34,7 +35,7 @@ class SyntaxTest extends FlatSpec with Matchers {
34
35
parseResult shouldBe a [Success [_]]
35
36
parseResult match {
36
37
case Success (ast) => {
37
- ast.toString shouldEqual " EqualExpr(FieldReference(Filter1), abc) "
38
+ ast shouldEqual Query ( EqualExpr (FieldReference (" Filter1" ), " abc" ))
38
39
}
39
40
}
40
41
}
@@ -45,7 +46,7 @@ class SyntaxTest extends FlatSpec with Matchers {
45
46
parseResult shouldBe a [Success [_]]
46
47
parseResult match {
47
48
case Success (ast) => {
48
- ast.toString shouldEqual " IsTrueExpr(FieldReference(Filter1)) "
49
+ ast shouldEqual Query ( IsTrueExpr (FieldReference (" Filter1" )))
49
50
}
50
51
}
51
52
}
@@ -67,7 +68,11 @@ class SyntaxTest extends FlatSpec with Matchers {
67
68
parseResult shouldBe a [Success [_]]
68
69
parseResult match {
69
70
case Success (ast) => {
70
- ast.toString shouldEqual " AndExpr(IsTrueExpr(FieldReference(Filter1)),EqualExpr(FieldReference(Filter2),3))"
71
+ ast shouldEqual
72
+ Query (
73
+ AndExpr (
74
+ IsTrueExpr (FieldReference (" Filter1" )),
75
+ EqualExpr (FieldReference (" Filter2" )," 3" )))
71
76
}
72
77
}
73
78
}
@@ -78,8 +83,13 @@ class SyntaxTest extends FlatSpec with Matchers {
78
83
parseResult shouldBe a [Success [_]]
79
84
parseResult match {
80
85
case Success (ast) => {
81
- ast.toString shouldEqual " OrExpr(IsTrueExpr(FieldReference(Filter1)),AndExpr(IsTrueExpr(FieldReference(Filter2))," +
82
- " OrExpr(LessThanExpr(FieldReference(Filter3),3),GreaterThanExpr(FieldReference(Filter4),0))))"
86
+ ast shouldEqual
87
+ Query (
88
+ OrExpr (
89
+ IsTrueExpr (FieldReference (" Filter1" )),
90
+ AndExpr (IsTrueExpr (FieldReference (" Filter2" )),
91
+ OrExpr (LessThanExpr (FieldReference (" Filter3" )," 3" ),
92
+ GreaterThanExpr (FieldReference (" Filter4" )," 0" )))))
83
93
}
84
94
}
85
95
}
@@ -90,8 +100,14 @@ class SyntaxTest extends FlatSpec with Matchers {
90
100
parseResult shouldBe a [Success [_]]
91
101
parseResult match {
92
102
case Success (ast) => {
93
- ast.toString shouldEqual " AndExpr(IsTrueExpr(FieldReference(Filter1)),XorExpr(OrExpr(LessThanExpr(FieldReference(Filter2),3)," +
94
- " GreaterThanExpr(FieldReference(Filter2),0)),AndExpr(IsTrueExpr(FieldReference(Filter4)),IsTrueExpr(FieldReference(Filter5)))))"
103
+ ast shouldEqual
104
+ Query (
105
+ AndExpr (
106
+ IsTrueExpr (FieldReference (" Filter1" )),
107
+ XorExpr (OrExpr (LessThanExpr (FieldReference (" Filter2" )," 3" ),
108
+ GreaterThanExpr (FieldReference (" Filter2" )," 0" )),
109
+ AndExpr (IsTrueExpr (FieldReference (" Filter4" )),
110
+ IsTrueExpr (FieldReference (" Filter5" ))))))
95
111
}
96
112
}
97
113
}
@@ -112,8 +128,13 @@ class SyntaxTest extends FlatSpec with Matchers {
112
128
parseResult shouldBe a [Success [_]]
113
129
parseResult match {
114
130
case Success (ast) => {
115
- ast.toString shouldEqual " AndExpr(AndExpr(IsTrueExpr(FieldReference(Filter1))," +
116
- " IsTrueExpr(FieldReference(Filter2))),IsTrueExpr(FieldReference(Filter3)))"
131
+ ast shouldEqual
132
+ Query (
133
+ AndExpr (
134
+ AndExpr (
135
+ IsTrueExpr (FieldReference (" Filter1" )),
136
+ IsTrueExpr (FieldReference (" Filter2" ))),
137
+ IsTrueExpr (FieldReference (" Filter3" ))))
117
138
}
118
139
}
119
140
}
@@ -123,8 +144,15 @@ class SyntaxTest extends FlatSpec with Matchers {
123
144
parseResult shouldBe a [Success [_]]
124
145
parseResult match {
125
146
case Success (ast) => {
126
- ast.toString shouldEqual " OrExpr(IsTrueExpr(FieldReference(Filter1)),AndExpr(XorExpr(" +
127
- " IsTrueExpr(FieldReference(Filter2)),NotExpr(IsTrueExpr(FieldReference(Filter3)))),IsTrueExpr(FieldReference(Filter4))))"
147
+ ast shouldEqual
148
+ Query (
149
+ OrExpr (
150
+ IsTrueExpr (FieldReference (" Filter1" )),
151
+ AndExpr (
152
+ XorExpr (
153
+ IsTrueExpr (FieldReference (" Filter2" )),
154
+ NotExpr (IsTrueExpr (FieldReference (" Filter3" )))),
155
+ IsTrueExpr (FieldReference (" Filter4" )))))
128
156
}
129
157
}
130
158
}
@@ -135,9 +163,16 @@ class SyntaxTest extends FlatSpec with Matchers {
135
163
parseResult shouldBe a [Success [_]]
136
164
parseResult match {
137
165
case Success (ast) => {
138
- ast.toString shouldEqual " AndExpr(OrExpr(IsTrueExpr(FieldReference(Filter1)),IsTrueExpr(FieldReference(Filter2)))," +
139
- " XorExpr(NotExpr(IsTrueExpr(FieldReference(Filter3))),NotExpr(AndExpr(IsTrueExpr(FieldReference(Filter4))," +
140
- " IsTrueExpr(FieldReference(Filter5))))))"
166
+ ast shouldEqual
167
+ Query (
168
+ AndExpr (
169
+ OrExpr (
170
+ IsTrueExpr (FieldReference (" Filter1" )),
171
+ IsTrueExpr (FieldReference (" Filter2" ))),
172
+ XorExpr (
173
+ NotExpr (IsTrueExpr (FieldReference (" Filter3" ))),
174
+ NotExpr (AndExpr (IsTrueExpr (FieldReference (" Filter4" )),
175
+ IsTrueExpr (FieldReference (" Filter5" )))))))
141
176
}
142
177
}
143
178
}
@@ -148,8 +183,11 @@ class SyntaxTest extends FlatSpec with Matchers {
148
183
parseResult shouldBe a [Success [_]]
149
184
parseResult match {
150
185
case Success (ast) => {
151
- ast.toString shouldEqual " AndExpr(NotExpr(IsTrueExpr(FieldReference(Filter1)))," +
152
- " NotExpr(IsTrueExpr(FieldReference(Filter2))))"
186
+ ast shouldEqual
187
+ Query (
188
+ AndExpr (
189
+ NotExpr (IsTrueExpr (FieldReference (" Filter1" ))),
190
+ NotExpr (IsTrueExpr (FieldReference (" Filter2" )))))
153
191
}
154
192
}
155
193
}
@@ -159,8 +197,12 @@ class SyntaxTest extends FlatSpec with Matchers {
159
197
parseResult shouldBe a [Success [_]]
160
198
parseResult match {
161
199
case Success (ast) => {
162
- ast.toString shouldEqual " NotExpr(AndExpr(IsTrueExpr(FieldReference(Filter1))," +
163
- " NotExpr(IsTrueExpr(FieldReference(Filter2)))))"
200
+ ast shouldEqual
201
+ Query (
202
+ NotExpr (
203
+ AndExpr (
204
+ IsTrueExpr (FieldReference (" Filter1" )),
205
+ NotExpr (IsTrueExpr (FieldReference (" Filter2" ))))))
164
206
}
165
207
}
166
208
}
@@ -170,9 +212,16 @@ class SyntaxTest extends FlatSpec with Matchers {
170
212
parseResult shouldBe a[Success [_]]
171
213
parseResult match {
172
214
case Success (ast) => {
173
- ast.toString shouldEqual " AndExpr(NotExpr(NotExpr(IsTrueExpr(FieldReference(Filter1))))," +
174
- " NotExpr(OrExpr(LessOrEqualExpr(FieldReference(Filter2),0),NotExpr(AndExpr(IsTrueExpr(FieldReference(Filter3))," +
175
- " NotExpr(LikeExpr(FieldReference(Filter4),abc)))))))"
215
+ ast shouldEqual
216
+ Query (
217
+ AndExpr (
218
+ NotExpr (
219
+ NotExpr (IsTrueExpr (FieldReference (" Filter1" )))),
220
+ NotExpr (
221
+ OrExpr (
222
+ LessOrEqualExpr (FieldReference (" Filter2" )," 0" ),
223
+ NotExpr (AndExpr (IsTrueExpr (FieldReference (" Filter3" )),
224
+ NotExpr (LikeExpr (FieldReference (" Filter4" )," abc" ))))))))
176
225
}
177
226
}
178
227
}
@@ -183,11 +232,28 @@ class SyntaxTest extends FlatSpec with Matchers {
183
232
parseResult match {
184
233
case Success (ast) => {
185
234
ast shouldEqual
186
- AndExpr (
235
+ Query ( AndExpr (
187
236
AndExpr (
188
237
GreaterThanExpr (FieldReference (" metrics.classversion.9" )," 0" ),
189
238
EqualExpr (FieldReference (" metrics.classversion.8" )," 0" )),
190
- EqualExpr (FieldReference (" maven.groupId" )," com.github.xmlet" ))
239
+ EqualExpr (FieldReference (" maven.groupId" )," com.github.xmlet" )))
240
+ }
241
+ case Failure (exception : ParseError ) => {
242
+ fail(parser.formatError(exception))
243
+ }
244
+ case _ => fail()
245
+ }
246
+ }
247
+
248
+ " Single field selection" should " be valid" in {
249
+ val parser = new Syntax (" [metrics.api.unsafe.heapget]>0 #[metrics.bytecode.*]" )
250
+ val parseResult = parser.QueryRule .run()
251
+ parseResult match {
252
+ case Success (ast) => {
253
+ ast shouldEqual
254
+ Query (
255
+ GreaterThanExpr (FieldReference (" metrics.api.unsafe.heapget" )," 0" ),
256
+ Seq (FieldReference (" metrics.bytecode.*" )))
191
257
}
192
258
case Failure (exception : ParseError ) => {
193
259
fail(parser.formatError(exception))
0 commit comments