(define exit-code 0)
(setenv "GNC_UNINSTALLED" "1")
(use-modules (gnucash gnc-module))
(gnc:module-system-init)

;; Guile 2 needs to load external modules at compile time
;; otherwise the N_ syntax-rule won't be found at compile time
;; causing the test to fail
;; That's what the wrapper below is meant for:
(define-syntax-rule (begin-for-syntax form ...)
      (eval-when (load compile eval) (begin form ...)))

(begin-for-syntax (define loaded-module (gnc:module-load "gnucash/app-utils" 0)))
(if loaded-module
    (display "Module gnucash/app-utils loaded successfully\n")
    (begin
      (display "Failed - module gnucash/app-utils not loaded successfully\n")
      (set! exit-code -1)))

(if (procedure? gnc:apply-with-error-handling)
    (display "Procedure gnc:apply-with-error-handling found\n")
    (begin
      (display "Failed - procedure gnc:apply-with-error-handling not found\n")
      (set! exit-code -1)))

(if (procedure? gnc-default-currency)
    (display "Procedure gnc-default-currency found\n")
    (begin
      (display "Failed - procedure gnc-default-currency not found\n")
      (set! exit-code -1)))

(if (macro? (module-ref (current-module) 'N_))
    (display "Macro N_ defined\n")
    (begin
      (display "Failed - macro N_ not defined\n")
      (set! exit-code -1)))

(if (string=? (N_ "foobar") "foobar")
    (display "Macro N_ works properly\n")
    (begin
      (display "Failed - macro N_ doesn't work\n")
      (set! exit-code -1)))

(exit exit-code)
