;;; use-package-chords-tests.el --- Tests for use-package-chords.el -*- lexical-binding: t; -*- ;; 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, 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 GNU Emacs; see the file COPYING. If not, write to the ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, ;; Boston, MA 02111-1307, USA. ;;; Commentary: ;; ;;; Code: (require 'use-package) (require 'use-package-tests) (require 'use-package-chords) (defmacro match-expansion (form &rest value) `(should (pcase (expand-minimally ,form) ,@(mapcar #'(lambda (x) (list x t)) value)))) (defun use-package-test-normalize-chord (&rest args) (apply #'use-package-normalize-binder 'foo :chords args)) (ert-deftest use-package-test-normalize/:chords-1 () (should (equal (use-package-test-normalize-chord '(("C-a" . alpha))) '(("C-a" . alpha))))) (ert-deftest use-package-test-normalize/:chords-2 () (should (equal (use-package-test-normalize-chord '(("C-a" . alpha) :map foo-map ("C-b" . beta))) '(("C-a" . alpha) :map foo-map ("C-b" . beta))))) (ert-deftest use-package-test-normalize/:chords-3 () (should (equal (use-package-test-normalize-chord '(:map foo-map ("C-a" . alpha) ("C-b" . beta))) '(:map foo-map ("C-a" . alpha) ("C-b" . beta))))) (ert-deftest use-package-test/:chords-1 () (match-expansion (use-package foo :chords ("C-k" . key1) ("C-u" . key2)) `(progn (unless (fboundp 'key1) (autoload #'key1 "foo" nil t)) (unless (fboundp 'key2) (autoload #'key2 "foo" nil t)) (bind-chord "C-k" #'key1 nil) (bind-chord "C-u" #'key2 nil)))) (ert-deftest use-package-test/:chords-2 () (match-expansion (use-package foo :chords (("C-k" . key1) ("C-u" . key2))) `(progn (unless (fboundp 'key1) (autoload #'key1 "foo" nil t)) (unless (fboundp 'key2) (autoload #'key2 "foo" nil t)) (bind-chord "C-k" #'key1 nil) (bind-chord "C-u" #'key2 nil)))) (ert-deftest use-package-test/:chords-3 () (match-expansion (use-package foo :chords (:map my-map ("C-k" . key1) ("C-u" . key2))) `(progn (unless (fboundp 'key1) (autoload #'key1 "foo" nil t)) (unless (fboundp 'key2) (autoload #'key2 "foo" nil t)) (if (boundp 'my-map) (progn (bind-chord "C-k" #'key1 my-map) (bind-chord "C-u" #'key2 my-map)) (eval-after-load 'foo '(progn (bind-chord "C-k" #'key1 my-map) (bind-chord "C-u" #'key2 my-map))))))) (ert-deftest use-package-test/:chords-4 () (should-error (match-expansion (use-package foo :chords :map my-map ("C-k" . key1) ("C-u" . key2)) `(bind-chords :package foo)))) (ert-deftest use-package-test/:chords-5 () (match-expansion (use-package foo :chords ("C-k" . key1) (:map my-map ("C-u" . key2))) `(progn (unless (fboundp 'key1) (autoload #'key1 "foo" nil t)) (unless (fboundp 'key2) (autoload #'key2 "foo" nil t)) (progn (bind-chord "C-k" #'key1 nil) (if (boundp 'my-map) (bind-chord "C-u" #'key2 my-map) (eval-after-load 'foo '(bind-chord "C-u" #'key2 my-map))))))) (ert-deftest use-package-test/:chords-6 () (match-expansion (use-package foo :chords ("C-k" . key1) (:map my-map ("C-u" . key2)) (:map my-map2 ("C-u" . key3))) `(progn (unless (fboundp 'key1) (autoload #'key1 "foo" nil t)) (unless (fboundp 'key2) (autoload #'key2 "foo" nil t)) (unless (fboundp 'key3) (autoload #'key3 "foo" nil t)) (progn (bind-chord "C-k" #'key1 nil) (if (boundp 'my-map) (bind-chord "C-u" #'key2 my-map) (eval-after-load 'foo '(bind-chord "C-u" #'key2 my-map))) (if (boundp 'my-map2) (bind-chord "C-u" #'key3 my-map2) (eval-after-load 'foo '(bind-chord "C-u" #'key3 my-map2))))))) ;; Local Variables: ;; indent-tabs-mode: nil ;; no-byte-compile: t ;; no-update-autoloads: t ;; End: ;;; use-package-tests.el ends here