changelog shortlog graph tags branches changeset files file revisions raw help

Mercurial > core / annotate lisp/lib/q/tests/suite.lisp

changeset 580: 571685ae64f1
parent: 806c2b214df8
child: 568c39371122
author: Richard Westhaver <ellis@rwest.io>
date: Mon, 05 Aug 2024 21:57:13 -0400
permissions: -rw-r--r--
description: queries, cli fixes, dat/csv, emacs org-columns
577
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
1
 ;;; tests.lisp --- Q Tests
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
2
 
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
3
 ;; 
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
4
 
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
5
 ;;; Code:
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
6
 (in-package :q/tests)
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
7
 
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
8
 (defsuite :q)
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
9
 
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
10
 (in-suite :q)
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
11
 
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
12
 (deftest sanity ()
580
571685ae64f1 queries, cli fixes, dat/csv, emacs org-columns
Richard Westhaver <ellis@rwest.io>
parents: 577
diff changeset
13
   (is (make-instance 'query-engine
571685ae64f1 queries, cli fixes, dat/csv, emacs org-columns
Richard Westhaver <ellis@rwest.io>
parents: 577
diff changeset
14
         :parser (make-instance 'query-parser)
571685ae64f1 queries, cli fixes, dat/csv, emacs org-columns
Richard Westhaver <ellis@rwest.io>
parents: 577
diff changeset
15
         :optimizer (make-instance 'sql-optimizer)
571685ae64f1 queries, cli fixes, dat/csv, emacs org-columns
Richard Westhaver <ellis@rwest.io>
parents: 577
diff changeset
16
         :sources nil)))
577
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
17
 
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
18
 (deftest sql-select ()
580
571685ae64f1 queries, cli fixes, dat/csv, emacs org-columns
Richard Westhaver <ellis@rwest.io>
parents: 577
diff changeset
19
   (with-sql (expr "SELECT * FROM FOO")
577
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
20
     (is (typep expr 'sql-select))
580
571685ae64f1 queries, cli fixes, dat/csv, emacs org-columns
Richard Westhaver <ellis@rwest.io>
parents: 577
diff changeset
21
       (signals simple-sql-error (make-sql-data-frame expr tbl))))
571685ae64f1 queries, cli fixes, dat/csv, emacs org-columns
Richard Westhaver <ellis@rwest.io>
parents: 577
diff changeset
22
 
571685ae64f1 queries, cli fixes, dat/csv, emacs org-columns
Richard Westhaver <ellis@rwest.io>
parents: 577
diff changeset
23
 (deftest sql-df ()
571685ae64f1 queries, cli fixes, dat/csv, emacs org-columns
Richard Westhaver <ellis@rwest.io>
parents: 577
diff changeset
24
   (let ((tbl (make-hash-table :test 'equal))
571685ae64f1 queries, cli fixes, dat/csv, emacs org-columns
Richard Westhaver <ellis@rwest.io>
parents: 577
diff changeset
25
         (df (make-instance 'data-frame)))
571685ae64f1 queries, cli fixes, dat/csv, emacs org-columns
Richard Westhaver <ellis@rwest.io>
parents: 577
diff changeset
26
     (setf (schema df) (make-schema))
571685ae64f1 queries, cli fixes, dat/csv, emacs org-columns
Richard Westhaver <ellis@rwest.io>
parents: 577
diff changeset
27
     (is (setf (gethash "FOO" tbl) df))
571685ae64f1 queries, cli fixes, dat/csv, emacs org-columns
Richard Westhaver <ellis@rwest.io>
parents: 577
diff changeset
28
     (is (gethash "FOO" tbl))
571685ae64f1 queries, cli fixes, dat/csv, emacs org-columns
Richard Westhaver <ellis@rwest.io>
parents: 577
diff changeset
29
     ;; (is (make-sql-data-frame df tbl))
571685ae64f1 queries, cli fixes, dat/csv, emacs org-columns
Richard Westhaver <ellis@rwest.io>
parents: 577
diff changeset
30
     ))
577
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
31
 
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
32
 (deftest sql-math ()
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
33
   (with-sql (expr "1 + 2 * 3")
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
34
     (is (typep expr 'sql-math-expression))
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
35
     (is (typep (rhs expr) 'sql-math-expression))
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
36
     (is (typep (lhs expr) 'sql-number))))
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
37
 
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
38
 ;; https://www.cpp.edu/~jrfisher/www/prolog_tutorial/2_1.html
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
39
 (deftest dql (:skip t)
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
40
   (adjacent 1 2)
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
41
   (adjacent 2 1) 
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
42
   (adjacent 1 3)
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
43
   (adjacent 3 1) 
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
44
   (adjacent 1 4)
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
45
   (adjacent 4 1) 
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
46
   (adjacent 1 5)
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
47
   (adjacent 5 1) 
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
48
   (adjacent 2 3)
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
49
   (adjacent 3 2) 
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
50
   (adjacent 2 4)
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
51
   (adjacent 4 2) 
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
52
   (adjacent 3 4)
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
53
   (adjacent 4 3) 
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
54
   (adjacent 4 5)
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
55
   (adjacent 5 4) 
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
56
   (color 1 red a)    (color 1 red b) 
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
57
   (color 2 blue a)   (color 2 blue b) 
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
58
   (color 3 green a)  (color 3 green b) 
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
59
   (color 4 yellow a) (color 4 blue b) 
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
60
   (color 5 blue a)   (color 5 green b)
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
61
 
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
62
   (:- (conflict ?coloring)
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
63
       (adjacent ?x ?y)  
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
64
       (color ?x ?color ?coloring)  
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
65
       (color ?y ?color ?coloring))
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
66
 
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
67
 
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
68
   (:- (conflict ?r1 ?r2 ?coloring)
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
69
       (adjacent ?r1 ?r2)  
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
70
       (color ?r1 ?color ?coloring)  
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
71
       (color ?r2 ?color ?coloring))
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
72
 
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
73
 
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
74
   ;; there are several infix operators.
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
75
   ;; :- , >, <, -> etc.
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
76
   ;; let's mark variables with ? prefix.
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
77
   ;; 
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
78
 
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
79
   (:- main
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
80
       (forall (conflict ?coloring)
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
81
               (writeln (conflict ?coloring)))
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
82
       (forall (conflict ?r1 ?r2 ?coloring)
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
83
               (writeln (conflict ?r1 ?r2 ?coloring)))
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
84
       (forall (conflict ?r1 ?r2 ?coloring)
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
85
               (and (print-sexp (conflict ?r1 ?r2 ?coloring))
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
86
                    nl))
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
87
       halt)
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
88
 
806c2b214df8 refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
89
   (:- (initialization main)))