1.1--- a/lisp/lib/q/tests/fuzz.lisp Tue Aug 06 21:17:24 2024 -0400
1.2+++ b/lisp/lib/q/tests/fuzz.lisp Wed Aug 07 21:09:43 2024 -0400
1.3@@ -5,8 +5,27 @@
1.4 ;;; Code:
1.5 (in-package :q/tests/fuzz)
1.6
1.7-(defclass query-fuzzer (fuzzer) (data-source))
1.8+(defvar *fuzz-value-max-size* 32)
1.9+
1.10+;; > schema, state, generator
1.11+(defclass query-fuzzer (fuzzer data-source) ())
1.12+
1.13+(defun generate-sql-type (state &optional (type :string))
1.14+ (case type
1.15+ (:integer (make-instance 'sql-number :value (random most-positive-fixnum)))
1.16+ (:float (make-instance 'sql-number :value (random most-positive-single-float)))
1.17+ (:double (make-instance 'sql-number :value (random most-positive-double-float)))
1.18+ (:string (make-instance 'sql-string :value (rt:random-chars (random *fuzz-value-max-size* state))))))
1.19
1.20-(defclass sql-fuzzer (query-fuzzer) ())
1.21+(defun generate-dql-type (state &optional (type :string)))
1.22+
1.23+(defclass sql-fuzzer (query-fuzzer) ()
1.24+ (:default-initargs
1.25+ :generator #'generate-sql-type))
1.26
1.27-(defclass dql-fuzzer (query-fuzzer) ())
1.28+(defmethod fuzz ((self sql-fuzzer) &key type)
1.29+ (funcall (fuzz-generator self) (fuzz-state self) type))
1.30+
1.31+(defclass dql-fuzzer (query-fuzzer) ()
1.32+ (:default-initargs
1.33+ :generator #'generate-dql-type))