@@ -26,6 +26,7 @@ import scala.util.{Failure, Success}
2626 * Tests for the DelphiQL syntax.
2727 *
2828 * @author Lisa Nguyen Quang Do
29+ * @author Ben Hermann
2930 */
3031class SyntaxTest extends FlatSpec with Matchers {
3132
@@ -34,7 +35,7 @@ class SyntaxTest extends FlatSpec with Matchers {
3435 parseResult shouldBe a [Success [_]]
3536 parseResult match {
3637 case Success (ast) => {
37- ast.toString shouldEqual " EqualExpr(FieldReference(Filter1), abc) "
38+ ast shouldEqual Query ( EqualExpr (FieldReference (" Filter1" ), " abc" ))
3839 }
3940 }
4041 }
@@ -45,7 +46,7 @@ class SyntaxTest extends FlatSpec with Matchers {
4546 parseResult shouldBe a [Success [_]]
4647 parseResult match {
4748 case Success (ast) => {
48- ast.toString shouldEqual " IsTrueExpr(FieldReference(Filter1)) "
49+ ast shouldEqual Query ( IsTrueExpr (FieldReference (" Filter1" )))
4950 }
5051 }
5152 }
@@ -67,7 +68,11 @@ class SyntaxTest extends FlatSpec with Matchers {
6768 parseResult shouldBe a [Success [_]]
6869 parseResult match {
6970 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" )))
7176 }
7277 }
7378 }
@@ -78,8 +83,13 @@ class SyntaxTest extends FlatSpec with Matchers {
7883 parseResult shouldBe a [Success [_]]
7984 parseResult match {
8085 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" )))))
8393 }
8494 }
8595 }
@@ -90,8 +100,14 @@ class SyntaxTest extends FlatSpec with Matchers {
90100 parseResult shouldBe a [Success [_]]
91101 parseResult match {
92102 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" ))))))
95111 }
96112 }
97113 }
@@ -112,8 +128,13 @@ class SyntaxTest extends FlatSpec with Matchers {
112128 parseResult shouldBe a [Success [_]]
113129 parseResult match {
114130 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" ))))
117138 }
118139 }
119140 }
@@ -123,8 +144,15 @@ class SyntaxTest extends FlatSpec with Matchers {
123144 parseResult shouldBe a [Success [_]]
124145 parseResult match {
125146 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" )))))
128156 }
129157 }
130158 }
@@ -135,9 +163,16 @@ class SyntaxTest extends FlatSpec with Matchers {
135163 parseResult shouldBe a [Success [_]]
136164 parseResult match {
137165 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" )))))))
141176 }
142177 }
143178 }
@@ -148,8 +183,11 @@ class SyntaxTest extends FlatSpec with Matchers {
148183 parseResult shouldBe a [Success [_]]
149184 parseResult match {
150185 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" )))))
153191 }
154192 }
155193 }
@@ -159,8 +197,12 @@ class SyntaxTest extends FlatSpec with Matchers {
159197 parseResult shouldBe a [Success [_]]
160198 parseResult match {
161199 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" ))))))
164206 }
165207 }
166208 }
@@ -170,9 +212,16 @@ class SyntaxTest extends FlatSpec with Matchers {
170212 parseResult shouldBe a[Success [_]]
171213 parseResult match {
172214 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" ))))))))
176225 }
177226 }
178227 }
@@ -183,11 +232,28 @@ class SyntaxTest extends FlatSpec with Matchers {
183232 parseResult match {
184233 case Success (ast) => {
185234 ast shouldEqual
186- AndExpr (
235+ Query ( AndExpr (
187236 AndExpr (
188237 GreaterThanExpr (FieldReference (" metrics.classversion.9" )," 0" ),
189238 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.*" )))
191257 }
192258 case Failure (exception : ParseError ) => {
193259 fail(parser.formatError(exception))
0 commit comments