changeset 698: | 96958d3eb5b0 |
parent: | bbd9024f2fe2 |
author: | Richard Westhaver <ellis@rwest.io> |
date: | Fri, 04 Oct 2024 22:04:59 -0400 |
permissions: | -rw-r--r-- |
description: | fixes |
261 | 1 | ;;; rt/util.lisp --- Test Utilities |
2 | ||
3 | ;; |
|
4 | ||
5 | ;;; Commentary: |
|
6 | ||
7 | ;; some of these are taken from the TEST-UTIL package of SBCL |
|
8 | ;; (tests/test-util.lisp) |
|
9 | ||
10 | ;;; Code: |
|
11 | (in-package :rt) |
|
632
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
12 | |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
13 | ;;; tmp |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
14 | (defmacro with-tmp-directory ((&optional (name (string (gensym "tmp"))) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
15 | (defaults *default-tmp-directory*)) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
16 | &body body) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
17 | `(let ((*tmp* (directory-path (merge-pathnames ,name ,defaults)))) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
18 | (ensure-directories-exist *tmp*) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
19 | (unwind-protect (progn ,@body) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
20 | (sb-ext:delete-directory *tmp* :recursive t)))) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
21 | |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
22 | (defmacro with-tmp-file ((stream-var &key (name (string (gensym "tmp"))) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
23 | type |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
24 | (directory *default-tmp-directory*) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
25 | (direction :output) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
26 | (if-exists :supersede) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
27 | (element-type ''character)) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
28 | &body body) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
29 | `(let ((*tmp* (make-pathname :name ,name :type ,type :directory ,(namestring directory)))) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
30 | (with-open-file (,stream-var *tmp* :direction ,direction :element-type ,element-type |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
31 | :if-exists ,if-exists) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
32 | (unwind-protect (progn ,@body) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
33 | (delete-file *tmp*))))) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
34 | |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
35 | ;;; random |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
36 | (defvar *simple-charset* "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789") |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
37 | |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
38 | (defun random-elt (seq) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
39 | (elt seq (random (length seq)))) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
40 | |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
41 | (defun random-ref (vec) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
42 | (aref vec (random (length vec)))) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
43 | |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
44 | (defun random-char () |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
45 | (random-ref *simple-charset*)) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
46 | |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
47 | (defun random-chars (dim) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
48 | (let ((r (make-array dim :element-type 'character))) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
49 | (dotimes (i (array-total-size r) r) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
50 | (setf (row-major-aref r i) (random-char))))) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
51 | |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
52 | (defun random-byte () (random 255)) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
53 | |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
54 | (defun random-bytes (dim) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
55 | (let ((r (make-array dim :element-type 'octet))) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
56 | (dotimes (i (array-total-size r) r) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
57 | (setf (row-major-aref r i) (random-byte))))) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
58 | |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
59 | (eval-when (:compile-toplevel :load-toplevel :execute) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
60 | (defun make-test (&rest slots) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
61 | (apply #'make-instance 'test slots)) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
62 | (defun make-suite (&rest slots) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
63 | (apply #'make-instance 'test-suite slots))) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
64 | |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
65 | ;; TODO 2023-09-04: optimize |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
66 | ;;(declaim (inline do-tests)) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
67 | (defun do-tests (&optional (suite *test-suite*) force (output *standard-output*)) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
68 | (if (pathnamep output) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
69 | (with-open-file (stream output :direction :output) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
70 | (do-suite (ensure-suite suite) :stream stream :force force)) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
71 | (do-suite (ensure-suite suite) :stream output :force force))) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
72 | |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
73 | (defvar *test-output-mutex* (sb-thread:make-mutex :name "tests-output")) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
74 | |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
75 | ;; TODO |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
76 | (defun do-tests-concurrently (&optional (suite *test-suite*) force (output *standard-output*)) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
77 | (declare (ignore suite force)) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
78 | (sb-thread:with-mutex (*test-output-mutex*) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
79 | (let ((stream (make-synonym-stream output))) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
80 | (let ((*standard-output* stream) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
81 | (*error-output* stream)) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
82 | (nyi!))))) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
83 | |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
84 | (defun reset-tests () |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
85 | (setq *testing* nil |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
86 | *test-suite* nil |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
87 | *test-suite-list* nil |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
88 | *test-input* nil)) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
89 | |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
90 | ;; this assumes that *test-suite* is re-initialized correctly to the |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
91 | ;; correct test-suite object. |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
92 | (defun continue-testing () |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
93 | (if-let ((test *testing*)) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
94 | (throw '%in-test test) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
95 | (do-suite *test-suite*))) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
96 | |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
97 | ;; NOTE 2023-09-01: `pushnew' does not return an indication of whether |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
98 | ;; place is changed - it returns place. This is functionally sound but |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
99 | ;; means that if we want to do something else in the event that place |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
100 | ;; is unchanged, we run into some friction, |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
101 | ;; https://stackoverflow.com/questions/56228832/adapting-common-lisp-pushnew-to-return-success-failure |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
102 | (defun spush (item lst &key (test #'equal)) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
103 | "Substituting `push'" |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
104 | (declare (type function test)) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
105 | (cond |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
106 | ((null lst) (push item lst)) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
107 | ((list lst) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
108 | (if-let ((found (member item lst |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
109 | :test test))) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
110 | (progn |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
111 | (rplaca found item) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
112 | lst) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
113 | (push item lst))) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
114 | #|(or nil '(t (cons item lst)))|#)) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
115 | |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
116 | ;; FIX 2023-08-31: spush, replace with `add-test' method. |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
117 | ;; (declaim (inline normalize-test-name)) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
118 | (defun normalize-test-name (a) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
119 | "Return the normalized `test-suite-designator' of A." |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
120 | (etypecase a |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
121 | (string (string-upcase a)) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
122 | (symbol (symbol-name a)) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
123 | (test-object (normalize-test-name (test-name a))) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
124 | (t (format nil "~A" a)))) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
125 | |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
126 | (defun test-name= (a b) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
127 | "Return t if A and B are similar `test-suite-designator's." |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
128 | (let ((a (normalize-test-name a)) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
129 | (b (normalize-test-name b))) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
130 | (string= a b))) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
131 | |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
132 | ;; (declaim (inline assert-suite ensure-suite)) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
133 | (defun ensure-suite (name) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
134 | (if-let ((ok (member name *test-suite-list* :test #'test-name=))) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
135 | (car ok) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
136 | (when (or (eq name t) (null name)) (make-suite :name *default-test-suite-name*)))) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
137 | |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
138 | (defun check-suite-designator (suite) (check-type suite test-suite-designator)) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
139 | |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
140 | (defun assert-suite (name) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
141 | (check-suite-designator name) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
142 | (assert (ensure-suite name))) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
143 | |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
144 | (declaim (inline test-opt-key-p test-opt-valid-p)) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
145 | (defun test-opt-key-p (k) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
146 | "Test if K is a `test-opt-key'." |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
147 | (member k '(:profile :save :stream))) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
148 | |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
149 | (defun test-opt-valid-p (f) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
150 | "Test if F is a valid `test-opt' form. If so, return F else nil." |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
151 | (when (test-opt-key-p (car f)) |
bbd9024f2fe2
lib/rt upgrades and refactoring
Richard Westhaver <ellis@rwest.io>
parents:
261
diff
changeset
|
152 | f)) |