tests: Add "speaker" utility.
authorChristopher Allan Webber <cwebber@dustycloud.org>
Mon, 2 Jan 2017 17:34:13 +0000 (11:34 -0600)
committerChristopher Allan Webber <cwebber@dustycloud.org>
Mon, 2 Jan 2017 17:34:13 +0000 (11:34 -0600)
* tests/utils.scm (speak-it, %speaker, speak, get-spoken, with-fresh-speaker):
New variables.
* tests/test-agenda.scm (speak-it): Remove in favor of new speaker from
utils.scm.  Update to use new speaker.

tests/test-agenda.scm
tests/utils.scm

index 013bce7c2d2bb45c85b74a9fc146d7a228076ba3..ae53e55cf6db9440950d860a3f1d1afaaf9419b6 100644 (file)
   (define var
     (@@ (8sync agenda) var)))
 
-\f
-
-;;; Helpers
-;;; =======
-
-(define (speak-it)
-  (let ((messages '()))
-    (lambda* (#:optional message)
-      (if message (set! messages (append messages (list message))))
-      messages)))
-
 \f
 ;;; queue helpers
 ;;; =============
 
 ;; the dummy test
 
-(define speaker (speak-it))
-
 (define (dummy-func)
-  (speaker "I'm a dummy\n"))
+  (speak "I'm a dummy\n"))
 
 (define (run-dummy)
-  (speaker "I bet I can make you say you're a dummy!\n")
+  (speak "I bet I can make you say you're a dummy!\n")
   (run-it dummy-func))
 
-(begin
-  (set! speaker (speak-it))  ; reset the speaker
-  (start-agenda (make-agenda #:queue (make-q* run-dummy))
-                #:stop-condition (true-after-n-times 2))
-  (test-equal (speaker)
-    '("I bet I can make you say you're a dummy!\n"
-      "I'm a dummy\n")))
+(with-fresh-speaker
+ (start-agenda (make-agenda #:queue (make-q* run-dummy))
+               #:stop-condition (true-after-n-times 2))
+ (test-equal (get-spoken)
+   '("I bet I can make you say you're a dummy!\n"
+     "I'm a dummy\n")))
 
 ;; should only do the first one after one round though
-(begin
-  (set! speaker (speak-it))  ; reset the speaker
-  (start-agenda (make-agenda #:queue (make-q* run-dummy))
-                #:stop-condition (true-after-n-times 1))
-  (test-equal (speaker)
-    '("I bet I can make you say you're a dummy!\n")))
+(with-fresh-speaker
+ (start-agenda (make-agenda #:queue (make-q* run-dummy))
+               #:stop-condition (true-after-n-times 1))
+ (test-equal (get-spoken)
+   '("I bet I can make you say you're a dummy!\n")))
 
 
 ;; End tests
index 5d4e3cfc260966a78b5cbb969bf0f2614b63eb92..e20b5b872cd04057c29e6b6af446f5ef10876293 100644 (file)
 
 (define-module (tests utils)
   #:use-module (srfi srfi-64)
-  #:export (test-exit))
+  #:export (test-exit
+
+            speak get-spoken with-fresh-speaker))
 
 (define (test-exit)
   (exit (= (test-runner-fail-count (test-runner-current)) 0)))
+
+
+\f
+
+;;; display-like helpers
+;;; ====================
+
+(define (speak-it)
+  (let ((messages '()))
+    (lambda* (#:optional message)
+      (if message (set! messages (append messages (list message))))
+      messages)))
+
+(define %speaker (make-parameter (speak-it)))
+
+(define (speak message)
+  "Speak a message into the %speaker parameter"
+  ((%speaker) message))
+
+(define (get-spoken)
+  "Get what's been spoken in the %speaker parameter"
+  ((%speaker)))
+
+(define-syntax-rule (with-fresh-speaker body ...)
+  "Run body with a fresh %speaker"
+  (parameterize ((%speaker (speak-it)))
+    body ...))