;; -*- lexical-binding: t -*- (require 'pdf-view) (require 'ert) ;; Tests for pdf-view-register struct and cl-defmethod implementations. ;; These tests use mock bookmark data because the actual pdf-view-registerv-make ;; function requires a window context which isn't available in batch mode. (ert-deftest pdf-view-register-struct-creation () "Test that pdf-view-register struct can be created." (let* ((mock-bookmark '("test.pdf" (filename . "/path/to/test.pdf") (page . 1) (origin . (0.0 . 0.0)) (handler . pdf-view-bookmark-jump-handler))) (reg (pdf-view-register--make mock-bookmark))) ;; Should return non-nil (should reg) ;; Should be a pdf-view-register struct (should (pdf-view-register-p reg)) ;; Should store the bookmark (should (equal (pdf-view-register-bookmark reg) mock-bookmark)))) (ert-deftest pdf-view-register-val-describe () "Test that register-val-describe works for PDF register entries." (let* ((mock-bookmark '("test.pdf" (filename . "/path/to/test.pdf") (page . 5) (origin . (0.0 . 0.5)) (handler . pdf-view-bookmark-jump-handler))) (reg (pdf-view-register--make mock-bookmark))) ;; register-val-describe should return a non-empty string (should (stringp (with-output-to-string (register-val-describe reg nil)))) ;; The description should mention the page number (should (string-match-p "page 5" (with-output-to-string (register-val-describe reg nil)))))) (ert-deftest pdf-view-register-val-insert () "Test that register-val-insert works for PDF register entries." (let* ((mock-bookmark '("test.pdf" (filename . "/path/to/test.pdf") (page . 1) (handler . pdf-view-bookmark-jump-handler))) (reg (pdf-view-register--make mock-bookmark))) ;; register-val-insert should insert text without error (with-temp-buffer (register-val-insert reg) (should (> (buffer-size) 0))))) (ert-deftest pdf-view-handle-archived-file () :expected-result :failed (skip-unless (executable-find "gzip")) (let ((tramp-verbose 0) (temp (make-temp-file "pdf-test"))) (unwind-protect (progn (copy-file "test.pdf" temp t) (call-process "gzip" nil nil nil temp) (setq temp (concat temp ".gz")) (should (numberp (pdf-info-number-of-pages temp))))) (when (file-exists-p temp) (delete-file temp))))