/
test.lisp
26 lines (22 loc) · 859 Bytes
/
test.lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
(in-package #:fact-base)
(defparameter *base* (make-fact-base :indices '(:a :ab :abc)))
(insert! *base* (list 2 :whiskey :foxtrot))
(insert! *base* (list 1 :foxtrot :beta))
(insert! *base* (list 0 :whiskey :tango))
(insert! *base* (list 4 :tango :beta))
(insert! *base* (list 0 :b :c))
;; (show (index *base*))
(lookup *base* :a 0)
(lookup *base* :a 0 :b :whiskey)
(delete! *base* (list 0 :whiskey :tango))
;; (show (index *base*))
(delete! *base* (list 0 :b :c))
;; (show (index *base*))
(defmethod test-generate! (n)
(loop repeat n
do (multi-insert!
*base* `((:number ,(random 100)) (:type :digit)
(:time ,(get-universal-time))
(:user ,(nth (random 7) '("Inaimathi" "Anon" "Someone Else" "Albert" "Beatrice" "Charles" "Daria")))))))
(test-generate! 10000)
(for-all (and (?id :number 62) (?id :user ?name)) :in *base* :collect ?name)