changeset 582: | 568c39371122 |
parent: | 571685ae64f1 |
child: | 35bb0d5ec95e |
author: | Richard Westhaver <ellis@rwest.io> |
date: | Wed, 07 Aug 2024 21:09:43 -0400 |
permissions: | -rw-r--r-- |
description: | sql updates, fuzzz |
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 () |
582 | 19 | (setf (gethash "FOO" tbl) (make-df nil)) |
20 | (with-sql (expr "SELECT I FROM FOO") |
|
577
806c2b214df8
refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
21 | (is (typep expr 'sql-select)) |
582 | 22 | (let ((tbl (make-hash-table :test 'equalp))) |
23 | (is (gethash "FOO" tbl)) |
|
24 | (make-sql-data-frame expr tbl)))) |
|
577
806c2b214df8
refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
25 | |
806c2b214df8
refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
26 | (deftest sql-math () |
806c2b214df8
refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
27 | (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
|
28 | (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
|
29 | (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
|
30 | (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
|
31 | |
806c2b214df8
refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
32 | ;; 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
|
33 | (deftest dql (:skip t) |
806c2b214df8
refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
34 | (adjacent 1 2) |
806c2b214df8
refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
35 | (adjacent 2 1) |
806c2b214df8
refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
36 | (adjacent 1 3) |
806c2b214df8
refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
37 | (adjacent 3 1) |
806c2b214df8
refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
38 | (adjacent 1 4) |
806c2b214df8
refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
39 | (adjacent 4 1) |
806c2b214df8
refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
40 | (adjacent 1 5) |
806c2b214df8
refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
41 | (adjacent 5 1) |
806c2b214df8
refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
42 | (adjacent 2 3) |
806c2b214df8
refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
43 | (adjacent 3 2) |
806c2b214df8
refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
44 | (adjacent 2 4) |
806c2b214df8
refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
45 | (adjacent 4 2) |
806c2b214df8
refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
46 | (adjacent 3 4) |
806c2b214df8
refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
47 | (adjacent 4 3) |
806c2b214df8
refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
48 | (adjacent 4 5) |
806c2b214df8
refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
49 | (adjacent 5 4) |
806c2b214df8
refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
50 | (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
|
51 | (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
|
52 | (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
|
53 | (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
|
54 | (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
|
55 | |
806c2b214df8
refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
56 | (:- (conflict ?coloring) |
806c2b214df8
refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
57 | (adjacent ?x ?y) |
806c2b214df8
refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
58 | (color ?x ?color ?coloring) |
806c2b214df8
refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
59 | (color ?y ?color ?coloring)) |
806c2b214df8
refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
60 | |
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 ?r1 ?r2 ?coloring) |
806c2b214df8
refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
63 | (adjacent ?r1 ?r2) |
806c2b214df8
refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
64 | (color ?r1 ?color ?coloring) |
806c2b214df8
refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
65 | (color ?r2 ?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 | ;; there are several infix operators. |
806c2b214df8
refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
69 | ;; :- , >, <, -> etc. |
806c2b214df8
refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
70 | ;; 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
|
71 | ;; |
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 | (:- main |
806c2b214df8
refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
74 | (forall (conflict ?coloring) |
806c2b214df8
refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
75 | (writeln (conflict ?coloring))) |
806c2b214df8
refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
76 | (forall (conflict ?r1 ?r2 ?coloring) |
806c2b214df8
refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
77 | (writeln (conflict ?r1 ?r2 ?coloring))) |
806c2b214df8
refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
78 | (forall (conflict ?r1 ?r2 ?coloring) |
806c2b214df8
refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
79 | (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
|
80 | nl)) |
806c2b214df8
refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
81 | halt) |
806c2b214df8
refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
82 | |
806c2b214df8
refactored q/tests, added rt/fuzz, more sql query work
Richard Westhaver <ellis@rwest.io>
parents:
diff
changeset
|
83 | (:- (initialization main))) |