racket/collects/tests/r6rs/enums.ss
Matthew Flatt 53bc658226 r6rs tests and repairs
svn: r8905
2008-03-06 18:56:31 +00:00

64 lines
1.9 KiB
Scheme

#!r6rs
(library (tests r6rs enums)
(export run-enums-tests)
(import (rnrs)
(tests r6rs test))
;; ----------------------------------------
(define-enumeration color
(black white purple maroon)
color-set)
;; ----------------------------------------
(define (run-enums-tests)
(test (let* ((e (make-enumeration '(red green blue)))
(i (enum-set-indexer e)))
(list (i 'red) (i 'green) (i 'blue) (i 'yellow)))
'(0 1 2 #f))
(test (let* ((e (make-enumeration '(red green blue)))
(c (enum-set-constructor e)))
(enum-set->list (c '(blue red))))
'(red blue))
(test (let* ((e (make-enumeration '(red green blue)))
(c (enum-set-constructor e)))
(list (enum-set->list
(enum-set-union (c '(blue)) (c '(red))))
(enum-set->list
(enum-set-intersection (c '(red green))
(c '(red blue))))
(enum-set->list
(enum-set-difference (c '(red green))
(c '(red blue))))))
'((red blue) (red) (green)))
(test (let* ((e (make-enumeration '(red green blue)))
(c (enum-set-constructor e)))
(enum-set->list
(enum-set-complement (c '(red)))))
'(green blue))
(test (let ((e1 (make-enumeration
'(red green blue black)))
(e2 (make-enumeration
'(red black white))))
(enum-set->list
(enum-set-projection e1 e2)))
'(red black))
(test (color black) 'black)
; (test/exn (color purpel) &syntax) ; not a runtime exception
(test (enum-set->list (color-set)) '())
(test (enum-set->list
(color-set maroon white))
'(white maroon))
;;
))