run / wrapped stuff
[8sync.git] / tests.scm
index 52d05ba86e09c23dc777149c67beb7fac2b51949..b865ca809bb728c6798db8a25b1e3e9bc6fa9cdc 100644 (file)
--- a/tests.scm
+++ b/tests.scm
                '((8 . 1) (10 . 0) (10 . 10) (11 . 0))
                '())
 
+;; Break off half of those and do some tests on them
+(define some-extracted
+  (schedule-extract-until! sched 10))
+(assert-times-expected some-extracted '((8 . 1) (10 . 0)))
+(assert-times-expected (schedule-segments sched) '((10 . 10) (11 . 0)))
+(define first-extracted-queue
+  (time-segment-queue (car some-extracted)))
+(define second-extracted-queue
+  (time-segment-queue (cadr some-extracted)))
+(test-assert (not (q-empty? first-extracted-queue)))
+(test-equal ((deq! first-extracted-queue)) 'd)
+(test-assert (q-empty? first-extracted-queue))
+
+(test-assert (not (q-empty? second-extracted-queue)))
+(test-equal ((deq! second-extracted-queue)) 'a)
+(test-equal ((deq! second-extracted-queue)) 'b)
+(test-assert (q-empty? second-extracted-queue))
+
+;; Add one more and test flattening to a queue
+(test-assert (not (schedule-empty? sched)))
+(schedule-add! '(10 . 10) f-proc sched)
+(define remaining-segments
+  (schedule-extract-until! sched '(9000 . 1)))
+(test-assert (schedule-empty? sched))
+(define some-queue (make-q))
+(enq! some-queue (const 'ho-ho))
+(enq! some-queue (const 'ha-ha))
+(add-segments-contents-to-queue! remaining-segments some-queue)
+(test-assert (not (q-empty? some-queue)))
+(test-equal 'ho-ho ((deq! some-queue)))
+(test-equal 'ha-ha ((deq! some-queue)))
+(test-equal 'e ((deq! some-queue)))
+(test-equal 'f ((deq! some-queue)))
+(test-equal 'c ((deq! some-queue)))
+(test-assert (q-empty? some-queue))
+
+;; ... whew!
+
+;; Run/wrap request stuff
+;; ----------------------
+
+(let ((wrapped (wrap (+ 1 2))))
+  (test-assert (procedure? wrapped))
+  (test-equal (wrapped) 3))
+
+(let ((run-two-squared (run (lambda () (* 2 2)))))
+  (test-assert (run-request? run-two-squared))
+  (test-assert (procedure? (run-request-proc run-two-squared)))
+  (test-equal ((run-request-proc run-two-squared)) 4)
+  (test-eq (run-request-when run-two-squared) #f))
+
+(let ((run-two-squared (run (lambda () (* 2 2)) '(88 . 0))))
+  (test-assert (run-request? run-two-squared))
+  (test-assert (procedure? (run-request-proc run-two-squared)))
+  (test-equal ((run-request-proc run-two-squared)) 4)
+  (test-equal (run-request-when run-two-squared) '(88 . 0)))
+
+(let ((run-two-squared (run-wrap (* 2 2))))
+  (test-assert (run-request? run-two-squared))
+  (test-assert (procedure? (run-request-proc run-two-squared)))
+  (test-equal ((run-request-proc run-two-squared)) 4)
+  (test-eq (run-request-when run-two-squared) #f))
+
+(let ((run-two-squared (run-wrap-at (* 2 2) '(88 . 0))))
+  (test-assert (run-request? run-two-squared))
+  (test-assert (procedure? (run-request-proc run-two-squared)))
+  (test-equal ((run-request-proc run-two-squared)) 4)
+  (test-equal (run-request-when run-two-squared) '(88 . 0)))
+
+
+;; Agenda tests
+;; ------------
+
+
+
+
 ;; End tests
 
 (test-end "tests")