chibi-scheme/lib/srfi/16/test.sld
2016-02-28 18:05:02 +09:00

43 lines
1.2 KiB
Scheme

(define-library (srfi 16 test)
(export run-tests)
(import (chibi) (chibi test) (srfi 16))
(begin
(define (run-tests)
(define plus
(case-lambda
(() 0)
((x) x)
((x y) (+ x y))
((x y z) (+ (+ x y) z))
(args (apply + args))))
(define print
(case-lambda
(()
(display ""))
((arg)
(display arg))
((arg . args)
(display arg)
(display " ")
(apply print args))))
(define (print-to-string . args)
(let ((out (open-output-string))
(old-out (current-output-port)))
(dynamic-wind
(lambda () (current-output-port out))
(lambda () (apply print args))
(lambda () (current-output-port old-out)))
(get-output-string out)))
(test-begin "srfi-16: case-lambda")
(test 0 (plus))
(test 1 (plus 1))
(test 6 (plus 1 2 3))
(test-error ((case-lambda ((a) a) ((a b) (* a b))) 1 2 3))
(test "" (print-to-string))
(test "hi" (print-to-string 'hi))
(test "hi there world" (print-to-string 'hi 'there 'world))
(test-end))))