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))) |