(import (scheme base) (only (csc testing) assert-equal test) (csc match)) (test match-cond (assert-equal 3 (match 3 ((! 0) 0) ((! 1) 1) ((! 2) 2) ((! 3) 3) (_ 4)))) (test match-list (assert-equal 2 (match '(1 2 3) ('() 0) (((! 1) (! 2)) 1) (((! 1) (! 2) (! 3)) 2) (((! 1) (! 2) (! 3) (! 4)) 3) (_ 4)))) (test match-binding (assert-equal 2 (match '(1 2 3) (((! 1) x (! 3)) x)))) (test match-destructuring (assert-equal 1 (match '(1 2 3) ('() 0) ((head . _) head)))) (test match-ignore (assert-equal 2 (match '(1 2 3) ((_ _ _ _) 0) (((! 2) _ _) 1) (((! 1) _ _) 2) (_ 3)))) (test match-improper-list (assert-equal 2 (match '(1 2 3) (((! 2) . _) 1) (((! 1) . x) (car x)) (_ 3)))) (test match-symbol (assert-equal 2 (match 'b ((! 'a) 1) ((! 'b) 2) (_ 3))))