(define-library (srfi 219 test)
  (export run-tests)
  (import (chibi) (chibi test) (rename (srfi 219) (define define-219)))
  (begin
    (define (run-tests)
      (test-group
       "srfi-219: define higher-order lambda"

       (let ()
         (define-219 ((greet/prefix prefix) suffix)
           (string-append prefix " " suffix))
         (let ((greet (greet/prefix "Hello")))
           (test "Hello there!" (greet "there!"))))

       (let ()
         (define-219 ((append-to . a) . b)
           (apply append (append a b)))
         (test '()
               ((append-to '()) '()))
         (test '(1 2 3 4 5 6 7 8)
               ((append-to '(1 2) '(3 4)) '(5 6) '(7 8))))

       (let ()
         (define-219 (((jenga a b) c d))
           (list a b c d))
         (test '(1 2 3 4)
               (((jenga 1 2) 3 4))))))))