;;; Copyright (c) 2000-2015 Andrew W. Keep, R. Kent Dybvig
;;; See the accompanying file Copyright for details

(library (tests unit-test-helpers-implementation)
  (export with-output-to-string display-condition format-error-message)
  (import (vicare))

  (define display-condition
    (case-lambda
      [(c) (display-condition c (current-output-port))]
      [(c op)
       (display
         (format "~a~a~a~a~a"
           (if (warning? c) "Warning" "Exception")
           (if (who-condition? c) (format " in ~s" (condition-who c)) "")
           (if (message-condition? c) (format ": ~a" (condition-message c)) "")
           (if (and (irritants-condition? c) (not (null? (condition-irritants c))))
               (format " with irritants ~s" (condition-irritants c))
               "")
           (if (syntax-violation? c)
               (if (syntax-violation-subform c)
                   (format "~s in ~s" (syntax-violation-subform c) (syntax-violation-form c))
                   (format "~s" (syntax-violation-form c)))
               ""))
         op)]))

  (define-syntax format-error-message
    (syntax-rules ()
      [(_ args ...) (format args ...)]))

  ;; needed to get an r6rs script to print with vicare
  (current-output-port (current-error-port)))
