@@ -252,6 +252,11 @@ RESULTS should be a list of strings as returned by
252
252
(expect (org-ql--normalize-query '(and (todo " TODO" )
253
253
(or " string1" " string2" )))
254
254
:to-equal '(and (todo " TODO" ) (or (regexp " string1" ) (regexp " string2" ))))
255
+ (expect (org-ql--normalize-query '(or (todo " TODO" )
256
+ (or " string1" " string2" )))
257
+ :to-equal '(or (todo " TODO" ) (or (regexp " string1" ) (regexp " string2" ))))
258
+ (expect (org-ql--normalize-query '(not (or " string1" " string2" )))
259
+ :to-equal '(not (or (regexp " string1" ) (regexp " string2" ))))
255
260
(expect (org-ql--normalize-query '(when (todo " TODO" )
256
261
(or " string1" " string2" )))
257
262
:to-equal '(when (todo " TODO" ) (or (regexp " string1" ) (regexp " string2" ))))
@@ -278,6 +283,76 @@ RESULTS should be a list of strings as returned by
278
283
279
284
; ; TODO: Other predicates.
280
285
286
+ (describe " (and)"
287
+ (it " all clauses have preambles"
288
+ (expect (org-ql--query-preamble '(and (regexp " a" ) (regexp " b" )))
289
+ :to-equal (list :query '(and (regexp " a" ) (regexp " b" ))
290
+ :preamble " a"
291
+ :preamble-case-fold t )))
292
+ (it " some clauses miss preambles"
293
+ (expect (org-ql--query-preamble '(and (regexp " a" ) (+ 1 1 )))
294
+ :to-equal (list :query '(and (regexp " a" ) (+ 1 1 ))
295
+ :preamble " a"
296
+ :preamble-case-fold t )))
297
+ (it " all clauses don't have preambles"
298
+ (expect (org-ql--query-preamble '(and t (+ 1 1 )))
299
+ :to-equal (list :query '(and t (+ 1 1 ))
300
+ :preamble nil
301
+ :preamble-case-fold nil ))))
302
+
303
+ (describe " (or)"
304
+ (it " all clauses have preambles"
305
+ (expect (org-ql--query-preamble '(or (regexp " a" ) (regexp " b" )))
306
+ :to-equal (list :query '(or (regexp " a" ) (regexp " b" ))
307
+ :preamble (rx-to-string `(or (regexp " a" ) (regexp " b" )))
308
+ :preamble-case-fold t )))
309
+ (it " some clauses miss preambles"
310
+ (expect (org-ql--query-preamble '(or (regexp " a" ) (+ 1 1 )))
311
+ :to-equal (list :query '(or (regexp " a" ) (+ 1 1 ))
312
+ :preamble nil
313
+ :preamble-case-fold t )))
314
+ (it " all clauses don't have preambles"
315
+ (expect (org-ql--query-preamble '(or t (+ 1 1 )))
316
+ :to-equal (list :query '(or t (+ 1 1 ))
317
+ :preamble nil
318
+ :preamble-case-fold t ))))
319
+
320
+ (describe " (when)"
321
+ (it " simple query"
322
+ (expect (org-ql--query-preamble '(when (regexp " a" ) (regexp " b" )))
323
+ :to-equal (list :query '(when (regexp " a" ) (regexp " b" ))
324
+ :preamble " a"
325
+ :preamble-case-fold t )))
326
+ (it " multiple clauses after when"
327
+ (expect (org-ql--query-preamble '(when (regexp " a" ) (+ 1 1 ) (regexp " b" )))
328
+ :to-equal (list :query '(when (regexp " a" ) (+ 1 1 ) (regexp " b" ))
329
+ :preamble " a"
330
+ :preamble-case-fold t )))
331
+ (it " no preambles in clauses"
332
+ (expect (org-ql--query-preamble '(when t (+ 1 1 )))
333
+ :to-equal (list :query '(when t (+ 1 1 ))
334
+ :preamble nil
335
+ :preamble-case-fold nil ))))
336
+
337
+ (describe " (unless)"
338
+ (it " simple query"
339
+ (expect (org-ql--query-preamble '(unless (regexp " a" ) (regexp " b" )))
340
+ :to-equal (list :query '(unless (regexp " a" ) (regexp " b" ))
341
+ :preamble " b"
342
+ :preamble-case-fold t )))
343
+ (it " no predicate in last clause"
344
+ (expect (org-ql--query-preamble '(unless (regexp " a" ) (regexp " b" ) (+ 1 1 )))
345
+ :to-equal (list :query '(unless (regexp " a" ) (regexp " b" ) (+ 1 1 ))
346
+ :preamble nil
347
+ :preamble-case-fold nil ))))
348
+
349
+ (describe " (not)"
350
+ (it " simple query"
351
+ (expect (org-ql--query-preamble '(not (regexp " a" )))
352
+ :to-equal (list :query '(not (regexp " a" ))
353
+ :preamble nil
354
+ :preamble-case-fold nil ))))
355
+
281
356
(describe " (clocked)"
282
357
(it " without arguments"
283
358
(expect (org-ql--query-preamble '(clocked))
0 commit comments