report errors betterly

main
Matthew Butterick 5 years ago
parent 86c1ca78fc
commit 85940c3827

@ -128,7 +128,7 @@
(cons idx (car (parse-pdf-bytes (peek-bytes (- end start) start)))))) (cons idx (car (parse-pdf-bytes (peek-bytes (- end start) start))))))
< #:key car)) < #:key car))
(define (dict-compare arg1 arg2) (define (dict-compare arg1 arg2 [obj-idx #f])
(define d1 (if (dict? arg1) arg1 (pdf->dict arg1))) (define d1 (if (dict? arg1) arg1 (pdf->dict arg1)))
(define d2 (if (dict? arg2) arg2 (pdf->dict arg2))) (define d2 (if (dict? arg2) arg2 (pdf->dict arg2)))
(unless (dict? d1) (unless (dict? d1)
@ -139,13 +139,14 @@
(error (format "dict lengths different in d1 (~a) and d2 (~a)" (length d1) (length d2)))) (error (format "dict lengths different in d1 (~a) and d2 (~a)" (length d1) (length d2))))
(for/and ([(k1 v1) (in-dict d1)] (for/and ([(k1 v1) (in-dict d1)]
[(k2 v2) (in-dict d2)]) [(k2 v2) (in-dict d2)])
(unless (equal? k1 k2) (define current-object-idx (or obj-idx k1))
(error (format "keys unequal in ~e and ~e: ~a ≠ ~a" arg1 arg2 k1 k2))) (cond
(unless (equal? v1 v2) [(dict? v1) (dict-compare v1 v2 current-object-idx)]
(error (format "values unequal in ~e and ~e: ~e ≠ ~e" arg1 arg2 v1 v2))) [(not (equal? k1 k2))
(when (dict? v1) (error (format "keys unequal in object ~a: ~a ≠ ~a" current-object-idx k1 k2))]
(dict-compare v1 v2)) [(not (equal? v1 v2))
#true)) (error (format "values unequal in object ~a for key ~e: ~e ≠ ~e" current-object-idx k1 v1 v2))]
[else #true])))
(define-simple-check (check-headers-equal? ps1 ps2) (define-simple-check (check-headers-equal? ps1 ps2)
(equal? (peek-bytes 14 0 (open-input-file ps1)) (equal? (peek-bytes 14 0 (open-input-file ps1))

Loading…
Cancel
Save