summaryrefslogtreecommitdiff
path: root/exercism/emacs-lisp/word-count/word-count-test.el
diff options
context:
space:
mode:
Diffstat (limited to 'exercism/emacs-lisp/word-count/word-count-test.el')
-rw-r--r--exercism/emacs-lisp/word-count/word-count-test.el65
1 files changed, 65 insertions, 0 deletions
diff --git a/exercism/emacs-lisp/word-count/word-count-test.el b/exercism/emacs-lisp/word-count/word-count-test.el
new file mode 100644
index 0000000..1029b68
--- /dev/null
+++ b/exercism/emacs-lisp/word-count/word-count-test.el
@@ -0,0 +1,65 @@
+;;; word-count-test.el --- Tests for word-count (exercism)
+
+;;; Commentary:
+
+;;; Code:
+
+(load-file "word-count.el")
+
+
+(defun equal-assoc (a b)
+ (let ((strcmp (lambda (a b) (not (string< (car a) (car b))))))
+ (equal (sort (copy-sequence a) strcmp)
+ (sort (copy-sequence b) strcmp))))
+
+
+(ert-deftest no-words-test ()
+ (should (equal-assoc (word-count "")
+ nil)))
+
+
+(ert-deftest count-one-word-test ()
+ (should (equal-assoc (word-count "word")
+ '(("word" . 1)))))
+
+
+(ert-deftest count-one-of-each-word-test ()
+ (should (equal-assoc (word-count "one of each")
+ '(("each" . 1)
+ ("of" . 1)
+ ("one" . 1)))))
+
+
+(ert-deftest multiple-occurrences-of-a-word-test ()
+ (should (equal-assoc (word-count "one fish two fish red fish blue fish")
+ '(("blue" . 1)
+ ("red" . 1)
+ ("two" . 1)
+ ("fish" . 4)
+ ("one" . 1)))))
+
+
+(ert-deftest ignore-punctuation-test ()
+ (should (equal-assoc (word-count "car : carpet as java : javascript!!&@$%^&")
+ '(("javascript" . 1)
+ ("java" . 1)
+ ("as" . 1)
+ ("carpet" . 1)
+ ("car" . 1)))))
+
+
+(ert-deftest include-numbers-test ()
+ (should (equal-assoc (word-count "testing, 1, 2 testing")
+ '(("2" . 1)
+ ("1" . 1)
+ ("testing" . 2)))))
+
+
+(ert-deftest normalize-case-test ()
+ (should (equal-assoc (word-count "go Go GO Stop stop")
+ '(("stop" . 2)
+ ("go" . 3)))))
+
+
+(provide 'word-count)
+;;; word-count-test.el ends here