(import (scheme base)
        (picrin test))

(test-begin)

(define (char-inc c)
  (integer->char (+ (char->integer c) 1)))

(define (char-dec c)
  (integer->char (- (char->integer c) 1)))

(test "tsvcmxdmqr"
 (string-map (lambda (c k)
               ((if (eqv? k #\+) char-inc char-dec) c))
             "studlycnps xxx"
             "+-+-+-+-+-"))

(test "abcdefgh"
      (begin
        (define s "")
        (string-for-each
         (lambda (a b)
           (set! s (string-append s (string a b))))
         "aceg hij"
         "bdfh")
        s))

(test #(#(1 6 9) #(2 7 10) #(3 8 11))
      (vector-map vector #(1 2 3 4 5) #(6 7 8) #(9 10 11 12)))

(test "(1 4 1)(2 5 1)"
      (call-with-port (open-output-string)
        (lambda (port)
          (parameterize ((current-output-port port))
            (vector-for-each
             (lambda args (display args))
             #(1 2 3)
             #(4 5)
             #(1 1))
            (get-output-string port)))))

(test-end)