changeset 698: | 96958d3eb5b0 |
parent: | 7ce855f76e1d |
author: | Richard Westhaver <ellis@rwest.io> |
date: | Fri, 04 Oct 2024 22:04:59 -0400 |
permissions: | -rw-r--r-- |
description: | fixes |
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) |
586
7ce855f76e1d
net/fetch upgrades, fixes, net/err -> net/condition
Richard Westhaver <ellis@rwest.io>
parents:
584
diff
changeset
|
50 | (color 1 red a) |
7ce855f76e1d
net/fetch upgrades, fixes, net/err -> net/condition
Richard Westhaver <ellis@rwest.io>
parents:
584
diff
changeset
|
51 | (color 1 red b) |
7ce855f76e1d
net/fetch upgrades, fixes, net/err -> net/condition
Richard Westhaver <ellis@rwest.io>
parents:
584
diff
changeset
|
52 | (color 2 blue a) |
7ce855f76e1d
net/fetch upgrades, fixes, net/err -> net/condition
Richard Westhaver <ellis@rwest.io>
parents:
584
diff
changeset
|
53 | (color 2 blue b) |
7ce855f76e1d
net/fetch upgrades, fixes, net/err -> net/condition
Richard Westhaver <ellis@rwest.io>
parents:
584
diff
changeset
|
54 | (color 3 green a) |
7ce855f76e1d
net/fetch upgrades, fixes, net/err -> net/condition
Richard Westhaver <ellis@rwest.io>
parents:
584
diff
changeset
|
55 | (color 3 green b) |
7ce855f76e1d
net/fetch upgrades, fixes, net/err -> net/condition
Richard Westhaver <ellis@rwest.io>
parents:
584
diff
changeset
|
56 | (color 4 yellow a) |
7ce855f76e1d
net/fetch upgrades, fixes, net/err -> net/condition
Richard Westhaver <ellis@rwest.io>
parents:
584
diff
changeset
|
57 | (color 4 blue b) |
7ce855f76e1d
net/fetch upgrades, fixes, net/err -> net/condition
Richard Westhaver <ellis@rwest.io>
parents:
584
diff
changeset
|
58 | (color 5 blue a) |
7ce855f76e1d
net/fetch upgrades, fixes, net/err -> net/condition
Richard Westhaver <ellis@rwest.io>
parents:
584
diff
changeset
|
59 | (color 5 green b)) |
584
35bb0d5ec95e
bug fixes, added freedesktop.org.xml rule. more work on prolog/dql - considering lib/lang+forrth..
Richard Westhaver <ellis@rwest.io>
parents:
582
diff
changeset
|
60 | |
35bb0d5ec95e
bug fixes, added freedesktop.org.xml rule. more work on prolog/dql - considering lib/lang+forrth..
Richard Westhaver <ellis@rwest.io>
parents:
582
diff
changeset
|
61 | #| SL |
35bb0d5ec95e
bug fixes, added freedesktop.org.xml rule. more work on prolog/dql - considering lib/lang+forrth..
Richard Westhaver <ellis@rwest.io>
parents:
582
diff
changeset
|
62 | Exercise 2.9. Translate to clausal logic: |
35bb0d5ec95e
bug fixes, added freedesktop.org.xml rule. more work on prolog/dql - considering lib/lang+forrth..
Richard Westhaver <ellis@rwest.io>
parents:
582
diff
changeset
|
63 | (a) every mouse has a tail; |
35bb0d5ec95e
bug fixes, added freedesktop.org.xml rule. more work on prolog/dql - considering lib/lang+forrth..
Richard Westhaver <ellis@rwest.io>
parents:
582
diff
changeset
|
64 | (b) somebody loves everybody; |
35bb0d5ec95e
bug fixes, added freedesktop.org.xml rule. more work on prolog/dql - considering lib/lang+forrth..
Richard Westhaver <ellis@rwest.io>
parents:
582
diff
changeset
|
65 | (c) every two numbers have a maximum. |
35bb0d5ec95e
bug fixes, added freedesktop.org.xml rule. more work on prolog/dql - considering lib/lang+forrth..
Richard Westhaver <ellis@rwest.io>
parents:
582
diff
changeset
|
66 | |# |
35bb0d5ec95e
bug fixes, added freedesktop.org.xml rule. more work on prolog/dql - considering lib/lang+forrth..
Richard Westhaver <ellis@rwest.io>
parents:
582
diff
changeset
|
67 | (deftest dql-clausal-simple (:skip t)) |
35bb0d5ec95e
bug fixes, added freedesktop.org.xml rule. more work on prolog/dql - considering lib/lang+forrth..
Richard Westhaver <ellis@rwest.io>
parents:
582
diff
changeset
|
68 | |
35bb0d5ec95e
bug fixes, added freedesktop.org.xml rule. more work on prolog/dql - considering lib/lang+forrth..
Richard Westhaver <ellis@rwest.io>
parents:
582
diff
changeset
|
69 | ;; ref: https://en.wikipedia.org/wiki/Zebra_Puzzle |
35bb0d5ec95e
bug fixes, added freedesktop.org.xml rule. more work on prolog/dql - considering lib/lang+forrth..
Richard Westhaver <ellis@rwest.io>
parents:
582
diff
changeset
|
70 | |
35bb0d5ec95e
bug fixes, added freedesktop.org.xml rule. more work on prolog/dql - considering lib/lang+forrth..
Richard Westhaver <ellis@rwest.io>
parents:
582
diff
changeset
|
71 | ;; ref: https://franz.com/support/documentation/11.0/prolog.html |
35bb0d5ec95e
bug fixes, added freedesktop.org.xml rule. more work on prolog/dql - considering lib/lang+forrth..
Richard Westhaver <ellis@rwest.io>
parents:
582
diff
changeset
|
72 | (deftest dql-zebra () |
35bb0d5ec95e
bug fixes, added freedesktop.org.xml rule. more work on prolog/dql - considering lib/lang+forrth..
Richard Westhaver <ellis@rwest.io>
parents:
582
diff
changeset
|
73 | "A solution for the Zebra problem using DQL." |
35bb0d5ec95e
bug fixes, added freedesktop.org.xml rule. more work on prolog/dql - considering lib/lang+forrth..
Richard Westhaver <ellis@rwest.io>
parents:
582
diff
changeset
|
74 | (<-- (nextto ?x ?y ?list) (iright ?x ?y ?list)) |
35bb0d5ec95e
bug fixes, added freedesktop.org.xml rule. more work on prolog/dql - considering lib/lang+forrth..
Richard Westhaver <ellis@rwest.io>
parents:
582
diff
changeset
|
75 | (<- (nextto ?x ?y ?list) (iright ?y ?x ?list)) |
35bb0d5ec95e
bug fixes, added freedesktop.org.xml rule. more work on prolog/dql - considering lib/lang+forrth..
Richard Westhaver <ellis@rwest.io>
parents:
582
diff
changeset
|
76 | (<-- (iright ?left ?right (?left ?right . ?rest))) |
35bb0d5ec95e
bug fixes, added freedesktop.org.xml rule. more work on prolog/dql - considering lib/lang+forrth..
Richard Westhaver <ellis@rwest.io>
parents:
582
diff
changeset
|
77 | (<- (iright ?left ?right (?x . ?rest)) |
35bb0d5ec95e
bug fixes, added freedesktop.org.xml rule. more work on prolog/dql - considering lib/lang+forrth..
Richard Westhaver <ellis@rwest.io>
parents:
582
diff
changeset
|
78 | (iright ?left ?right ?rest)) |
35bb0d5ec95e
bug fixes, added freedesktop.org.xml rule. more work on prolog/dql - considering lib/lang+forrth..
Richard Westhaver <ellis@rwest.io>
parents:
582
diff
changeset
|
79 | (<-- (zebra ?h ?w ?z) |
35bb0d5ec95e
bug fixes, added freedesktop.org.xml rule. more work on prolog/dql - considering lib/lang+forrth..
Richard Westhaver <ellis@rwest.io>
parents:
582
diff
changeset
|
80 | ;; Each house is of the form: |
35bb0d5ec95e
bug fixes, added freedesktop.org.xml rule. more work on prolog/dql - considering lib/lang+forrth..
Richard Westhaver <ellis@rwest.io>
parents:
582
diff
changeset
|
81 | ;; (house nationality pet cigarette drink house-color) |
35bb0d5ec95e
bug fixes, added freedesktop.org.xml rule. more work on prolog/dql - considering lib/lang+forrth..
Richard Westhaver <ellis@rwest.io>
parents:
582
diff
changeset
|
82 | (= ?h ((house norwegian ? ? ? ?) ;1,10 |
35bb0d5ec95e
bug fixes, added freedesktop.org.xml rule. more work on prolog/dql - considering lib/lang+forrth..
Richard Westhaver <ellis@rwest.io>
parents:
582
diff
changeset
|
83 | ? |
35bb0d5ec95e
bug fixes, added freedesktop.org.xml rule. more work on prolog/dql - considering lib/lang+forrth..
Richard Westhaver <ellis@rwest.io>
parents:
582
diff
changeset
|
84 | (house ? ? ? milk ?) ? ?)) ; 9 |
35bb0d5ec95e
bug fixes, added freedesktop.org.xml rule. more work on prolog/dql - considering lib/lang+forrth..
Richard Westhaver <ellis@rwest.io>
parents:
582
diff
changeset
|
85 | (member (house englishman ? ? ? red) ?h) ; 2 |
35bb0d5ec95e
bug fixes, added freedesktop.org.xml rule. more work on prolog/dql - considering lib/lang+forrth..
Richard Westhaver <ellis@rwest.io>
parents:
582
diff
changeset
|
86 | (member (house spaniard dog ? ? ?) ?h) ; 3 |
35bb0d5ec95e
bug fixes, added freedesktop.org.xml rule. more work on prolog/dql - considering lib/lang+forrth..
Richard Westhaver <ellis@rwest.io>
parents:
582
diff
changeset
|
87 | (member (house ? ? ? coffee green) ?h) ; 4 |
35bb0d5ec95e
bug fixes, added freedesktop.org.xml rule. more work on prolog/dql - considering lib/lang+forrth..
Richard Westhaver <ellis@rwest.io>
parents:
582
diff
changeset
|
88 | (member (house ukrainian ? ? tea ?) ?h) ; 5 |
35bb0d5ec95e
bug fixes, added freedesktop.org.xml rule. more work on prolog/dql - considering lib/lang+forrth..
Richard Westhaver <ellis@rwest.io>
parents:
582
diff
changeset
|
89 | (iright (house ? ? ? ? ivory) ; 6 |
35bb0d5ec95e
bug fixes, added freedesktop.org.xml rule. more work on prolog/dql - considering lib/lang+forrth..
Richard Westhaver <ellis@rwest.io>
parents:
582
diff
changeset
|
90 | (house ? ? ? ? green) ?h) |
35bb0d5ec95e
bug fixes, added freedesktop.org.xml rule. more work on prolog/dql - considering lib/lang+forrth..
Richard Westhaver <ellis@rwest.io>
parents:
582
diff
changeset
|
91 | (member (house ? snails winston ? ?) ?h) ; 7 |
35bb0d5ec95e
bug fixes, added freedesktop.org.xml rule. more work on prolog/dql - considering lib/lang+forrth..
Richard Westhaver <ellis@rwest.io>
parents:
582
diff
changeset
|
92 | (member (house ? ? kools ? yellow) ?h) ; 8 |
35bb0d5ec95e
bug fixes, added freedesktop.org.xml rule. more work on prolog/dql - considering lib/lang+forrth..
Richard Westhaver <ellis@rwest.io>
parents:
582
diff
changeset
|
93 | (nextto (house ? ? chesterfield ? ?) ;11 |
35bb0d5ec95e
bug fixes, added freedesktop.org.xml rule. more work on prolog/dql - considering lib/lang+forrth..
Richard Westhaver <ellis@rwest.io>
parents:
582
diff
changeset
|
94 | (house ? fox ? ? ?) ?h) |
35bb0d5ec95e
bug fixes, added freedesktop.org.xml rule. more work on prolog/dql - considering lib/lang+forrth..
Richard Westhaver <ellis@rwest.io>
parents:
582
diff
changeset
|
95 | (nextto (house ? ? kools ? ?) ;12 |
35bb0d5ec95e
bug fixes, added freedesktop.org.xml rule. more work on prolog/dql - considering lib/lang+forrth..
Richard Westhaver <ellis@rwest.io>
parents:
582
diff
changeset
|
96 | (house ? horse ? ? ?) ?h) |
35bb0d5ec95e
bug fixes, added freedesktop.org.xml rule. more work on prolog/dql - considering lib/lang+forrth..
Richard Westhaver <ellis@rwest.io>
parents:
582
diff
changeset
|
97 | (member (house ? ? luckystrike oj ?) ?h) ;13 |
35bb0d5ec95e
bug fixes, added freedesktop.org.xml rule. more work on prolog/dql - considering lib/lang+forrth..
Richard Westhaver <ellis@rwest.io>
parents:
582
diff
changeset
|
98 | (member (house japanese ? parliaments ? ?) ?h) ;14 |
35bb0d5ec95e
bug fixes, added freedesktop.org.xml rule. more work on prolog/dql - considering lib/lang+forrth..
Richard Westhaver <ellis@rwest.io>
parents:
582
diff
changeset
|
99 | (nextto (house norwegian ? ? ? ?) ;15 |
35bb0d5ec95e
bug fixes, added freedesktop.org.xml rule. more work on prolog/dql - considering lib/lang+forrth..
Richard Westhaver <ellis@rwest.io>
parents:
582
diff
changeset
|
100 | (house ? ? ? ? blue) ?h) |
35bb0d5ec95e
bug fixes, added freedesktop.org.xml rule. more work on prolog/dql - considering lib/lang+forrth..
Richard Westhaver <ellis@rwest.io>
parents:
582
diff
changeset
|
101 | (member (house ?w ? ? water ?) ?h) ;Q1 |
35bb0d5ec95e
bug fixes, added freedesktop.org.xml rule. more work on prolog/dql - considering lib/lang+forrth..
Richard Westhaver <ellis@rwest.io>
parents:
582
diff
changeset
|
102 | (member (house ?z zebra ? ? ?) ?h)) ;Q2 |
35bb0d5ec95e
bug fixes, added freedesktop.org.xml rule. more work on prolog/dql - considering lib/lang+forrth..
Richard Westhaver <ellis@rwest.io>
parents:
582
diff
changeset
|
103 | ;; execute the query |
35bb0d5ec95e
bug fixes, added freedesktop.org.xml rule. more work on prolog/dql - considering lib/lang+forrth..
Richard Westhaver <ellis@rwest.io>
parents:
582
diff
changeset
|
104 | (?- (zebra ?houses ?water-drinker ?zebra-owner)) |
35bb0d5ec95e
bug fixes, added freedesktop.org.xml rule. more work on prolog/dql - considering lib/lang+forrth..
Richard Westhaver <ellis@rwest.io>
parents:
582
diff
changeset
|
105 | ;; It is believed that solving zebra a |
35bb0d5ec95e
bug fixes, added freedesktop.org.xml rule. more work on prolog/dql - considering lib/lang+forrth..
Richard Westhaver <ellis@rwest.io>
parents:
582
diff
changeset
|
106 | ;; single time requires 12825 inferences. |
35bb0d5ec95e
bug fixes, added freedesktop.org.xml rule. more work on prolog/dql - considering lib/lang+forrth..
Richard Westhaver <ellis@rwest.io>
parents:
582
diff
changeset
|
107 | ) |