git.fiddlerwoaroof.com
patmatch/test.lisp
206937c6
 (in-package :patmatch/test)
 
012d021d
 (define-test let-pat*)
206937c6
 
 (define-test let-pat*-handles-cons
012d021d
   :parent let-pat*
   (is = 2 (let-pat* (((cons a b) '(2 . 3)))
206937c6
             (declare (ignore b))
             a))
012d021d
 
   (is = 3 (let-pat* (((cons a b) '(2 . 3)))
206937c6
             (declare (ignore a))
             b)))
 
012d021d
 (define-test let-pat*-handles-vector
   :parent let-pat*
   (is = 2 (let-pat* (((vector a b) #(2 3)))
206937c6
             (declare (ignore b))
             a))
012d021d
   (is = 3 (let-pat* (((vector a b) #(2 3)))
206937c6
             (declare (ignore a))
             b)))
 
012d021d
 (define-test let-pat*-handles-hash-table
   :parent let-pat*
   (is = 2 (let-pat* (((hash-table (:a a) (:b b)) (alexandria:plist-hash-table '(:a 2 :b 3))))
             (declare (ignore b))
             a))
206937c6
 
012d021d
   (is = 3 (let-pat* (((hash-table (:a a) (:b b)) (alexandria:plist-hash-table '(:a 2 :b 3))))
             (declare (ignore a))
             b)))
206937c6
 
 
012d021d
 (define-test let-pat*-handles-object-destructuring
   :parent let-pat*
   (is = 1 (let-pat* (((test-base :a a) (make-instance 'test-base)))
206937c6
             a)))
 
012d021d
 (define-test let-pat*-handles-inheritance
   :parent let-pat*
   (is = 1 (let-pat* (((test-base :a a) (make-instance 'test-sub1)))
             a))
206937c6
 
012d021d
   (is = 1 (let-pat* (((test-sub1 :a a) (make-instance 'test-sub1)))
             a))
206937c6
 
012d021d
   (is = 1 (let-pat* (((test-sub2 :a a) (make-instance 'test-sub2)))
             a))
206937c6
 
012d021d
   (is equal '(1 2) (let-pat* (((test-sub2 :a a :b b) (make-instance 'test-sub2)))
                      (list a b))))