summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorAndreas Politz <politza@hochschule-trier.de>2015-06-12 23:24:29 +0200
committerAndreas Politz <politza@hochschule-trier.de>2015-06-12 23:59:24 +0200
commitdc2d99f53aa02e98516b9d3a46a4e36814e7298b (patch)
tree5ebab529babd2aba372ab2bd4ec2d449448629ab /test
parent2482dfff3800d5ce34028bf7e81371647c7ed1be (diff)
Added VPDF feature.
* lisp/pdf-virtual.el: New file handling virtual PDF documents. * test/pdf-test.el: Tests for that feature. * lisp/pdf-misc.el: Extend the menu appropriately. * lisp/pdf-view.el: Make pdf-view-mode play nicer with it's derived mode pdf-virtual-view-mode. * lisp/pdf-tools.el: Integrate pdf-virtual. * NEWS: Added item. * README.org: Mention it.
Diffstat (limited to 'test')
-rw-r--r--test/pdf-virtual.ert225
1 files changed, 225 insertions, 0 deletions
diff --git a/test/pdf-virtual.ert b/test/pdf-virtual.ert
new file mode 100644
index 0000000..6d0773c
--- /dev/null
+++ b/test/pdf-virtual.ert
@@ -0,0 +1,225 @@
+;; -*- lexical-binding: t -*-
+
+(require 'pdf-virtual)
+(require 'ert)
+
+(defvar pdf-virtual-test-document
+ '(("test.pdf"
+ ;; Annotations 3,4,5
+ (2 . (0.1805 0.2462 0.4046 0.3392))
+ ;; Should match first paragraph.
+ (1 . (0.2163 0.1879 0.7848 0.22))
+ 4 3 5 6)))
+
+(defmacro with-pdf-virtual-test-document (var &rest body)
+ (declare (indent 1) (debug t))
+ `(let ((,var (pdf-virtual-document-create
+ pdf-virtual-test-document)))
+ ,@body))
+
+(defmacro with-pdf-virtual-test-buffer (&rest body)
+ (declare (indent 0) (debug t))
+ `(let ((doc pdf-virtual-test-document))
+ (pdf-info-process-assert-running t)
+ (with-temp-buffer
+ (insert ";; %VPDF 1.0\n\n")
+ (let (print-length)
+ (pp doc (current-buffer)))
+ (pdf-virtual-view-mode)
+ (progn ,@body))))
+
+(ert-deftest pdf-virtual-document-create ()
+ (let ((doc (pdf-virtual-document-create
+ pdf-virtual-test-document)))
+ (should (pdf-virtual-document-p doc))
+ (should (= (length (pdf-virtual-document-page-array doc))
+ 6))
+ (should (equal (pdf-virtual-document-file-map doc)
+ '(("test.pdf" 1))))))
+
+(ert-deftest pdf-virtual-document-filenames ()
+ (with-pdf-virtual-test-document doc
+ (should (equal (pdf-virtual-document-filenames doc)
+ '("test.pdf")))))
+
+(ert-deftest pdf-virtual-document-pages ()
+ (with-pdf-virtual-test-document doc
+ (should (equal '(("test.pdf" (4 . 4) nil)
+ ("test.pdf" (3 . 3) nil)
+ ("test.pdf" (5 . 6) nil))
+ (pdf-virtual-document-pages '(3 . 6) doc)))))
+
+(ert-deftest pdf-virtual-document-page ()
+ (with-pdf-virtual-test-document doc
+ (should (equal '("test.pdf" 6 nil)
+ (pdf-virtual-document-page 6 doc)))))
+
+(ert-deftest pdf-virtual-document-page-of ()
+ (with-pdf-virtual-test-document doc
+ (let ((pages '(2 1 4 3 5 6)))
+ (dotimes (i (length pages))
+ (should (equal (1+ i)
+ (pdf-virtual-document-page-of
+ "test.pdf" (nth i pages) doc)))))))
+
+(ert-deftest pdf-virtual-open ()
+ (with-pdf-virtual-test-buffer
+ (should (progn (pdf-info-open) t))))
+
+(ert-deftest pdf-virtual-close ()
+ (with-pdf-virtual-test-buffer
+ (should (progn (pdf-info-close) t))))
+
+(ert-deftest pdf-virtual-metadata ()
+ (with-pdf-virtual-test-buffer
+ (should (consp (pdf-info-metadata)))))
+
+(ert-deftest pdf-virtual-search ()
+ (with-pdf-virtual-test-buffer
+ (dolist (m (list (pdf-info-search-string "PDF" 2)
+ (pdf-info-search-regexp "PDF" 2)))
+ (should (= 2 (length m)))
+ (should (equal (mapcar (apply-partially 'alist-get 'page)
+ m)
+ '(2 2)))
+ (should (cl-every (lambda (elt)
+ (cl-every 'pdf-test-relative-edges-p elt))
+ (mapcar (apply-partially 'alist-get 'edges)
+ m))))))
+
+(ert-deftest pdf-virtual-pagelinks ()
+ (with-pdf-virtual-test-buffer
+ (let ((links (pdf-info-pagelinks 4)))
+ (should (cl-every 'pdf-test-relative-edges-p
+ (mapcar (apply-partially 'alist-get 'edges)
+ links)))
+ (should (equal (mapcar (apply-partially 'alist-get 'type)
+ links)
+ '(goto-dest uri)))
+ (should (equal (mapcar (apply-partially 'alist-get 'uri)
+ links)
+ '(nil "http://www.gnu.org"))))))
+
+(ert-deftest pdf-virtual-number-of-pages ()
+ (with-pdf-virtual-test-buffer
+ (should (= 6 (pdf-info-number-of-pages)))))
+
+(ert-deftest pdf-virtual-outline ()
+ (with-pdf-virtual-test-buffer
+ (let ((outline (pdf-info-outline)))
+ (should (= 8 (length outline)))
+ (should (equal (mapcar (apply-partially 'alist-get 'depth)
+ outline)
+ '(1 2 2 2 2 2 3 4)))
+ (should (cl-every (lambda (type)
+ (equal type 'goto-dest))
+ (mapcar (apply-partially 'alist-get 'type)
+ (cdr outline)))))))
+
+(ert-deftest pdf-virtual-gettext ()
+ (with-pdf-virtual-test-buffer
+ (let ((text (pdf-info-gettext 2 '(0 0 1 1))))
+ (should
+ (= 2 (with-temp-buffer
+ (insert text)
+ (count-matches "PDF" 1 (point))))))))
+
+(ert-deftest pdf-virtual-getselection ()
+ (with-pdf-virtual-test-buffer
+ (should (consp (pdf-info-getselection 1 '(0 0 1 1))))
+ (should (cl-every 'pdf-test-relative-edges-p
+ (pdf-info-getselection 1 '(0 0 1 1))))))
+
+(ert-deftest pdf-virtual-charlayout ()
+ (with-pdf-virtual-test-buffer
+ (let ((cl (pdf-info-charlayout 1)))
+ (should (eq ?3 (car (car cl))))
+ (should (eq ?y (car (car (last cl)))))
+ (should (cl-every 'characterp (mapcar 'car cl)))
+ (should (cl-every
+ (apply-partially
+ 'cl-every 'pdf-test-relative-edges-p)
+ (mapcar 'cdr cl))))))
+
+(ert-deftest pdf-virtual-pagesize ()
+ (with-pdf-virtual-test-buffer
+ (let* ((os '(612 . 792))
+ (s (pdf-info-pagesize 1))
+ (ds (cons (* (- 0.4046 0.1879) (car os))
+ (* (- 0.3392 0.2462) (cdr os)))))
+ (should (< (abs (- (car s) (car ds))) 10))
+ (should (< (abs (- (cdr s) (cdr ds))) 10)))))
+
+(ert-deftest pdf-virtual-getannots ()
+ (with-pdf-virtual-test-buffer
+ (let ((a (pdf-info-getannots 1)))
+ (should (= 3 (length a)))
+ (should (equal (sort (copy-sequence '(highlight underline squiggly))
+ 'string<)
+ (sort (mapcar (lambda (elt)
+ (cdr (assq 'type elt)))
+ a)
+ 'string<))))))
+
+(ert-deftest pdf-virtual-getannot ()
+ (with-pdf-virtual-test-buffer
+ (let* ((a1 (car (pdf-info-getannots 1)))
+ (a2 (pdf-info-getannot (cdr (assq 'id a1)))))
+ (should (equal a1 a2)))))
+
+(ert-deftest pdf-virtual-addannot ()
+ (with-pdf-virtual-test-buffer
+ (should-error (pdf-info-addannot 1 '(0 0 1 1) 'text))))
+
+(ert-deftest pdf-virtual-delannot ()
+ (skip-unless (pdf-info-writable-annotations-p))
+ (with-pdf-virtual-test-buffer
+ (should-error (pdf-info-delannot
+ (cdr (assq 'id (car (pdf-info-getannots 1))))))))
+
+(ert-deftest pdf-virtual-mvannot ()
+ (skip-unless (pdf-info-writable-annotations-p))
+ (with-pdf-virtual-test-buffer
+ (should-error (pdf-info-mvannot
+ (cdr (assq 'id (car (pdf-info-getannots 1))))
+ '(0 0 0 0)))))
+
+(ert-deftest pdf-virtual-editannot ()
+ (skip-unless (pdf-info-writable-annotations-p))
+ (with-pdf-virtual-test-buffer
+ (should-error (pdf-info-editannot
+ (cdr (assq 'id (car (pdf-info-getannots 1))))
+ '((color . "blue"))))))
+
+(ert-deftest pdf-virtual-save ()
+ (skip-unless (pdf-info-writable-annotations-p))
+ (with-pdf-virtual-test-buffer
+ (should-error (pdf-info-save))))
+
+;; (ert-deftest pdf-virtual-getattachment-from-annot ()
+;; )
+
+;; (ert-deftest pdf-virtual-getattachments ()
+;; )
+
+;; (ert-deftest pdf-virtual-synctex-forward-search ()
+;; )
+
+;; (ert-deftest pdf-virtual-synctex-backward-search ()
+;; )
+
+;; (ert-deftest pdf-virtual-renderpage ()
+;; )
+
+;; (ert-deftest pdf-virtual-boundingbox ()
+;; )
+
+;; (ert-deftest pdf-virtual-pagelabels ()
+;; )
+
+;; (ert-deftest pdf-virtual-setoptions ()
+;; )
+
+;; (ert-deftest pdf-virtual-getoptions ()
+;; )
+