changelog shortlog graph tags branches changeset file revisions annotate raw help

Mercurial > core / lisp/lib/q/tests/fuzz.lisp

revision 582: 568c39371122
parent 581: d3e2829521a3
     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))