racket-ssh-2012/test-ordered-rpc.rkt

31 lines
969 B
Racket

#lang racket/base
(require "ordered-rpc.rkt")
(require rackunit)
(let ((tm0 (make-transaction-manager)))
(define-values (t1 tm1) (open-transaction tm0 'a))
(define-values (t2 tm2) (open-transaction tm1 'b))
(define-values (t3 tm3) (open-transaction tm2 'c))
(check-equal? (transaction-available? tm3) #f)
(close-transaction! t2 'second)
(check-equal? (transaction-available? tm3) #f)
(close-transaction! t1 'first)
(check-equal? (transaction-available? tm3) #t)
(define-values (v1 tm4) (dequeue-transaction tm3))
(check-equal? (transaction-context v1) 'a)
(check-equal? (transaction-value v1) 'first)
(check-equal? (transaction-available? tm4) #t)
(define-values (v2 tm5) (dequeue-transaction tm4))
(check-equal? (transaction-available? tm5) #f)
(close-transaction! t3 'third)
(check-equal? (transaction-available? tm5) #t)
(define-values (v3 tm6) (dequeue-transaction tm5))
(check-equal? (transaction-available? tm6) #f)
)