Use unit test framework, support chibi too

This commit is contained in:
Justin Ethier 2018-01-24 17:36:50 -05:00
parent 8a24fb1b00
commit eb8b332d2e

View file

@ -1,27 +1,38 @@
(import (import
(scheme base) (scheme base)
(scheme write) (scheme write)
)
(cond-expand
(cyclone
(import
(match-test-lib) (match-test-lib)
;(chibi match) (scheme cyclone test)))
(chibi
(import
(chibi match)
(chibi test)))
) )
(display (match (list 1 2 3) ((a b c) b)) )(newline) (test-group
(display (match (list 1 2 1) ((a a b) 1) ((a b a) 2)))(newline) "official tests"
(display (match (list 1 2 1) ((_ _ b) 1) ((a b a) 2)) )(newline)
(display (match 'a ('b 1) ('a 2)) )(newline) (test 2 (match (list 1 2 3) ((a b c) b)) )
(test 2 (match (list 1 2 1) ((a a b) 1) ((a b a) 2)))
(test 1 (match (list 1 2 1) ((_ _ b) 1) ((a b a) 2)) )
(test 2 (match 'a ('b 1) ('a 2)) )
;; fails on cyclone, works in chibi ;; fails on cyclone, works in chibi
;(display (match (list 1 2 3) (`(1 ,b ,c) (list b c))) )(newline) ;(display (match (list 1 2 3) (`(1 ,b ,c) (list b c))) )(newline)
(display (match (list 1 2) ((1 2 3 ...) #t)) )(newline) (test #t (match (list 1 2) ((1 2 3 ...) #t)) )
(display (match (list 1 2 3) ((1 2 3 ...) #t)) )(newline) (test #t (match (list 1 2 3) ((1 2 3 ...) #t)) )
(display (match (list 1 2 3 3 3) ((1 2 3 ...) #t)) )(newline) (test #t (match (list 1 2 3 3 3) ((1 2 3 ...) #t)) )
(display (match (list 1 2) ((a b c ...) c)) )(newline) (test '() (match (list 1 2) ((a b c ...) c)) )
(display (match (list 1 2 3) ((a b c ...) c)) )(newline) (test '(3) (match (list 1 2 3) ((a b c ...) c)) )
(display (match (list 1 2 3 4 5) ((a b c ...) c)) )(newline) (test '(3 4 5) (match (list 1 2 3 4 5) ((a b c ...) c)) )
(display (match (list 1 2 3 4) ((a b c ... d e) c)) )(newline) (test '() (match (list 1 2 3 4) ((a b c ... d e) c)) )
(display (match (list 1 2 3 4 5) ((a b c ... d e) c)) )(newline) (test '(3) (match (list 1 2 3 4 5) ((a b c ... d e) c)) )
(display (match (list 1 2 3 4 5 6 7) ((a b c ... d e) c)) )(newline) (test '(3 4 5) (match (list 1 2 3 4 5 6 7) ((a b c ... d e) c)) )
;; Next 2 fail on both cyclone and chibi ;; Next 2 fail on both cyclone and chibi
;;; Pattern not matched ;;; Pattern not matched
@ -34,15 +45,17 @@
;(display (match 1 ((and x) x)) )(newline) ;(display (match 1 ((and x) x)) )(newline)
;(display (match 1 ((and x 1) x)) )(newline) ;(display (match 1 ((and x 1) x)) )(newline)
(display (match 1 ((or) #t) (else #f)) )(newline) (test #f (match 1 ((or) #t) (else #f)) )
;; Next 2 fail on cyclone but pass on chibi ;; Next 2 fail on cyclone but pass on chibi
;(display (match 1 ((or x) x)) )(newline) ;(display (match 1 ((or x) x)) )(newline)
;(display (match 1 ((or x 2) x)) )(newline) ;(display (match 1 ((or x 2) x)) )(newline)
(display (match 1 ((not 2) #t)) )(newline) (test #t (match 1 ((not 2) #t)) )
;; Fails on cyclone but passes on chibi ;; Fails on cyclone but passes on chibi
;(display (match 1 ((? odd? x) x)) )(newline) ;(display (match 1 ((? odd? x) x)) )(newline)
(display (match '(1 . 2) ((= car x) x)) )(newline) (test 1 (match '(1 . 2) ((= car x) x)) )
(display (match 4 ((= square x) x)) )(newline) (test 16 (match 4 ((= square x) x)) )
)
(test-exit)