common-test.scm 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. ;;; common-test.scm --
  2. ;;;
  3. ;; Slightly modified for Guile by Ludovic Courtès <ludo@gnu.org>, 2010.
  4. (use-modules (system base lalr)
  5. (ice-9 pretty-print))
  6. (define *error* '())
  7. (define-syntax when
  8. (syntax-rules ()
  9. ((_ ?expr ?body ...)
  10. (if ?expr
  11. (let () ?body ...)
  12. #f))))
  13. (define-syntax check
  14. (syntax-rules (=>)
  15. ((_ ?expr => ?expected-result)
  16. (check ?expr (=> equal?) ?expected-result))
  17. ((_ ?expr (=> ?equal) ?expected-result)
  18. (let ((result ?expr)
  19. (expected ?expected-result))
  20. (set! *error* '())
  21. (when (not (?equal result expected))
  22. (display "Failed test: \n")
  23. (pretty-print (quote ?expr))(newline)
  24. (display "\tresult was: ")
  25. (pretty-print result)(newline)
  26. (display "\texpected: ")
  27. (pretty-print expected)(newline)
  28. (exit 1))))))
  29. ;;; --------------------------------------------------------------------
  30. (define (display-result v)
  31. (if v
  32. (begin
  33. (display "==> ")
  34. (display v)
  35. (newline))))
  36. (define eoi-token
  37. (make-lexical-token '*eoi* #f #f))
  38. (define (make-lexer tokens)
  39. (lambda ()
  40. (if (null? tokens)
  41. eoi-token
  42. (let ((t (car tokens)))
  43. (set! tokens (cdr tokens))
  44. t))))
  45. (define (error-handler message . args)
  46. (set! *error* (cons `(error-handler ,message . ,(if (pair? args)
  47. (lexical-token-category (car args))
  48. '()))
  49. *error*))
  50. (cons message args))
  51. ;;; end of file