summaryrefslogtreecommitdiff
path: root/tests/basic.scm
diff options
context:
space:
mode:
Diffstat (limited to 'tests/basic.scm')
-rw-r--r--tests/basic.scm61
1 files changed, 31 insertions, 30 deletions
diff --git a/tests/basic.scm b/tests/basic.scm
index dbc0e50..927d4c5 100644
--- a/tests/basic.scm
+++ b/tests/basic.scm
@@ -42,7 +42,7 @@
(define-syntax-rule (assert-run-fibers-terminates exp kw ...)
(begin
- (format #t "assert run-fibers on ~s terminates: " 'exp)
+ (format #t "assert terminates: ~s: " '(run-fibers (lambda () exp) kw ...))
(force-output)
(let ((start (get-internal-real-time)))
(call-with-values (lambda () (run-fibers (lambda () exp) kw ...))
@@ -53,7 +53,8 @@
(define-syntax-rule (assert-run-fibers-returns (expected ...) exp)
(begin
- (call-with-values (lambda () (assert-run-fibers-terminates exp))
+ (call-with-values (lambda ()
+ (assert-run-fibers-terminates exp #:drain? #t))
(lambda run-fiber-return-vals
(assert-equal '(expected ...) run-fiber-return-vals)))))
@@ -66,25 +67,25 @@
(assert-equal #f #f)
(assert-terminates #t)
(assert-equal #f (false-if-exception (begin (run-fibers) #t)))
-(assert-run-fibers-terminates (sleep 1))
-(assert-run-fibers-terminates (do-times 1 (spawn-fiber (lambda () #t))))
-(assert-run-fibers-terminates (do-times 10 (spawn-fiber (lambda () #t))))
-(assert-run-fibers-terminates (do-times 100 (spawn-fiber (lambda () #t))))
-(assert-run-fibers-terminates (do-times 1000 (spawn-fiber (lambda () #t))))
-(assert-run-fibers-terminates (do-times 10000 (spawn-fiber (lambda () #t))))
-(assert-run-fibers-terminates (do-times 100000 (spawn-fiber (lambda () #t))))
+(assert-run-fibers-terminates (sleep 1) #:drain? #t)
+(assert-run-fibers-terminates (do-times 1 (spawn-fiber (lambda () #t))) #:drain? #t)
+(assert-run-fibers-terminates (do-times 10 (spawn-fiber (lambda () #t))) #:drain? #t)
+(assert-run-fibers-terminates (do-times 100 (spawn-fiber (lambda () #t))) #:drain? #t)
+(assert-run-fibers-terminates (do-times 1000 (spawn-fiber (lambda () #t))) #:drain? #t)
+(assert-run-fibers-terminates (do-times 10000 (spawn-fiber (lambda () #t))) #:drain? #t)
+(assert-run-fibers-terminates (do-times 100000 (spawn-fiber (lambda () #t))) #:drain? #t)
(assert-run-fibers-terminates (do-times 100000
- (spawn-fiber (lambda () #t) #:parallel? #t)))
+ (spawn-fiber (lambda () #t) #:parallel? #t)) #:drain? #t)
(define (loop-to-1e4) (let lp ((i 0)) (when (< i #e1e4) (lp (1+ i)))))
-(assert-run-fibers-terminates (do-times 100000 (spawn-fiber loop-to-1e4)))
-(assert-run-fibers-terminates (do-times 100000 (spawn-fiber loop-to-1e4 #:parallel? #t)))
-(assert-run-fibers-terminates (do-times 1 (spawn-fiber (lambda () (sleep 1)))))
-(assert-run-fibers-terminates (do-times 10 (spawn-fiber (lambda () (sleep 1)))))
-(assert-run-fibers-terminates (do-times 100 (spawn-fiber (lambda () (sleep 1)))))
-(assert-run-fibers-terminates (do-times 1000 (spawn-fiber (lambda () (sleep 1)))))
-(assert-run-fibers-terminates (do-times 10000 (spawn-fiber (lambda () (sleep 1)))))
-(assert-run-fibers-terminates (do-times 20000 (spawn-fiber (lambda () (sleep 1)))))
-(assert-run-fibers-terminates (do-times 40000 (spawn-fiber (lambda () (sleep 1)))))
+(assert-run-fibers-terminates (do-times 100000 (spawn-fiber loop-to-1e4)) #:drain? #t)
+(assert-run-fibers-terminates (do-times 100000 (spawn-fiber loop-to-1e4 #:parallel? #t)) #:drain? #t)
+(assert-run-fibers-terminates (do-times 1 (spawn-fiber (lambda () (sleep 1)))) #:drain? #t)
+(assert-run-fibers-terminates (do-times 10 (spawn-fiber (lambda () (sleep 1)))) #:drain? #t)
+(assert-run-fibers-terminates (do-times 100 (spawn-fiber (lambda () (sleep 1)))) #:drain? #t)
+(assert-run-fibers-terminates (do-times 1000 (spawn-fiber (lambda () (sleep 1)))) #:drain? #t)
+(assert-run-fibers-terminates (do-times 10000 (spawn-fiber (lambda () (sleep 1)))) #:drain? #t)
+(assert-run-fibers-terminates (do-times 20000 (spawn-fiber (lambda () (sleep 1)))) #:drain? #t)
+(assert-run-fibers-terminates (do-times 40000 (spawn-fiber (lambda () (sleep 1)))) #:drain? #t)
(define (spawn-fiber-tree n leaf)
(do-times n (spawn-fiber
@@ -92,20 +93,20 @@
(if (= n 1)
(leaf)
(spawn-fiber-tree (1- n) leaf))))))
-(assert-run-fibers-terminates (spawn-fiber-tree 5 (lambda () (sleep 1))))
+(assert-run-fibers-terminates (spawn-fiber-tree 5 (lambda () (sleep 1))) #:drain? #t)
(define (spawn-fiber-chain n)
(spawn-fiber
(lambda ()
(unless (zero? (1- n))
(spawn-fiber-chain (1- n))))))
-(assert-run-fibers-terminates (spawn-fiber-chain 5))
-(assert-run-fibers-terminates (spawn-fiber-chain 50))
-(assert-run-fibers-terminates (spawn-fiber-chain 500))
-(assert-run-fibers-terminates (spawn-fiber-chain 5000))
-(assert-run-fibers-terminates (spawn-fiber-chain 50000))
-(assert-run-fibers-terminates (spawn-fiber-chain 500000))
-(assert-run-fibers-terminates (spawn-fiber-chain 5000000))
+(assert-run-fibers-terminates (spawn-fiber-chain 5) #:drain? #t)
+(assert-run-fibers-terminates (spawn-fiber-chain 50) #:drain? #t)
+(assert-run-fibers-terminates (spawn-fiber-chain 500) #:drain? #t)
+(assert-run-fibers-terminates (spawn-fiber-chain 5000) #:drain? #t)
+(assert-run-fibers-terminates (spawn-fiber-chain 50000) #:drain? #t)
+(assert-run-fibers-terminates (spawn-fiber-chain 500000) #:drain? #t)
+(assert-run-fibers-terminates (spawn-fiber-chain 5000000) #:drain? #t)
(let ((run-order 0))
(define (test-run-order count)
@@ -116,7 +117,7 @@
(error "bad run order" run-order n))
(set! run-order (1+ n)))))
(iota count)))
- (assert-run-fibers-terminates (test-run-order 10) #:parallelism 1))
+ (assert-run-fibers-terminates (test-run-order 10) #:parallelism 1 #:drain? #t))
(let ((run-order 0))
(define (test-wakeup-order count)
@@ -127,7 +128,7 @@
(error "bad run order" run-order n))
(set! run-order (1+ n)))))
(iota count)))
- (assert-run-fibers-terminates (test-wakeup-order 10) #:parallelism 1))
+ (assert-run-fibers-terminates (test-wakeup-order 10) #:parallelism 1 #:drain? #t))
(assert-run-fibers-returns (1) 1)
@@ -143,7 +144,7 @@
(set! failed? (< elapsed timeout)))))))
(assert-run-fibers-terminates
- (do-times 20 (check-sleep (random 1.0))))
+ (do-times 20 (check-sleep (random 1.0))) #:drain? #t)
;; exceptions