changelog shortlog graph tags branches changeset files file revisions raw help

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

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
568c39371122 sql updates, fuzzz
Richard Westhaver <ellis@rwest.io>
parents: 580
diff changeset
19
   (setf (gethash "FOO" tbl) (make-df nil))
568c39371122 sql updates, fuzzz
Richard Westhaver <ellis@rwest.io>
parents: 580
diff changeset
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
568c39371122 sql updates, fuzzz
Richard Westhaver <ellis@rwest.io>
parents: 580
diff changeset
22
     (let ((tbl (make-hash-table :test 'equalp)))
568c39371122 sql updates, fuzzz
Richard Westhaver <ellis@rwest.io>
parents: 580
diff changeset
23
       (is (gethash "FOO" tbl))
568c39371122 sql updates, fuzzz
Richard Westhaver <ellis@rwest.io>
parents: 580
diff changeset
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
   )