;;; elide-head-tests.el --- Tests for elide-head.el -*- lexical-binding: t; -*- ;; Copyright (C) 2020-2022 Free Software Foundation, Inc. ;; Author: Simen Heggestøyl ;; Keywords: ;; This file is part of GNU Emacs. ;; GNU Emacs is free software: you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation, either version 3 of the License, or ;; (at your option) any later version. ;; GNU Emacs is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs. If not, see . ;;; Commentary: ;; ;;; Code: (require 'elide-head) (require 'ert) (require 'ert-x) (ert-deftest elide-head-tests-elide-head-mode () (let ((elide-head-headers-to-hide '(("START" . "END")))) (with-temp-buffer (insert "foo\nSTART\nHIDDEN\nEND\nbar") (elide-head-mode 1) (let ((o (car (overlays-at 14)))) (should (= (overlay-start o) 10)) (should (= (overlay-end o) 21)) (should (overlay-get o 'invisible)) (should (overlay-get o 'evaporate)))))) (ert-deftest elide-head-tests-elide-head-mode/enable-disable () (let ((elide-head-headers-to-hide '(("START" . "END")))) (with-temp-buffer (insert "foo\nSTART\nHIDDEN\nEND\nbar") (elide-head-mode 1) (should (overlays-at 14)) (elide-head-mode -1) (should-not (overlays-at 14))))) (ert-deftest elide-head-tests-elide-head-mode/normal-mode () (ert-with-temp-file fil (with-temp-file fil (insert "foo\nSTART\nHIDDEN\nEND\nbar")) (let ((elide-head-headers-to-hide '(("START" . "END"))) (buf (find-file-noselect fil))) (save-excursion (unwind-protect (progn (set-buffer buf) (elide-head-mode 1) (should (= 1 (length (overlays-in (point-min) (point-max))))) (normal-mode) (should (= 0 (length (overlays-in (point-min) (point-max)))))) (when buf (kill-buffer buf))))))) (ert-deftest elide-head-tests-elide-head-mode/revert-buffer () (ert-with-temp-file fil (with-temp-file fil (insert "foo\nSTART\nHIDDEN\nEND\nbar")) (let ((elide-head-headers-to-hide '(("START" . "END"))) (buf (find-file-noselect fil))) (save-excursion (unwind-protect (progn (set-buffer buf) (elide-head-mode 1) (should (= 1 (length (overlays-in (point-min) (point-max))))) (revert-buffer nil t) (elide-head-mode 1) (should (= 1 (length (overlays-in (point-min) (point-max)))))) (when buf (kill-buffer buf))))))) (defmacro elide-head--add-test (name text search-str) `(ert-deftest ,(intern (format "elide-head--test-headers-to-hide/%s" name)) () (with-temp-buffer (insert ,text) (elide-head-mode 1) (goto-char (point-min)) (re-search-forward ,search-str) (let ((o (car (overlays-at (match-beginning 0))))) (should (overlayp o)) (should (overlay-get o 'invisible)) (should (overlay-get o 'evaporate)))))) ;;; GPLv3 ;; from Emacs (elide-head--add-test gpl3-1 "\ ;; GNU Emacs is free software: you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation, either version 3 of the License, or ;; (at your option) any later version. ;; ;; GNU Emacs is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs. If not, see . " "GNU Emacs is distributed in the hope that") ;; from libtorrent (elide-head--add-test gpl3-2 "\ This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA " "This library is distributed in the hope that") ;; from notmuch (elide-head--add-test gpl3-3 "\ * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see https://www.gnu.org/licenses/ . " "This program is distributed in the hope that") ;; from fribok (elide-head--add-test gpl3-4 "\ /*************************************************************************** * Copyright (C) 2007, 2009 by J. Random Hacker * * * * This program is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation, either version 3 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program. If not, see *. * * ***************************************************************************/ " "This program is distributed in the hope that") ;;; GPLv2 ;; from jackmeter (elide-head--add-test gpl2-1 "\ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. " "This program is distributed in the hope that") ;;; Obsolete (with-suppressed-warnings ((obsolete elide-head) (obsolete elide-head-show)) (ert-deftest elide-head-tests-elide-head () (let ((elide-head-headers-to-hide '(("START" . "END")))) (with-temp-buffer (insert "foo\nSTART\nHIDDEN\nEND\nbar") (elide-head) (let ((o (car (overlays-at 14)))) (should (= (overlay-start o) 10)) (should (= (overlay-end o) 21)) (should (overlay-get o 'invisible)) (should (overlay-get o 'evaporate)))))) (ert-deftest elide-head-tests-elide-head-with-prefix-arg () (let ((elide-head-headers-to-hide '(("START" . "END")))) (with-temp-buffer (insert "foo\nSTART\nHIDDEN\nEND\nbar") (elide-head) (should (overlays-at 14)) (elide-head t) (should-not (overlays-at 14))))) (ert-deftest elide-head-tests-show () (let ((elide-head-headers-to-hide '(("START" . "END")))) (with-temp-buffer (insert "foo\nSTART\nHIDDEN\nEND\nbar") (elide-head) (should (overlays-at 14)) (elide-head-show) (should-not (overlays-at 14)))))) (provide 'elide-head-tests) ;;; elide-head-tests.el ends here