From: Christopher Allan Webber Date: Thu, 19 Nov 2015 03:53:41 +0000 (-0600) Subject: A lot more tests, including for splitting X-Git-Tag: v0.1.0~163 X-Git-Url: https://jxself.org/git/?a=commitdiff_plain;h=4758f0af7e8e7393f54feb8255e7a1cf1e178c57;p=8sync.git A lot more tests, including for splitting --- diff --git a/tests.scm b/tests.scm index b1ec42c..52d05ba 100644 --- a/tests.scm +++ b/tests.scm @@ -5,6 +5,7 @@ (define-module (tests test-core) #:use-module (srfi srfi-64) #:use-module (ice-9 q) + #:use-module (ice-9 receive) #:use-module (loopy agenda)) (test-begin "tests") @@ -29,9 +30,16 @@ ;;; ============== ;; helpers +(define (assert-times-expected time-segments expected-times) + (test-equal (map time-segment-time time-segments) + expected-times)) + (define a-proc (const 'a)) (define b-proc (const 'b)) (define c-proc (const 'c)) +(define d-proc (const 'd)) +(define e-proc (const 'e)) +(define f-proc (const 'f)) (define sched (make-schedule)) (test-assert (schedule-empty? sched)) @@ -48,6 +56,10 @@ a-proc) (test-eq (q-rear (time-segment-queue (car (schedule-segments sched)))) a-proc) +(test-eq ((q-front (time-segment-queue (car (schedule-segments sched))))) + 'a) ;; why not +(assert-times-expected (schedule-segments sched) + '((10 . 0))) ;; Add another segment at (10 . 0) (schedule-add! '(10 . 0) b-proc sched) @@ -61,22 +73,46 @@ a-proc) (test-eq (q-rear (time-segment-queue (car (schedule-segments sched)))) b-proc) +(assert-times-expected (schedule-segments sched) + '((10 . 0))) ;; 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) +(schedule-add! 11 c-proc sched) +(schedule-add! '(8 . 1) d-proc sched) +(schedule-add! '(10 . 10) e-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)) - +(assert-times-expected (schedule-segments sched) + '((8 . 1) (10 . 0) (10 . 10) (11 . 0))) + +;; Splitting +(define (test-split-at schedule time expected-before expected-after) + (receive (segments-before segments-after) + (schedule-segments-split schedule time) + (assert-times-expected segments-before expected-before) + (assert-times-expected segments-after expected-after))) + +(test-split-at sched 0 + '() + '((8 . 1) (10 . 0) (10 . 10) (11 . 0))) +(test-split-at sched '(8 . 0) + '() + '((8 . 1) (10 . 0) (10 . 10) (11 . 0))) +(test-split-at sched '(8 . 1) + '((8 . 1)) + '((10 . 0) (10 . 10) (11 . 0))) +(test-split-at sched 9 + '((8 . 1)) + '((10 . 0) (10 . 10) (11 . 0))) +(test-split-at sched 10 + '((8 . 1) (10 . 0)) + '((10 . 10) (11 . 0))) +(test-split-at sched 9000 + '((8 . 1) (10 . 0) (10 . 10) (11 . 0)) + '()) +(test-split-at sched '(9000 . 1) ; over nine thousaaaaaaand + '((8 . 1) (10 . 0) (10 . 10) (11 . 0)) + '()) ;; End tests