[PATCH 2/2] test: Add tests for `notmuch-show-test-clean-address'.
David Edmondson
dme at dme.org
Mon Jan 16 08:47:33 PST 2012
---
Add three tests. The third one currently fails.
emacs/notmuch-test.el | 87 +++++++++++++++++++++++++++++++++++++++++++++++++
test/emacs | 6 +++
2 files changed, 93 insertions(+), 0 deletions(-)
create mode 100644 emacs/notmuch-test.el
diff --git a/emacs/notmuch-test.el b/emacs/notmuch-test.el
new file mode 100644
index 0000000..d6cf318
--- /dev/null
+++ b/emacs/notmuch-test.el
@@ -0,0 +1,87 @@
+;; notmuch-test.el --- testing the emacs interface
+;;
+;; Copyright © David Edmondson
+;;
+;; This file is part of Notmuch.
+;;
+;; Notmuch 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.
+;;
+;; Notmuch 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 Notmuch. If not, see <http://www.gnu.org/licenses/>.
+;;
+;; Authors: David Edmondson <dme at dme.org>
+
+(require 'cl) ;; This code is often used uncompiled.
+
+;;
+
+(defun notmuch-test-reporter (output expected)
+ "Report that the `output' does not match the `expected' result."
+ (concat "Expect:\t" (prin1-to-string expected) "\n"
+ "Output:\t" (prin1-to-string output) "\n"))
+
+(defun notmuch-test-unsimilar (output expected)
+ "`output' and `expected' are dissimilar. Show a summary of
+the differences, ignoring similarities."
+ (cond ((and (listp output)
+ (listp expected))
+ (apply #'concat (loop for o in output
+ for e in expected
+ if (not (equal o e))
+ collect (notmuch-test-reporter o e))))
+
+ (t
+ ;; Catch all case.
+ (notmuch-test-reporter output expected))))
+
+(defun notmuch-test-compare (output expected)
+ "Compare `output' with `expected'. Report any discrepencies."
+ (if (equal output expected)
+ t
+ (notmuch-test-unsimilar output expected)))
+
+;;
+
+;; Tests:
+
+(defun notmuch-test-clean-address-1 ()
+ (notmuch-test-compare (notmuch-show-clean-address "dme at dme.org")
+ "dme at dme.org"))
+
+(defun notmuch-test-clean-address-2 ()
+ (let* ((input '("foo at bar.com"
+ "<foo at bar.com>"
+ "Foo Bar <foo at bar.com>"
+ "foo at bar.com <foo at bar.com>"
+ "\"Foo Bar\" <foo at bar.com>"))
+ (expected '("foo at bar.com"
+ "foo at bar.com"
+ "Foo Bar <foo at bar.com>"
+ "foo at bar.com"
+ "Foo Bar <foo at bar.com>"))
+ (output (mapcar #'notmuch-show-clean-address input)))
+ (notmuch-test-compare output expected)))
+
+(defun notmuch-test-clean-address-3 ()
+ (let* ((input '("ДБ <db-uknot at stop.me.uk>"
+ "foo (at home) <foo at bar.com>"
+ "foo [at home] <foo at bar.com>"
+ "Foo Bar"))
+ (expected '("ДБ <db-uknot at stop.me.uk>"
+ "foo (at home) <foo at bar.com>"
+ "foo [at home] <foo at bar.com>"
+ "Foo Bar"))
+ (output (mapcar #'notmuch-show-clean-address input)))
+ (notmuch-test-compare output expected)))
+
+;;
+
+(provide 'notmuch-test)
diff --git a/test/emacs b/test/emacs
index ac47b16..3a536fb 100755
--- a/test/emacs
+++ b/test/emacs
@@ -514,4 +514,10 @@ counter=$(test_emacs \
)
test_expect_equal "$counter" 2
+for i in 1 2 3; do
+ test_begin_subtest "notmuch-show-clean-address $i"
+ result=$(test_emacs '(load "notmuch-test.el") (notmuch-test-clean-address-'$i')')
+ test_expect_emacs_t "$result"
+done
+
test_done
--
1.7.7.3
More information about the notmuch
mailing list