From f8ffd105304a751bd36f37ca1ece3340cc22825c Mon Sep 17 00:00:00 2001 From: Pierre Neidhardt Date: Fri, 26 May 2023 12:16:53 +0200 Subject: [PATCH] tests: Add performance test. --- tests/tests.lisp | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/tests/tests.lisp b/tests/tests.lisp index 328a8bd..d604633 100644 --- a/tests/tests.lisp +++ b/tests/tests.lisp @@ -164,6 +164,30 @@ internal-time-units-per-second)) (prompter:all-ready-p prompter))))) +(define-test spam-input () + (let* ((suggestion-values '("foobar" "foobaz")) + (source (make-instance 'prompter:source + :name "Test source" + :constructor suggestion-values + ;; :filter #'slow-identity-match + ))) + (with-collected-prompter (prompter (prompter:make :sources source + :input-delay 0.005)) + (let ((inputs (mapcar (lambda (&rest _) + (declare (ignore _)) + (princ-to-string (random 100000))) + (alex:iota 100)))) + (prompter:all-ready-p prompter) + (let ((before-input (get-internal-real-time))) + (dolist (input inputs) + (setf (prompter:input prompter) input)) + ;; Consecutive inputs happened fast enough + (assert-equality #'< + 0.01 ; Slow ECL should be fine here even on a CI. + (/ (- (get-internal-real-time) before-input) + internal-time-units-per-second)) + (prompter:all-ready-p prompter)))))) + (define-test yes-no-prompt () (let* ((source (make-instance 'prompter:yes-no-source :constructor '("no" "yes"))))