Update copyright notices for 2013.
[bpt/emacs.git] / test / automated / newsticker-tests.el
CommitLineData
d176d8c6
UJ
1;;; newsticker-testsuite.el --- Test suite for newsticker.
2
ab422c4d 3;; Copyright (C) 2003-2013 Free Software Foundation, Inc.
d176d8c6
UJ
4
5;; Author: Ulf Jasper <ulf.jasper@web.de>
d176d8c6 6;; Keywords: News, RSS, Atom
d176d8c6
UJ
7
8;; This file is part of GNU Emacs.
9
10;; GNU Emacs is free software: you can redistribute it and/or modify
11;; it under the terms of the GNU General Public License as published by
12;; the Free Software Foundation, either version 3 of the License, or
13;; (at your option) any later version.
14
15;; GNU Emacs is distributed in the hope that it will be useful,
16;; but WITHOUT ANY WARRANTY; without even the implied warranty of
17;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18;; GNU General Public License for more details.
19
20;; You should have received a copy of the GNU General Public License
21;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
22
d176d8c6
UJ
23;;; Commentary:
24
25;;; Code:
26
81416b68
UJ
27(require 'ert)
28(require 'newsticker)
d176d8c6
UJ
29
30;; ======================================================================
31;; Tests for newsticker-backend
32;; ======================================================================
81416b68
UJ
33(ert-deftest newsticker--guid ()
34 "Test for `newsticker--guid-*'.
d176d8c6 35Signals an error if something goes wrong."
81416b68
UJ
36 (should (string= "blah" (newsticker--guid-to-string "blah")))
37 (should (string= "myguid" (newsticker--guid '("title1" "description1" "link1"
d176d8c6
UJ
38 nil 'new 42 nil nil
39 ((guid () "myguid")))))))
40
81416b68
UJ
41(ert-deftest newsticker--cache-contains ()
42 "Test for `newsticker--cache-contains'."
d176d8c6
UJ
43 (let ((newsticker--cache '((feed1
44 ("title1" "description1" "link1" nil 'new 42
45 nil nil ((guid () "myguid")))))))
46 (newsticker--guid-to-string
47 (assoc 'guid (newsticker--extra '("title1" "description1"
48 "link1" nil 'new 42 nil nil
49 ((guid "myguid"))))))
81416b68 50 (should (newsticker--cache-contains newsticker--cache 'feed1 "WRONGTITLE"
d176d8c6 51 "description1" "link1" 'new "myguid"))
81416b68 52 (should (not (newsticker--cache-contains newsticker--cache 'feed1 "title1"
d176d8c6
UJ
53 "description1" "link1" 'new
54 "WRONG GUID")))
81416b68 55 (should (newsticker--cache-contains newsticker--cache 'feed1 "title1"
d176d8c6
UJ
56 "description1" "link1" 'new "myguid")))
57 (let ((newsticker--cache '((feed1
58 ("title1" "description1" "link1" nil 'new 42
59 nil nil ((guid () "myguid1")))
60 ("title1" "description1" "link1" nil 'new 42
61 nil nil ((guid () "myguid2")))))))
81416b68 62 (should (not (newsticker--cache-contains newsticker--cache 'feed1 "title1"
d176d8c6
UJ
63 "description1" "link1" 'new
64 "myguid")))
81416b68 65 (should (string= "myguid1"
d176d8c6
UJ
66 (newsticker--guid (newsticker--cache-contains
67 newsticker--cache 'feed1 "title1"
68 "description1" "link1" 'new
69 "myguid1"))))
81416b68 70 (should (string= "myguid2"
d176d8c6
UJ
71 (newsticker--guid (newsticker--cache-contains
72 newsticker--cache 'feed1 "title1"
73 "description1" "link1" 'new
74 "myguid2"))))))
75
81416b68 76(defun newsticker-tests--decode-iso8601-date (input expected)
d176d8c6 77 "Actually test `newsticker--decode-iso8601-date'.
81416b68 78Apply to INPUT and compare with EXPECTED."
d176d8c6
UJ
79 (let ((result (format-time-string "%Y-%m-%dT%H:%M:%S"
80 (newsticker--decode-iso8601-date input)
81 t)))
81416b68 82 (should (string= result expected))))
d176d8c6 83
81416b68 84(ert-deftest newsticker--decode-iso8601-date ()
d176d8c6 85 "Test `newsticker--decode-iso8601-date'."
81416b68
UJ
86 (newsticker-tests--decode-iso8601-date "2004"
87 "2004-01-01T00:00:00")
88 (newsticker-tests--decode-iso8601-date "2004-09"
89 "2004-09-01T00:00:00")
90 (newsticker-tests--decode-iso8601-date "2004-09-17"
91 "2004-09-17T00:00:00")
92 (newsticker-tests--decode-iso8601-date "2004-09-17T05:09"
93 "2004-09-17T05:09:00")
94 (newsticker-tests--decode-iso8601-date "2004-09-17T05:09:49"
95 "2004-09-17T05:09:49")
96 (newsticker-tests--decode-iso8601-date "2004-09-17T05:09:49.123"
97 "2004-09-17T05:09:49")
98 (newsticker-tests--decode-iso8601-date "2004-09-17T05:09+01:00"
99 "2004-09-17T04:09:00")
100 (newsticker-tests--decode-iso8601-date "2004-09-17T05:09-02:00"
101 "2004-09-17T07:09:00"))
d176d8c6
UJ
102
103(defun newsticker--do-test--decode-rfc822-date (input expected)
104 "Actually test `newsticker--decode-rfc822-date'.
81416b68 105Apply to INPUT and compare with EXPECTED."
d176d8c6
UJ
106 (let ((result (format-time-string "%Y-%m-%dT%H:%M:%S"
107 (newsticker--decode-rfc822-date input)
108 t)))
81416b68 109 (should (string= result expected))))
d176d8c6 110
81416b68 111(ert-deftest newsticker--decode-rfc822-date ()
d176d8c6
UJ
112 "Test `newsticker--decode-rfc822-date'."
113 (newsticker--do-test--decode-rfc822-date "Mon, 10 Mar 2008 19:27:52 +0100"
114 "2008-03-10T18:27:52")
115 ;;(format-time-string "%d.%m.%y, %H:%M %T%z"
116 ;;(newsticker--decode-rfc822-date "Mon, 10 Mar 2008 19:27:52 +0200"))
117
118 (newsticker--do-test--decode-rfc822-date "Mon, 10 Mar 2008 19:27:52"
119 "2008-03-10T19:27:52")
120 (newsticker--do-test--decode-rfc822-date "Mon, 10 Mar 2008 19:27"
121 "2008-03-10T19:27:00")
122 (newsticker--do-test--decode-rfc822-date "10 Mar 2008 19:27"
123 "2008-03-10T19:27:00")
124 (newsticker--do-test--decode-rfc822-date "Mon, 10 Mar 2008"
125 "2008-03-10T00:00:00")
126 (newsticker--do-test--decode-rfc822-date "10 Mar 2008"
127 "2008-03-10T00:00:00")
128 (newsticker--do-test--decode-rfc822-date "Sat, 01 Dec 2007 00:05:00 +0100"
129 "2007-11-30T23:05:00")
130 (newsticker--do-test--decode-rfc822-date "Sun, 30 Dec 2007 18:58:13 +0100"
131 "2007-12-30T17:58:13"))
132
133;; ======================================================================
134;; Tests for newsticker-treeview
135;; ======================================================================
81416b68 136(ert-deftest newsticker--group-manage-orphan-feeds ()
d176d8c6
UJ
137 "Test `newsticker--group-manage-orphan-feeds'.
138Signals an error if something goes wrong."
139 (let ((newsticker-groups '("Feeds"))
140 (newsticker-url-list-defaults nil)
dba0634a 141 (newsticker-url-list '(("feed1") ("feed2") ("feed3"))))
73c3f81d 142 (newsticker--group-manage-orphan-feeds)
81416b68 143 (should (equal '("Feeds" "feed3" "feed2" "feed1")
d176d8c6
UJ
144 newsticker-groups))))
145
81416b68 146(provide 'newsticker-tests)
d176d8c6 147
81416b68 148;;; newsticker-tests.el ends here