summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorUlf Jasper <ulf.jasper@web.de>2008-06-14 10:11:20 +0000
committerUlf Jasper <ulf.jasper@web.de>2008-06-14 10:11:20 +0000
commit2850a67c701e6d49e8a76f743454730eab1ef33a (patch)
treeb132bab29e050abe3bef781c9d1a8bb302b97e4b /test
parenta22e4ebc846438ac086b0102f3b7d44fddd05e50 (diff)
downloademacs-2850a67c701e6d49e8a76f743454730eab1ef33a.tar.gz
Added newsticker-testsuite.el.
Diffstat (limited to 'test')
-rw-r--r--test/ChangeLog4
-rw-r--r--test/newsticker-testsuite.el180
2 files changed, 184 insertions, 0 deletions
diff --git a/test/ChangeLog b/test/ChangeLog
index 8c1995da76c..ed05b07384f 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -1,3 +1,7 @@
+2008-06-14 Ulf Jasper <ulf.jasper@web.de>
+
+ * newsticker-testsuite.el: New file.
+
2008-05-24 Ulf Jasper <ulf.jasper@web.de>
* icalendar-testsuite.el (icalendar-testsuite--run-function-tests):
diff --git a/test/newsticker-testsuite.el b/test/newsticker-testsuite.el
new file mode 100644
index 00000000000..0019ad84853
--- /dev/null
+++ b/test/newsticker-testsuite.el
@@ -0,0 +1,180 @@
+;;; newsticker-testsuite.el --- Test suite for newsticker.
+
+;; Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008
+;; Free Software Foundation, Inc.
+
+;; Author: Ulf Jasper <ulf.jasper@web.de>
+;; Filename: newsticker-testsuite.el
+;; URL: http://www.nongnu.org/newsticker
+;; Keywords: News, RSS, Atom
+;; Time-stamp: "14. Juni 2008, 12:09:39 (ulf)"
+
+;; ======================================================================
+
+;; 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 <http://www.gnu.org/licenses/>.
+
+;; ======================================================================
+
+;;; Commentary:
+
+;;; Code:
+
+(require 'cl) ; assert
+
+;; ======================================================================
+;; Entry point
+;; ======================================================================
+(defun newsticker--testsuite ()
+ "Unit test for newsticker.
+Subtests signal errors if something goes wrong."
+ (interactive)
+ (newsticker--test--guid)
+ (newsticker--test--cache-contains)
+ (newsticker--test--decode-iso8601-date)
+ (newsticker--test--decode-rfc822-date)
+ (newsticker--test--group-manage-orphan-feeds)
+ (message "All tests passed successfully."))
+
+;; ======================================================================
+;; Tests for newsticker-backend
+;; ======================================================================
+(defun newsticker--test--guid ()
+ "Test `newsticker-guid-*'.
+Signals an error if something goes wrong."
+ (assert (string= "blah" (newsticker--guid-to-string "blah")))
+ (assert (string= "myguid" (newsticker--guid '("title1" "description1" "link1"
+ nil 'new 42 nil nil
+ ((guid () "myguid")))))))
+
+(defun newsticker--test--cache-contains ()
+ "Test `newsticker--test--cache-contains'.
+Signals an error if something goes wrong."
+ (let ((newsticker--cache '((feed1
+ ("title1" "description1" "link1" nil 'new 42
+ nil nil ((guid () "myguid")))))))
+ (newsticker--guid-to-string
+ (assoc 'guid (newsticker--extra '("title1" "description1"
+ "link1" nil 'new 42 nil nil
+ ((guid "myguid"))))))
+ (assert (newsticker--cache-contains newsticker--cache 'feed1 "WRONGTITLE"
+ "description1" "link1" 'new "myguid"))
+ (assert (not (newsticker--cache-contains newsticker--cache 'feed1 "title1"
+ "description1" "link1" 'new
+ "WRONG GUID")))
+ (assert (newsticker--cache-contains newsticker--cache 'feed1 "title1"
+ "description1" "link1" 'new "myguid")))
+ (let ((newsticker--cache '((feed1
+ ("title1" "description1" "link1" nil 'new 42
+ nil nil ((guid () "myguid1")))
+ ("title1" "description1" "link1" nil 'new 42
+ nil nil ((guid () "myguid2")))))))
+ (assert (not (newsticker--cache-contains newsticker--cache 'feed1 "title1"
+ "description1" "link1" 'new
+ "myguid")))
+ (assert (string= "myguid1"
+ (newsticker--guid (newsticker--cache-contains
+ newsticker--cache 'feed1 "title1"
+ "description1" "link1" 'new
+ "myguid1"))))
+ (assert (string= "myguid2"
+ (newsticker--guid (newsticker--cache-contains
+ newsticker--cache 'feed1 "title1"
+ "description1" "link1" 'new
+ "myguid2"))))))
+
+(defun newsticker--do-test--decode-iso8601-date (input expected)
+ "Actually test `newsticker--decode-iso8601-date'.
+Signals an error if iso8601-encoded INPUT does not match EXPECTED."
+ (let ((result (format-time-string "%Y-%m-%dT%H:%M:%S"
+ (newsticker--decode-iso8601-date input)
+ t)))
+ (assert (string= result expected)
+ nil "Error decoding '%s': found '%s' but expected '%s'."
+ input result expected)))
+
+(defun newsticker--test--decode-iso8601-date ()
+ "Test `newsticker--decode-iso8601-date'."
+ (newsticker--decode-iso8601-date "2004-09-17T05:09:49+00:00")
+ (newsticker--decode-iso8601-date "2004-09-17T05:09+00:00")
+ (newsticker--decode-iso8601-date "2004-09-17T05:09:49")
+ (newsticker--decode-iso8601-date "2004-09-17T05:09")
+ (newsticker--decode-iso8601-date "2004-09-17")
+ (newsticker--decode-iso8601-date "2004-09")
+ (newsticker--do-test--decode-iso8601-date "2004"
+ "2004-01-01T00:00:00")
+ (newsticker--do-test--decode-iso8601-date "2004-09"
+ "2004-09-01T00:00:00")
+ (newsticker--do-test--decode-iso8601-date "2004-09-17"
+ "2004-09-17T00:00:00")
+ (newsticker--do-test--decode-iso8601-date "2004-09-17T05:09"
+ "2004-09-17T05:09:00")
+ (newsticker--do-test--decode-iso8601-date "2004-09-17T05:09:49"
+ "2004-09-17T05:09:49")
+ (newsticker--do-test--decode-iso8601-date "2004-09-17T05:09:49.123"
+ "2004-09-17T05:09:49")
+ (newsticker--do-test--decode-iso8601-date "2004-09-17T05:09+01:00"
+ "2004-09-17T04:09:00")
+ (newsticker--do-test--decode-iso8601-date "2004-09-17T05:09-02:00"
+ "2004-09-17T07:09:00"))
+
+(defun newsticker--do-test--decode-rfc822-date (input expected)
+ "Actually test `newsticker--decode-rfc822-date'.
+Signals an error if rfc822-encoded INPUT does not match EXPECTED."
+ (let ((result (format-time-string "%Y-%m-%dT%H:%M:%S"
+ (newsticker--decode-rfc822-date input)
+ t)))
+ (assert (string= result expected)
+ nil "Error decoding '%s': found '%s' but expected '%s'."
+ input result expected)))
+
+(defun newsticker--test--decode-rfc822-date ()
+ "Test `newsticker--decode-rfc822-date'."
+ (newsticker--do-test--decode-rfc822-date "Mon, 10 Mar 2008 19:27:52 +0100"
+ "2008-03-10T18:27:52")
+ ;;(format-time-string "%d.%m.%y, %H:%M %T%z"
+ ;;(newsticker--decode-rfc822-date "Mon, 10 Mar 2008 19:27:52 +0200"))
+
+ (newsticker--do-test--decode-rfc822-date "Mon, 10 Mar 2008 19:27:52"
+ "2008-03-10T19:27:52")
+ (newsticker--do-test--decode-rfc822-date "Mon, 10 Mar 2008 19:27"
+ "2008-03-10T19:27:00")
+ (newsticker--do-test--decode-rfc822-date "10 Mar 2008 19:27"
+ "2008-03-10T19:27:00")
+ (newsticker--do-test--decode-rfc822-date "Mon, 10 Mar 2008"
+ "2008-03-10T00:00:00")
+ (newsticker--do-test--decode-rfc822-date "10 Mar 2008"
+ "2008-03-10T00:00:00")
+ (newsticker--do-test--decode-rfc822-date "Sat, 01 Dec 2007 00:05:00 +0100"
+ "2007-11-30T23:05:00")
+ (newsticker--do-test--decode-rfc822-date "Sun, 30 Dec 2007 18:58:13 +0100"
+ "2007-12-30T17:58:13"))
+
+;; ======================================================================
+;; Tests for newsticker-treeview
+;; ======================================================================
+(defun newsticker--test--group-manage-orphan-feeds ()
+ "Test `newsticker--group-manage-orphan-feeds'.
+Signals an error if something goes wrong."
+ (let ((newsticker-groups '("Feeds"))
+ (newsticker-url-list-defaults nil)
+ (newsticker-url-list '(("feed1") ("feed2") ("feed3"))))
+ (newsticker--group-manage-orphan-feeds)
+ (assert (equal '("Feeds" "feed3" "feed2" "feed1")
+ newsticker-groups))))
+
+(provide 'newsticker-testsuite)
+
+;;; newsticker-testsuite.el ends here