tests: test-agenda: Remove broken shebang.
[8sync.git] / tests / test-agenda.scm
index d62e01ce284f777e831884cf9e9a0610413886f5..868d4ce3b9545538d6a59668486730d319b53c2e 100644 (file)
 ;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 ;;; 02110-1301 USA
 
-#!/usr/bin/guile \
--s
-!#
-
 (define-module (tests test-agenda)
   #:use-module (srfi srfi-64)
   #:use-module (ice-9 q)
+  #:use-module (ice-9 match)
   #:use-module (ice-9 receive)
   #:use-module (8sync agenda)
   #:use-module (tests utils))
   (test-equal (run-request-when run-two-squared) '(88 . 0)))
 
 
-;;; %run, %8sync and friends tests
+;;; %run, 8sync and friends tests
 ;;; ==============================
 
-(define (test-%run-and-friends async-request expected-when)
-  (let* ((fake-kont (speak-it))
-         (run-request ((@@ (8sync agenda) setup-async-request)
-                       fake-kont async-request)))
-    (test-equal (car async-request) '*async-request*)
-    (test-equal (run-request-when run-request) expected-when)
-    ;; we're using speaker as a fake continuation ;p
-    ((run-request-proc run-request))
-    (test-equal (fake-kont)
-                '("applesauce"))))
-
-(test-%run-and-friends (%run (string-concatenate '("apple" "sauce")))
+(define-syntax-rule (run-in-fake-agenda
+                     code-to-run)
+  (let ((agenda (make-agenda)))
+    (parameterize ((%current-agenda agenda))
+      (call-with-prompt
+       (agenda-prompt-tag agenda)
+       (lambda ()
+         (list '*normal-result* code-to-run))
+       (lambda (kont async-request)
+         (list '*caught-kont*
+               kont async-request
+               ((@@ (8sync agenda) setup-async-request)
+                kont async-request)))))))
+
+(define (test-%run-and-friends run-result expected-when)
+  (match run-result
+    (('*caught-kont* kont async-request setup-request)
+     (let* ((fake-kont (speak-it))
+            (run-request ((@@ (8sync agenda) setup-async-request)
+                          fake-kont async-request)))
+       (test-equal (car async-request) '*async-request*)
+       (test-equal (run-request-when run-request) expected-when)
+       ;; we're using speaker as a fake continuation ;p
+       ((run-request-proc run-request))
+       (test-equal (fake-kont)
+                   '("applesauce"))))))
+
+(test-%run-and-friends (run-in-fake-agenda
+                        (8sync (string-concatenate '("apple" "sauce"))))
                        #f)
 
-(test-%run-and-friends (%run-at (string-concatenate '("apple" "sauce"))
-                                '(8 . 0))
+(test-%run-and-friends (run-in-fake-agenda
+                        (8sync (string-concatenate '("apple" "sauce"))
+                                '(8 . 0)))
                        '(8 . 0))
 
-(test-%run-and-friends (%run-delay (string-concatenate '("apple" "sauce"))
-                                   8)
+(test-%run-and-friends (run-in-fake-agenda
+                        (8sync-delay (string-concatenate '("apple" "sauce"))
+                                      8))
                        ;; whoa, I'm surprised equal? can
                        ;; compare records like this
                        (tdelta 8))
 
 ;; TODO: test %port-request
-;; TODO: test %8sync and friends!
+;; TODO: test 8sync and friends!
 
 
 ;;; Agenda tests
   (speaker "Today I went to the zoo and I saw...\n")
   (speaker
    (string-concatenate
-    `("A " ,(symbol->string (%8sync (%run (return-monkey)))) "!\n"))))
+    `("A " ,(symbol->string (8sync (return-monkey))) "!\n"))))
 
 (begin
   (set! speaker (speak-it))
 
 (define (indirection-remote-func-breaks)
   (speaker "bebop\n")
-  (%8sync (%run (remote-func-breaks)))
+  (8sync (remote-func-breaks))
   (speaker "bidop\n"))
 
 (define* (local-func-gets-break #:key with-indirection)
   (speaker "Time for exception fun!\n")
   (let ((caught-exception #f))
     (catch-8sync
-     (%8sync-run (if with-indirection
+     (8sync-run (if with-indirection
                          (indirection-remote-func-breaks)
                          (remote-func-breaks)))
       ('numerical-overflow