(module zip mzscheme
(require (planet "io.ss" ("dherman" "io.plt" 1)))
(require (planet "file.ss" ("dherman" "io.plt" 1)))
(require (planet "test.ss" ("schematics" "schemeunit.plt" 1)))
(require (planet "test.ss" ("dherman" "test.plt" 1)))
(require "../../zip.ss")
(require "../../unzip.ss")
(require "util.ss")
(define test:zip
(make-test-suite
"zip tests"
(make-test-case "a single file entry"
(in-new-directory "sandbox"
(let ([abe.txt/actual (string->path "abe-actual.txt")])
(with-gettysburg-address abe.txt
(let ([expected (with-input-from-file abe.txt read-lines)])
(with-temporary-file abe.zip ("abe~a.zip" #f (current-directory))
(with-output-to-file abe.zip
(lambda ()
(zip (list (path->relative-path abe.txt))))
'replace)
(with-input-from-file abe.zip
(lambda ()
(unzip (current-input-port)
(lambda (entry-name dir?)
(open-output-file abe.txt/actual))
#t)))
(assert-true (gettysburg-address? abe.txt/actual))))))))
))
(define zip-tests
(make-test-suite
"All zip.ss tests"
test:zip
))
(provide zip-tests))