(require 'ert) (defvar ivy-expr nil "Holds a test expression to evaluate with `ivy-eval'.") (defvar ivy-result nil "Holds the eval result of `ivy-expr' by `ivy-eval'.") (defun ivy-eval () "Evaluate `ivy-expr'." (interactive) (setq ivy-result (eval ivy-expr))) (global-set-key (kbd "C-c e") 'ivy-eval) (defun ivy-with (expr keys) "Evaluate EXPR followed by KEYS." (let ((ivy-expr expr)) (execute-kbd-macro (vconcat (kbd "C-c e") (kbd keys))) ivy-result)) (ert-deftest ivy-read () (should (equal (ivy-read "pattern: " nil) nil)) (should (equal (ivy-read "pattern: " '("42")) "42")) (should (equal (ivy-with '(ivy-read "pattern: " '("blue" "yellow")) "C-m") "blue")) (should (equal (ivy-with '(ivy-read "pattern: " '("blue" "yellow")) "y C-m") "yellow")) (should (equal (ivy-with '(ivy-read "pattern: " '("blue" "yellow")) "y DEL b C-m") "blue")) (should (equal (ivy-with '(ivy-read "pattern: " '("blue" "yellow")) "z C-m") nil)))