#lang racket/base
(require sugar/test racket/require (matching-identifiers-in #rx"-source\\?$" "private/file-utils.rkt")
         (matching-identifiers-in #rx"-source-path$" "private/file-utils.rkt")
         (matching-identifiers-in #rx"^get.*-source$" "private/file-utils.rkt")
         (only-in "private/file-utils.rkt" ->output-path))
(provide (all-from-out "private/file-utils.rkt"))

;; do the tests here to verify that the right functions are available through file.rkt
(module-test-external
 (require sugar/coerce pollen/setup)
 (check-true (preproc-source? "foo.pp"))
 (check-false (preproc-source? "foo.bar"))
 (check-false (preproc-source? #f))
 (check-equal? (->preproc-source-path (->path "foo.pp")) (->path "foo.pp"))
 (check-equal? (->preproc-source-path (->path "foo.html")) (->path "foo.html.pp"))
 (check-equal? (->preproc-source-path "foo") (->path "foo.pp"))
 (check-equal? (->preproc-source-path 'foo) (->path "foo.pp"))
 
 (check-true (pagetree-source? (format "foo.~a" (setup:pagetree-source-ext))))
 (check-false (pagetree-source? (format "~a.foo" (setup:pagetree-source-ext))))
 (check-false (pagetree-source? #f))
 
 (check-true (markup-source? "foo.pm"))
 (check-false (markup-source? "foo.p"))
 (check-false (markup-source? #f))
 (check-equal? (->markup-source-path (->path "foo.pm")) (->path "foo.pm"))
 (check-equal? (->markup-source-path (->path "foo.html")) (->path "foo.html.pm"))
 (check-equal? (->markup-source-path "foo") (->path "foo.pm"))
 (check-equal? (->markup-source-path 'foo) (->path "foo.pm"))
 
 (check-true (markdown-source? "foo.html.pmd"))
 (check-false (markdown-source? "foo.html"))
 (check-false (markdown-source? #f))
 (check-equal? (->markdown-source-path (->path "foo.pmd")) (->path "foo.pmd"))
 (check-equal? (->markdown-source-path (->path "foo.html")) (->path "foo.html.pmd"))
 (check-equal? (->markdown-source-path "foo") (->path "foo.pmd"))
 (check-equal? (->markdown-source-path 'foo) (->path "foo.pmd"))
 
 (check-false (get-source 42))
 (check-equal? (->output-path (->path "foo.pmap")) (->path "foo.pmap"))
 (check-equal? (->output-path "foo.html") (->path "foo.html"))
 (check-equal? (->output-path 'foo.html.p) (->path "foo.html"))
 (check-equal? (->output-path (->path "/Users/mb/git/foo.html.p")) (->path "/Users/mb/git/foo.html"))
 (check-equal? (->output-path "foo.xml.p") (->path "foo.xml"))
 (check-equal? (->output-path 'foo.barml.p) (->path "foo.barml"))
 
 (check-equal? (->output-path 'foo_html.p) (->path "foo.html"))
 (check-equal? (->output-path (->path "/Users/mb/git/foo_html.p")) (->path "/Users/mb/git/foo.html"))
 (check-equal? (->output-path "foo_xml.p") (->path "foo.xml"))
 (check-equal? (->output-path 'foo_barml.p) (->path "foo.barml"))
 (check-equal? (->output-path "foo.poly.pm") (->path "foo.html"))
 (check-equal? (->output-path "foo_poly.pp") (->path "foo.html")))