tests: Add "speaker" utility.
[8sync.git] / tests / test-agenda.scm
index 013bce7c2d2bb45c85b74a9fc146d7a228076ba3..ae53e55cf6db9440950d860a3f1d1afaaf9419b6 100644 (file)
   (define var
     (@@ (8sync agenda) var)))
 
   (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
 ;;; =============
 \f
 ;;; queue helpers
 ;;; =============
 
 ;; the dummy test
 
 
 ;; the dummy test
 
-(define speaker (speak-it))
-
 (define (dummy-func)
 (define (dummy-func)
-  (speaker "I'm a dummy\n"))
+  (speak "I'm a dummy\n"))
 
 (define (run-dummy)
 
 (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))
 
   (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
 
 ;; 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
 
 
 ;; End tests