racket/collects/unstable/cce/test/test-queue.ss
Carl Eastlund 6f39c3fca1 Adding contents of (planet cce/scheme:7) to collects/unstable/cce.
This is a staging area; these modules will be adapted to collects/unstable.
2010-06-06 20:29:53 -04:00

57 lines
1.7 KiB
Scheme

#lang scheme
(require "checks.ss"
"../queue.ss")
(provide queue-suite)
(define queue-suite
(test-suite "queue.ss"
(test-suite "queue-empty?"
(test-case "make-queue"
(check-true (queue-empty? (make-queue))))
(test-case "enqueue! once"
(let* ([q (make-queue)])
(enqueue! q 1)
(check-false (queue-empty? q))))
(test-case "enqueue! once / dequeue! once"
(let* ([q (make-queue)])
(enqueue! q 1)
(dequeue! q)
(check-true (queue-empty? q))))
(test-case "enqueue! twice"
(let* ([q (make-queue)])
(enqueue! q 1)
(enqueue! q 2)
(check-false (queue-empty? q))))
(test-case "enqueue! twice / dequeue! once"
(let* ([q (make-queue)])
(enqueue! q 1)
(enqueue! q 2)
(dequeue! q)
(check-false (queue-empty? q))))
(test-case "enqueue! twice / dequeue! twice"
(let* ([q (make-queue)])
(enqueue! q 1)
(enqueue! q 2)
(dequeue! q)
(dequeue! q)
(check-true (queue-empty? q)))))
(test-suite "dequeue!"
(test-case "make-queue"
(check-exn exn:fail:contract? (lambda () (dequeue! (make-queue)))))
(test-case "enqueue! once"
(let* ([q (make-queue)])
(enqueue! q 1)
(check-equal? (dequeue! q) 1)
(check-exn exn:fail:contract?
(lambda () (dequeue! q)))))
(test-case "enqueue! twice"
(let* ([q (make-queue)])
(enqueue! q 1)
(enqueue! q 2)
(check-equal? (dequeue! q) 1)
(check-equal? (dequeue! q) 2)
(check-exn exn:fail:contract?
(lambda () (dequeue! q))))))))