Starting to add tests
authorChristopher Allan Webber <cwebber@dustycloud.org>
Wed, 18 Nov 2015 23:39:07 +0000 (17:39 -0600)
committerChristopher Allan Webber <cwebber@dustycloud.org>
Wed, 18 Nov 2015 23:39:07 +0000 (17:39 -0600)
tests.scm [new file with mode: 0644]

diff --git a/tests.scm b/tests.scm
new file mode 100644 (file)
index 0000000..b1ec42c
--- /dev/null
+++ b/tests.scm
@@ -0,0 +1,85 @@
+#!/usr/bin/guile \
+-s
+!#
+
+(define-module (tests test-core)
+  #:use-module (srfi srfi-64)
+  #:use-module (ice-9 q)
+  #:use-module (loopy agenda))
+
+(test-begin "tests")
+
+\f
+;; Timer tests
+;; ===========
+
+(test-assert (time-= '(1 . 1) '(1 . 1)))
+(test-assert (not (time-= '(1 . 1) '(1 . 0))))
+(test-assert (not (time-= '(0 . 1) '(1 . 1))))
+
+(test-assert (time-< '(1 . 1) '(1 . 2)))
+(test-assert (time-< '(7 . 2) '(8 . 2)))
+(test-assert (not (time-< '(7 . 2) '(7 . 2))))
+(test-assert (not (time-< '(7 . 8) '(7 . 2))))
+(test-assert (not (time-< '(8 . 2) '(7 . 2))))
+
+
+\f
+;;; Schedule tests
+;;; ==============
+
+;; helpers
+(define a-proc (const 'a))
+(define b-proc (const 'b))
+(define c-proc (const 'c))
+
+(define sched (make-schedule))
+(test-assert (schedule-empty? sched))
+
+;; Add a segment at (10 . 0)
+(schedule-add! 10 a-proc sched)
+(test-assert (not (schedule-empty? sched)))
+(test-equal (length (schedule-segments sched)) 1)
+(test-equal (time-segment-time (car (schedule-segments sched)))
+  '(10 . 0))
+(test-equal (q-length (time-segment-queue (car (schedule-segments sched))))
+  1)
+(test-eq (q-front (time-segment-queue (car (schedule-segments sched))))
+  a-proc)
+(test-eq (q-rear (time-segment-queue (car (schedule-segments sched))))
+  a-proc)
+
+;; Add another segment at (10 . 0)
+(schedule-add! '(10 . 0) b-proc sched)
+(test-assert (not (schedule-empty? sched)))
+(test-equal (length (schedule-segments sched)) 1)
+(test-equal (time-segment-time (car (schedule-segments sched)))
+  '(10 . 0))
+(test-equal (q-length (time-segment-queue (car (schedule-segments sched))))
+  2)
+(test-eq (q-front (time-segment-queue (car (schedule-segments sched))))
+  a-proc)
+(test-eq (q-rear (time-segment-queue (car (schedule-segments sched))))
+  b-proc)
+
+;; Add a segment to (11 . 0), (8 . 1) and (10 . 10)
+(schedule-add! 11 a-proc sched)
+(schedule-add! '(8 . 1) c-proc sched)
+(schedule-add! '(10 . 10) c-proc sched)
+(test-assert (not (schedule-empty? sched)))
+(test-equal (length (schedule-segments sched)) 4)
+(test-equal (time-segment-time (car (schedule-segments sched)))
+  '(8 . 1))
+(test-equal (time-segment-time (cadr (schedule-segments sched)))
+  '(10 . 0))
+(test-equal (time-segment-time (caddr (schedule-segments sched)))
+  '(10 . 10))
+(test-equal (time-segment-time (cadddr (schedule-segments sched)))
+  '(11 . 0))
+
+
+;; End tests
+
+(test-end "tests")
+;; (test-exit)
+