changelog shortlog graph tags branches changeset files file revisions raw help

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

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