(import (scheme base) (scheme write) (scheme process-context) (euler totient))

(define-syntax test
  (syntax-rules ()
    ((test expect expr)
     (let ((res expr))
       (unless (equal? expect res)
         (display "FAIL: ")
         (write 'expr)
         (display " - expected ")
         (write expect)
         (display " but got ")
         (write res)
         (newline)
         (exit 1))))))

(test 1 (totient 2))
(test 2 (totient 3))
(test 2 (totient 4))
(test 4 (totient 5))
(test 2 (totient 6))
(test 6 (totient 7))
(test 4 (totient 8))
(test 6 (totient 9))
(test 4 (totient 10))