This commit is contained in:
Justin Ethier 2019-06-26 13:41:40 -04:00
parent e39b253300
commit 7f04517ce6
2 changed files with 50 additions and 7 deletions

View file

@ -28,7 +28,8 @@
queue queue
queue-add! queue-add!
%queue-add! ;; DEBUG %queue-add! ;; DEBUG
%queue-remove! queue-remove!
%queue-remove! ;; DEBUG
queue-clear! queue-clear!
queue-size queue-size
queue-capacity queue-capacity
@ -113,10 +114,10 @@
(loop (+ i 1) (inc start (vector-length old-store)))))) (loop (+ i 1) (inc start (vector-length old-store))))))
) )
(define (queue-remove! q obj) (define (queue-remove! q)
(let ((result #f)) (let ((result #f))
(mutex-lock! (q:lock q)) (mutex-lock! (q:lock q))
(set! result (%queue-remove! q obj)) (set! result (%queue-remove! q))
(mutex-unlock! (q:lock q)) (mutex-unlock! (q:lock q))
result)) result))
@ -167,8 +168,4 @@
result) result)
;- queue->list ;- queue->list
;(test-group "basic")
;(test #t (shared-queue? (make-queue)))
;(test-exit)
)) ))

View file

@ -0,0 +1,46 @@
(import
(scheme base)
;(cyclone concurrent)
;(srfi 18)
(shared-queue)
(cyclone test))
(test-group "basic"
(define q (make-queue))
(test "predicate" #t (queue? q))
(test "empty" #t (queue-empty? q))
(test "empty" 0 (queue-size q))
(queue-add! q 'a)
(test "add a" #f (queue-empty? q))
(test "add a" 1 (queue-size q))
(queue-add! q 'b)
(test "add b" #f (queue-empty? q))
(test "add b" 2 (queue-size q))
(queue-add! q 'c)
(queue-add! q 'd)
(queue-add! q 'e)
(queue-add! q 'f)
(queue-add! q 'g)
(queue-add! q 'h)
(queue-add! q 'i)
(queue-add! q 'j)
(test "add many" #f (queue-empty? q))
(test "add many" 10 (queue-size q))
(test "remove" 'a (queue-remove! q))
(test "remove a - size" 9 (queue-size q))
(test "remove" 'b (queue-remove! q))
(test "remove" 'c (queue-remove! q))
(test "remove" 'd (queue-remove! q))
(test "remove d - size" 6 (queue-size q))
(queue-add! q 'a)
(queue-add! q 'b)
(queue-add! q 'c)
(queue-add! q 'd)
(test "add many back" 10 (queue-size q))
(queue-clear! q)
(test "clear" 0 (queue-size q))
)
(test-exit)