#!/bin/sh
exec ${srcdir:-.}/guile-test-env guile -s "$0" "$@"
!#
(use-modules (gw-test-enumeration)
(unit-test))
(define-class <test-enumeration> (<test-case>))
(define-method (test-val->int (self <test-enumeration>))
(assert-true (and (procedure? enum-<gw-test-enum>-val->int)
(= 0 (enum-<gw-test-enum>-val->int 0))
(= 1 (enum-<gw-test-enum>-val->int 1))
(= 2 (enum-<gw-test-enum>-val->int 2))
(= 0 (enum-<gw-test-enum>-val->int 'gw-test-enum-zero))
(= 1 (enum-<gw-test-enum>-val->int 'gw-test-enum-one))
(= 2 (enum-<gw-test-enum>-val->int 'gw-test-enum-two))
(not (enum-<gw-test-enum>-val->int 'foo-foo))
(not (enum-<gw-test-enum>-val->int 32)))))
(define-method (test-val->sym (self <test-enumeration>))
(assert-true
(and (procedure? enum-<gw-test-enum>-val->sym)
(not (enum-<gw-test-enum>-val->sym 999 #f))
(null? (enum-<gw-test-enum>-val->sym 999 #t))
(eq? 'gw-test-enum-zero (enum-<gw-test-enum>-val->sym 0 #f))
(eq? 'gw-test-enum-one (enum-<gw-test-enum>-val->sym 1 #f))
(memq (enum-<gw-test-enum>-val->sym 2 #f)
'(gw-test-enum-two gw-test-enum-two-too gw-test-enum-two-many))
(equal? '(gw-test-enum-zero) (enum-<gw-test-enum>-val->sym 0 #t))
(equal? '(gw-test-enum-one) (enum-<gw-test-enum>-val->sym 1 #t))
(let ((result (enum-<gw-test-enum>-val->sym 2 #t)))
(and (memq 'gw-test-enum-two result)
(memq 'gw-test-enum-two-too result)
(memq 'gw-test-enum-two-many result)
(null?
(delq 'gw-test-enum-two
(delq 'gw-test-enum-two-too
(delq 'gw-test-enum-two-many result)))))))))
(define-method (test-enumeration-echo (self <test-enumeration>))
(assert-true
(and (procedure? gw-test-gw-enumeration-echo)
(= 0 (gw-test-gw-enumeration-echo 0))
(= 1 (gw-test-gw-enumeration-echo 1))
(= 2 (gw-test-gw-enumeration-echo 2))
(= 0 (gw-test-gw-enumeration-echo 'gw-test-enum-zero))
(= 1 (gw-test-gw-enumeration-echo 'gw-test-enum-one))
(= 2 (gw-test-gw-enumeration-echo 'gw-test-enum-two))
(= 2 (gw-test-gw-enumeration-echo 'gw-test-enum-two-too))
(= 2 (gw-test-gw-enumeration-echo 'gw-test-enum-two-many)))))
(exit-with-summary (run-all-defined-test-cases))
;; Local Variables:
;; mode: scheme
;; End:
syntax highlighted by Code2HTML, v. 0.9.1