Commit | Line | Data |
---|---|---|
d176d8c6 UJ |
1 | ;;; newsticker-testsuite.el --- Test suite for newsticker. |
2 | ||
ba318903 | 3 | ;; Copyright (C) 2003-2014 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 | 35 | Signals 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 | 78 | Apply 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 | 105 | Apply 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'. |
138 | Signals 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 |