(test-assert (not (time-< '(7 . 8) '(7 . 2))))
(test-assert (not (time-< '(8 . 2) '(7 . 2))))
+(let ((tdelta (make-time-delta 8)))
+ (test-assert (time-delta? tdelta))
+ (test-eqv (time-delta-sec tdelta) 8)
+ (test-eqv (time-delta-usec tdelta) 0)
+ (test-equal
+ (time-+ '(2 . 3) tdelta)
+ '(10 . 3)))
+
+(let ((tdelta (make-time-delta 10 1)))
+ (test-assert (time-delta? tdelta))
+ (test-eqv (time-delta-sec tdelta) 10)
+ (test-eqv (time-delta-usec tdelta) 1)
+ (test-equal
+ (time-+ '(2 . 3) tdelta)
+ '(12 . 4)))
+
\f
;;; Schedule tests
(test-equal (run-request-when run-two-squared) '(88 . 0)))
-;; Agenda tests
-;; ------------
+;;; Agenda tests
+;;; ------------
+;; helpers
+(define (speak-it)
+ (let ((messages '()))
+ (lambda* (#:optional message)
+ (if message (set! messages (append messages (list message))))
+ messages)))
+
+;; the dummy test
+
+(define speaker (speak-it))
+
+(define (dummy-func)
+ (speaker "I'm a dummy\n"))
+
+(define (run-dummy)
+ (speaker "I bet I can make you say you're a dummy!\n")
+ (run dummy-func))
+
+(let ((q (make-q)))
+ (set! speaker (speak-it)) ; reset the speaker
+ (enq! q run-dummy)
+ (start-agenda (make-agenda #:queue q)
+ (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")))
+
+;; should only do the first one after one round though
+(let ((q (make-q)))
+ (set! speaker (speak-it)) ; reset the speaker
+ (enq! q run-dummy)
+ (start-agenda (make-agenda #:queue q)
+ (true-after-n-times 1))
+ (test-equal (speaker)
+ '("I bet I can make you say you're a dummy!\n")))
;; End tests