;;; ibuffer-tests.el --- Test suite. -*- lexical-binding: t -*-
;; Copyright (C) 2015-2016 Free Software Foundation, Inc.
;; 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 .
;;; Code:
(require 'ert)
(require 'ibuffer)
(eval-when-compile
(require 'ibuf-macs))
(ert-deftest ibuffer-autoload ()
"Tests to see whether reftex-auc has been autoloaded"
(should
(fboundp 'ibuffer-mark-unsaved-buffers))
(should
(autoloadp
(symbol-function
'ibuffer-mark-unsaved-buffers))))
(ert-deftest ibuffer-test-Bug24997 ()
"Test for http://debbugs.gnu.org/24997 ."
(ibuffer)
(let ((orig ibuffer-filtering-qualifiers))
(unwind-protect
(progn
(setq ibuffer-filtering-qualifiers
'((size-gt . 10)
(used-mode . lisp-interaction-mode)))
(ibuffer-update nil t)
(ignore-errors (ibuffer-decompose-filter))
(should (cdr ibuffer-filtering-qualifiers)))
(setq ibuffer-filtering-qualifiers orig)
(ibuffer-update nil t))))
(ert-deftest ibuffer-test-Bug25000 ()
"Test for http://debbugs.gnu.org/25000 ."
(let ((case-fold-search t)
(buf1 (generate-new-buffer "ibuffer-test-Bug25000-buf1"))
(buf2 (generate-new-buffer "ibuffer-test-Bug25000-buf2")))
(ibuffer)
(unwind-protect
(ibuffer-save-marks
(ibuffer-unmark-all-marks)
(ibuffer-mark-by-name-regexp (buffer-name buf1))
(ibuffer-change-marks ibuffer-marked-char ?L)
(ibuffer-mark-by-name-regexp (buffer-name buf2))
(ibuffer-change-marks ibuffer-marked-char ?l)
(should-not (cdr (ibuffer-buffer-names-with-mark ?l))))
(mapc (lambda (buf) (when (buffer-live-p buf)
(kill-buffer buf))) (list buf1 buf2)))))
(ert-deftest ibuffer-save-filters ()
"Tests that `ibuffer-save-filters' saves in the proper format."
(skip-unless (featurep 'ibuf-ext))
(let ((ibuffer-save-with-custom nil)
(ibuffer-saved-filters nil)
(test1 '((mode . org-mode)
(or (size-gt . 10000)
(and (not (starred-name))
(directory . "\")))))
(test2 '((or (mode . emacs-lisp-mode) (file-extension . "elc?")
(and (starred-name) (name . "elisp"))
(mode . lisp-interaction-mode))))
(test3 '((size-lt . 100) (derived-mode . prog-mode)
(or (filename . "scratch")
(filename . "bonz")
(filename . "temp")))))
(ibuffer-save-filters "test1" test1)
(should (equal (car ibuffer-saved-filters) (cons "test1" test1)))
(ibuffer-save-filters "test2" test2)
(should (equal (car ibuffer-saved-filters) (cons "test2" test2)))
(should (equal (cadr ibuffer-saved-filters) (cons "test1" test1)))
(ibuffer-save-filters "test3" test3)
(should (equal (car ibuffer-saved-filters) (cons "test3" test3)))
(should (equal (cadr ibuffer-saved-filters) (cons "test2" test2)))
(should (equal (car (cddr ibuffer-saved-filters)) (cons "test1" test1)))
(should (equal (cdr (assoc "test1" ibuffer-saved-filters)) test1))
(should (equal (cdr (assoc "test2" ibuffer-saved-filters)) test2))
(should (equal (cdr (assoc "test3" ibuffer-saved-filters)) test3))))
(ert-deftest ibuffer-test-Bug25058 ()
"Test for http://debbugs.gnu.org/25058 ."
(ibuffer)
(let ((orig-filters ibuffer-saved-filter-groups)
(tmp-filters '(("saved-filters"
("Shell"
(used-mode . shell-mode))
("Elisp"
(or
(used-mode . emacs-lisp-mode)
(used-mode . lisp-interaction-mode)))
("Dired"
(used-mode . dired-mode))
("Info"
(or
(used-mode . help-mode)
(used-mode . debugger-mode)
(used-mode . Custom-mode)
(used-mode . completion-list-mode)
(name . "\\`[*]Messages[*]\\'")))))))
(unwind-protect
(progn
(setq ibuffer-saved-filter-groups tmp-filters)
(ibuffer-switch-to-saved-filter-groups "saved-filters")
(ibuffer-decompose-filter-group "Elisp")
(ibuffer-filter-disable)
(ibuffer-switch-to-saved-filter-groups "saved-filters")
(should (assoc "Elisp" (cdar ibuffer-saved-filter-groups))))
(setq ibuffer-saved-filter-groups orig-filters)
(ibuffer-awhen (get-buffer "*Ibuffer*")
(and (buffer-live-p it) (kill-buffer it))))))
(ert-deftest ibuffer-test-Bug25042 ()
"Test for http://debbugs.gnu.org/25042 ."
(ibuffer)
(let ((filters ibuffer-filtering-qualifiers))
(unwind-protect
(progn
(ignore-errors ; Mistyped `match-string' instead of `string-match'.
(setq ibuffer-filtering-qualifiers nil)
(ibuffer-filter-by-predicate '(match-string "foo" (buffer-name))))
(should-not ibuffer-filtering-qualifiers))
(setq ibuffer-filtering-qualifiers filters))))
(provide 'ibuffer-tests)
;; ibuffer-tests.el ends here