You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
1.7 KiB
Racket
48 lines
1.7 KiB
Racket
#lang racket/base
|
|
(require
|
|
(for-syntax racket/base)
|
|
"core.rkt"
|
|
racket/class
|
|
racket/string
|
|
br/define
|
|
"check-pdf.rkt")
|
|
|
|
(provide check-copy-equal? check-pdfkit? make-doc check-font-subsets-equal?)
|
|
|
|
(test-mode #t)
|
|
|
|
(require rackunit pitfall/pdf pitfall/vector pitfall/color pitfall/text pitfall/font pitfall/image racket/runtime-path racket/class)
|
|
(provide (all-from-out rackunit racket/runtime-path pitfall/pdf pitfall/vector pitfall/text pitfall/color pitfall/font pitfall/image racket/class))
|
|
|
|
(define (this->control this) (path-add-extension this #"" #" copy."))
|
|
|
|
(define (this->pdfkit-control this)
|
|
(string->path (string-replace ((if (string? this) values path->string) this) "rkt." ".")))
|
|
|
|
(module+ test
|
|
(require rackunit)
|
|
(check-equal? (this->pdfkit-control (string->path "test1crkt.pdf")) (string->path "test1c.pdf")))
|
|
|
|
|
|
(define-macro (check-copy-equal? THIS)
|
|
(syntax/loc caller-stx (check-true (for/and ([b1 (in-input-port-bytes (open-input-file THIS))]
|
|
[b2 (in-input-port-bytes (open-input-file (this->control THIS)))])
|
|
(equal? b1 b2)))))
|
|
|
|
|
|
(define-syntax-rule (check-pdfkit? this)
|
|
(check-equal? (file-size this) (file-size (this->pdfkit-control this))))
|
|
|
|
(define (make-doc ps [compress? #false] [proc (λ (doc) doc)] #:test [test? #t] #:pdfkit [pdfkit? #t])
|
|
(time
|
|
(define doc (make-pdf #:compress compress? #:output-path ps))
|
|
(start-doc doc)
|
|
(proc doc)
|
|
(end-doc doc))
|
|
(when test?
|
|
(check-headers-equal? ps (this->control ps))
|
|
(check-pdfs-equal? ps (this->control ps))
|
|
(when pdfkit?
|
|
(check-headers-equal? ps (this->pdfkit-control ps))
|
|
(check-pdfs-equal? ps (this->pdfkit-control ps)))))
|