1(define-library (pingala prosody-test)
2  (export run-tests)
3  (import (scheme base) (scheme write) (scheme process-context)
4          (pingala prosody))
5  (begin
6    ;; test utils
7    (define failed? #f)
8    (define (fail expr expected res)
9      (set! failed? #t)
10      (display "FAIL: ")
11      (write expr)
12      (display ": expected: ")
13      (write expected)
14      (display " but got: ")
15      (write res)
16      (newline))
17    (define (test-exit) (exit (not failed?)))
18    (define-syntax test
19      (syntax-rules ()
20        ((test expected expr)
21         (let ((res expr))
22           (if (not (equal? res expected))
23               (fail 'expr expected res))))))
24    ;; tests
25    (define (run-tests)
26      (test "ma" (ganas 0))
27      (test "bha" (ganas 6))
28      (test "L-L-H" (ganas-pattern "sa"))
29      (test "L-L-H" (ganas-pattern 3))
30      (test "H-L-L" (ganas-pattern "bha"))
31      (test-exit))))
32