enum-check.scm 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. ; Part of Scheme 48 1.9. See file COPYING for notices and license.
  2. ; Authors: Mike Sperber
  3. (define-test-suite r6rs-enums-tests)
  4. ;; These are all from the R6RS document
  5. (define-test-case enum-set-indexer r6rs-enums-tests
  6. (check
  7. (let* ((e (make-enumeration '(red green blue)))
  8. (i (enum-set-indexer e)))
  9. (list (i 'red) (i 'green) (i 'blue) (i 'yellow)))
  10. => '(0 1 2 #f)))
  11. (define-test-case enum-set->list r6rs-enums-tests
  12. (check
  13. (let* ((e (make-enumeration '(red green blue)))
  14. (c (enum-set-constructor e)))
  15. (enum-set->list (c '(blue red))))
  16. => '(red blue)))
  17. (define-test-case enum-set-tests r6rs-enums-tests
  18. (let* ((e (make-enumeration '(red green blue)))
  19. (c (enum-set-constructor e)))
  20. (check (enum-set-member? 'blue (c '(red blue))))
  21. (check (not (enum-set-member? 'green (c '(red blue)))))
  22. (check (enum-set-subset? (c '(red blue)) e))
  23. (check (enum-set-subset? (c '(red blue)) (c '(blue red))))
  24. (check (not (enum-set-subset? (c '(red blue)) (c '(red)))))
  25. (check (enum-set=? (c '(red blue)) (c '(blue red))))))
  26. (define-test-case enum-set-logical r6rs-enums-tests
  27. (let* ((e (make-enumeration '(red green blue)))
  28. (c (enum-set-constructor e)))
  29. (check (enum-set->list
  30. (enum-set-union (c '(blue)) (c '(red))))
  31. => '(red blue))
  32. (check (enum-set->list
  33. (enum-set-intersection (c '(red green))
  34. (c '(red blue))))
  35. => '(red))
  36. (check (enum-set->list
  37. (enum-set-difference (c '(red green))
  38. (c '(red blue))))
  39. => '(green))))
  40. (define-test-case enum-set-projection r6rs-enums-tests
  41. (check
  42. (let ((e1 (make-enumeration
  43. '(red green blue black)))
  44. (e2 (make-enumeration
  45. '(red black white))))
  46. (enum-set->list
  47. (enum-set-projection e1 e2)))
  48. => '(red black)))
  49. (define-enumeration color
  50. (black white purple maroon)
  51. color-set)
  52. (define-test-case define-enumeration r6rs-enums-tests
  53. (check (color black) => 'black)
  54. (check (enum-set->list (color-set)) => '())
  55. (check (enum-set->list
  56. (color-set maroon white))
  57. => '(white maroon)))