Added record type tests

This commit is contained in:
Justin Ethier 2016-02-05 23:29:42 -05:00
parent dc3d55cc7d
commit 786ce36c49
2 changed files with 21 additions and 1 deletions

View file

@ -3,7 +3,9 @@
(scheme file) (scheme file)
(scheme read) (scheme read)
(scheme write) (scheme write)
(scheme eval)) (scheme eval)
(srfi 9)
)
(define *num-passed* 0) (define *num-passed* 0)
(define (assert:equal msg actual expected) (define (assert:equal msg actual expected)
@ -318,6 +320,24 @@
(assert:equal "macro: eval test" (eval '(test 1 2 x)) x) (assert:equal "macro: eval test" (eval '(test 1 2 x)) x)
;; END macros ;; END macros
;; Record types
(define-record-type <pare>
(kons x y)
pare?
(x kar set-kar!)
(y kdr))
(assert:equal "Records predicate (t)" (pare? (kons 1 2)) #t)
(assert:equal "Records predicate (f)" (pare? (cons 1 2)) #f)
(assert:equal "Records kar" (kar (kons 1 2)) 1)
(assert:equal "Records kdr" (kdr (kons 1 2)) 2)
(assert:equal "Records setter"
(let ((k (kons 1 2)))
(set-kar! k 3)
(kar k))
3)
;; END records
; TODO: use display, output without surrounding quotes ; TODO: use display, output without surrounding quotes
(write (list *num-passed* " tests passed with no errors")) (write (list *num-passed* " tests passed with no errors"))
;; ;;