Added those new tests (whoops)
This commit is contained in:
parent
5e6776a75c
commit
404464e41f
97
t/main.lisp
97
t/main.lisp
|
@ -1,97 +0,0 @@
|
||||||
(defpackage :rsss-testing
|
|
||||||
(:use :cl)
|
|
||||||
(:export
|
|
||||||
|
|
||||||
:do-all))
|
|
||||||
|
|
||||||
(in-package :rsss-testing)
|
|
||||||
|
|
||||||
|
|
||||||
(defun do-all ()
|
|
||||||
"Execute all tests."
|
|
||||||
|
|
||||||
(rt:do-tests))
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;; ----------------------------------------
|
|
||||||
;; DATA PREP
|
|
||||||
;; ----------------------------------------
|
|
||||||
|
|
||||||
(defvar *rss* "")
|
|
||||||
(with-open-file (file-stream "t/res/rss.xml")
|
|
||||||
(do ((line (read-line file-stream nil)
|
|
||||||
(read-line file-stream nil)))
|
|
||||||
((null line))
|
|
||||||
|
|
||||||
(setq *rss*
|
|
||||||
(concatenate 'string *rss* (format nil "~A~%" line)))))
|
|
||||||
|
|
||||||
(setq *rss* (xmls:parse-to-list *rss*))
|
|
||||||
|
|
||||||
(defvar *getf-strings-list*
|
|
||||||
'(("apple" 1) ("pear" 2) ("plum" yuck) ("plum" yum) ("madoka" weeb 2)))
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;; ----------------------------------------
|
|
||||||
;; MISC
|
|
||||||
;; ----------------------------------------
|
|
||||||
|
|
||||||
(rt:deftest getf-strings
|
|
||||||
(rsss:getf-strings *getf-strings-list* "apple")
|
|
||||||
(("apple" 1)))
|
|
||||||
|
|
||||||
(rt:deftest getf-strings-1
|
|
||||||
(rsss:getf-strings *getf-strings-list* "plum")
|
|
||||||
(("plum" yuck) ("plum" yum)))
|
|
||||||
|
|
||||||
(rt:deftest getf-strings-2
|
|
||||||
(rsss:getf-strings *getf-strings-list* "madoka")
|
|
||||||
|
|
||||||
(("madoka" weeb 2)))
|
|
||||||
|
|
||||||
|
|
||||||
(rt:deftest getf-string
|
|
||||||
(rsss:getf-string *getf-strings-list* "plum")
|
|
||||||
|
|
||||||
("plum" yuck))
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;; ----------------------------------------
|
|
||||||
;; FEED PARSING
|
|
||||||
;; ----------------------------------------
|
|
||||||
|
|
||||||
(rt:deftest feed-values
|
|
||||||
(rsss:feed-values *rss* "item")
|
|
||||||
(("item" NIL ("title" NIL "Local Resident Takes a Nap") ("description" NIL "John was reported to be \"tired\" and \"irritable\" before his nap. Not so any more.") ("link" NIL "gopher://www.news.com.co.uk.cn/nap.cgi") ("guid" (("isPermaLink" "false")) "1102345") ("pubDate" NIL "Mon, 28 Aug 2018 09:00:00 -0400")) ("item" NIL ("title" NIL "London Bridge Has Burned Down") ("description" NIL "Oh no, not again! :(") ("link" NIL "https://londonbridge.co.uk.cn/bridge.php") ("guid" (("isPermaLink" "false")) "1102345") ("pubDate" NIL "Tue, 29 Aug 2018 09:00:00 -0400"))))
|
|
||||||
|
|
||||||
(rt:deftest feed-items
|
|
||||||
(rsss:feed-items *rss*)
|
|
||||||
(("item" NIL ("title" NIL "Local Resident Takes a Nap") ("description" NIL "John was reported to be \"tired\" and \"irritable\" before his nap. Not so any more.") ("link" NIL "gopher://www.news.com.co.uk.cn/nap.cgi") ("guid" (("isPermaLink" "false")) "1102345") ("pubDate" NIL "Mon, 28 Aug 2018 09:00:00 -0400")) ("item" NIL ("title" NIL "London Bridge Has Burned Down") ("description" NIL "Oh no, not again! :(") ("link" NIL "https://londonbridge.co.uk.cn/bridge.php") ("guid" (("isPermaLink" "false")) "1102345") ("pubDate" NIL "Tue, 29 Aug 2018 09:00:00 -0400"))))
|
|
||||||
|
|
||||||
(rt:deftest feed-value
|
|
||||||
(rsss:feed-value *rss* "title")
|
|
||||||
("title" NIL "RSS Sage Emergency Broadcast"))
|
|
||||||
|
|
||||||
(rt:deftest feed-value-listless
|
|
||||||
(rsss:feed-value-listless *rss* "title")
|
|
||||||
"RSS Sage Emergency Broadcast")
|
|
||||||
|
|
||||||
(rt:deftest title
|
|
||||||
(rsss:title *rss*)
|
|
||||||
"RSS Sage Emergency Broadcast")
|
|
||||||
|
|
||||||
(rt:deftest description
|
|
||||||
(rsss:description *rss*)
|
|
||||||
"Your daily dose of RSS Sage tests!")
|
|
||||||
|
|
||||||
(rt:deftest link
|
|
||||||
(rsss:link *rss*)
|
|
||||||
"https://rsss.eunichx.us")
|
|
||||||
|
|
||||||
(rt:deftest pubdate
|
|
||||||
(rsss:pubdate *rss*)
|
|
||||||
"Tue, 29 Aug 2018 09:00:00 -0400")
|
|
||||||
|
|
|
@ -0,0 +1,179 @@
|
||||||
|
(defpackage :rsss-testing
|
||||||
|
(:use :cl)
|
||||||
|
(:export :do-all))
|
||||||
|
|
||||||
|
(in-package :rsss-testing)
|
||||||
|
|
||||||
|
;; NIL → VARYING
|
||||||
|
(defun do-all ()
|
||||||
|
"Execute all tests."
|
||||||
|
(rt:do-tests))
|
||||||
|
|
||||||
|
;; -----------------
|
||||||
|
|
||||||
|
;; To run these tests, just load up :rsss-testing and run #'do-all.
|
||||||
|
;; Senproblem'!
|
||||||
|
|
||||||
|
;; -----------------
|
||||||
|
|
||||||
|
(defvar *atom-xml* (alexandria:read-file-into-string #p"t/atom.xml"))
|
||||||
|
(defvar *atom-node* (xmls:parse *atom-xml*))
|
||||||
|
(defvar *atom-entry* (eighth (xmls:node-children *atom-node*)))
|
||||||
|
(defvar *rss1-xml* (alexandria:read-file-into-string #p"t/rss1.xml"))
|
||||||
|
(defvar *rss1-node* (xmls:parse *rss1-xml*))
|
||||||
|
(defvar *rss1-entry* (second (xmls:node-children *rss1-node*)))
|
||||||
|
(defvar *rss2-xml* (alexandria:read-file-into-string #p"t/rss2.xml"))
|
||||||
|
(defvar *rss2-node* (xmls:parse *rss2-xml*))
|
||||||
|
(defvar *rss2-entry* (sixth (xmls:node-children
|
||||||
|
(car (xmls:node-children *rss2-node*)))))
|
||||||
|
|
||||||
|
;; —————————————————————————————————————
|
||||||
|
;; MISC
|
||||||
|
;; —————————————————————————————————————
|
||||||
|
(rt:deftest append-or-replace-i
|
||||||
|
(let ((test-list nil))
|
||||||
|
(rsss::append-or-replace test-list 1))
|
||||||
|
(1))
|
||||||
|
(rt:deftest append-or-replace-ii
|
||||||
|
(let ((test-list '("never again!" 2312 "well, maybe…")))
|
||||||
|
(rsss::append-or-replace test-list "again. MAYBE."))
|
||||||
|
("never again!" 2312 "well, maybe…" "again. MAYBE."))
|
||||||
|
|
||||||
|
(rt:deftest equ-assoc-i
|
||||||
|
(let ((test-assoc '(("mami" 2) ("madoka" 3) ("homura" 4))))
|
||||||
|
(rsss::equ-assoc "madoka" test-assoc))
|
||||||
|
("madoka" 3))
|
||||||
|
(rt:deftest equ-assoc-ii
|
||||||
|
(let ((test-assoc '(("homura" "madoka"))))
|
||||||
|
(rsss::equ-assoc "homura" test-assoc))
|
||||||
|
("homura" "madoka"))
|
||||||
|
|
||||||
|
(rt:deftest nilp-i
|
||||||
|
(rsss::nilp nil)
|
||||||
|
T)
|
||||||
|
(rt:deftest nilp-ii
|
||||||
|
(rsss::nilp 1)
|
||||||
|
nil)
|
||||||
|
|
||||||
|
(rt:deftest ie-car-i
|
||||||
|
(multiple-value-bind (result error)
|
||||||
|
(rsss::ie-car 1)
|
||||||
|
(list result (not (rsss::nilp error))))
|
||||||
|
(nil T))
|
||||||
|
(rt:deftest ie-car-ii
|
||||||
|
(multiple-value-bind (result error)
|
||||||
|
(rsss::ie-car '((1 2) 2 3))
|
||||||
|
(list result (not (rsss::nilp error))))
|
||||||
|
((1 2) nil))
|
||||||
|
|
||||||
|
|
||||||
|
;; —————————————————————————————————————
|
||||||
|
;; PARSING
|
||||||
|
;; —————————————————————————————————————
|
||||||
|
;; ATOM PARSING
|
||||||
|
;; —————————————————
|
||||||
|
(rt:deftest parse-atom-i
|
||||||
|
(rsss:name (rsss::parse-atom *atom-node*))
|
||||||
|
"Planet GNU")
|
||||||
|
(rt:deftest parse-atom-ii
|
||||||
|
(rsss:date (rsss::parse-atom *atom-node*))
|
||||||
|
"2019-07-09T17:55:32+00:00")
|
||||||
|
(rt:deftest parse-atom-iii
|
||||||
|
(rsss:uri (rsss::parse-atom *atom-node*))
|
||||||
|
"https://planet.gnu.org/")
|
||||||
|
(rt:deftest parse-atom-iv
|
||||||
|
(length (rsss:entries (rsss::parse-atom *atom-node*)))
|
||||||
|
60)
|
||||||
|
(rt:deftest parse-atom-v
|
||||||
|
(rsss:name (third (rsss:entries (rsss::parse-atom *atom-node*))))
|
||||||
|
"DW5821e firmware update integration in ModemManager and fwupd")
|
||||||
|
|
||||||
|
(rt:deftest parse-atom-entry-i
|
||||||
|
(length (rsss:text (rsss::parse-atom-entry *atom-entry*)))
|
||||||
|
7923)
|
||||||
|
(rt:deftest parse-atom-entry-ii
|
||||||
|
(rsss:author (rsss::parse-atom-entry *atom-entry*))
|
||||||
|
"Christopher Lemmer Webber")
|
||||||
|
(rt:deftest parse-atom-entry-iii
|
||||||
|
(rsss:date (rsss::parse-atom-entry *atom-entry*))
|
||||||
|
"2019-07-09T14:27:00+00:00")
|
||||||
|
(rt:deftest parse-atom-entry-iv
|
||||||
|
(rsss:uri (rsss::parse-atom-entry *atom-entry*))
|
||||||
|
"http://dustycloud.org/blog/racket-is-an-acceptable-python/")
|
||||||
|
|
||||||
|
;; —————————————————
|
||||||
|
;; RSS1 PARSING
|
||||||
|
;; —————————————————
|
||||||
|
(rt:deftest parse-rss1-i
|
||||||
|
(rsss:name (rsss::parse-rss *rss1-node*))
|
||||||
|
"Planet GNU")
|
||||||
|
(rt:deftest parse-rss1-ii
|
||||||
|
(rsss:date (rsss::parse-rss *rss1-node*))
|
||||||
|
nil)
|
||||||
|
(rt:deftest parse-rss1-iii
|
||||||
|
(rsss:uri (rsss::parse-rss *rss1-node*))
|
||||||
|
"https://planet.gnu.org/")
|
||||||
|
(rt:deftest parse-rss1-iv
|
||||||
|
(length (rsss:entries (rsss::parse-rss *rss1-node*)))
|
||||||
|
60)
|
||||||
|
(rt:deftest parse-rss1-v
|
||||||
|
(rsss:name (third (rsss:entries (rsss::parse-rss *rss1-node*))))
|
||||||
|
"FSF Blogs: Thank you for advancing free software: Read FSF spring news in the latest Bulletin")
|
||||||
|
|
||||||
|
(rt:deftest parse-rss1-entry-i
|
||||||
|
(length (rsss:text (rsss::parse-rss-item *rss1-entry*)))
|
||||||
|
14616)
|
||||||
|
(rt:deftest parse-rss1-entry-ii
|
||||||
|
(rsss:author (rsss::parse-rss-item *rss1-entry*))
|
||||||
|
"FSF Blogs")
|
||||||
|
(rt:deftest parse-rss1-entry-iii
|
||||||
|
(rsss:date (rsss::parse-rss-item *rss1-entry*))
|
||||||
|
"2019-07-09T15:39:21+00:00")
|
||||||
|
(rt:deftest parse-rss1-entry-iv
|
||||||
|
(rsss:uri (rsss::parse-rss-item *rss1-entry*))
|
||||||
|
"http://www.fsf.org/blogs/rms/photo-blog-2019-june-brno")
|
||||||
|
|
||||||
|
;; —————————————————
|
||||||
|
;; RSS2 PARSING
|
||||||
|
;; —————————————————
|
||||||
|
(rt:deftest parse-rss2-i
|
||||||
|
(rsss:name (rsss::parse-rss *rss2-node*))
|
||||||
|
"Esperanto-USA member blogs")
|
||||||
|
(rt:deftest parse-rss2-ii
|
||||||
|
(rsss:date (rsss::parse-rss *rss2-node*))
|
||||||
|
"2019-07-09T00:00:39-07:00")
|
||||||
|
(rt:deftest parse-rss2-iii
|
||||||
|
(rsss:uri (rsss::parse-rss *rss2-node*))
|
||||||
|
"http://esperanto-usa.org/eusa/blogs/member-blogs.rss")
|
||||||
|
(rt:deftest parse-rss2-iv
|
||||||
|
(length (rsss:entries (rsss::parse-rss *rss2-node*)))
|
||||||
|
21)
|
||||||
|
(rt:deftest parse-rss2-v
|
||||||
|
(rsss:name (third (rsss:entries (rsss::parse-rss *rss2-node*))))
|
||||||
|
"Maja bulteno")
|
||||||
|
|
||||||
|
(rt:deftest parse-rss2-entry-i
|
||||||
|
(length (rsss:text (rsss::parse-rss-item *rss2-entry*)))
|
||||||
|
0)
|
||||||
|
(rt:deftest parse-rss2-entry-ii
|
||||||
|
(rsss:author (rsss::parse-rss-item *rss2-entry*))
|
||||||
|
nil)
|
||||||
|
(rt:deftest parse-rss2-entry-iii
|
||||||
|
(rsss:date (rsss::parse-rss-item *rss2-entry*))
|
||||||
|
"2019-06-29T00:47:00+00:00")
|
||||||
|
(rt:deftest parse-rss2-entry-iv
|
||||||
|
(rsss:uri (rsss::parse-rss-item *rss2-entry*))
|
||||||
|
"http://eo1a.blogspot.com/2019/06/cirkau-la-mondon-post-okdek-tagoj-26.html")
|
||||||
|
|
||||||
|
;; —————————————————
|
||||||
|
;; GENERAL PARSING
|
||||||
|
;; —————————————————
|
||||||
|
(rt:deftest parse-i
|
||||||
|
(type-of (rsss:parse *atom-xml*))
|
||||||
|
rsss::feed)
|
||||||
|
(rt:deftest parse-ii
|
||||||
|
(type-of (rsss:parse *rss1-xml*))
|
||||||
|
rsss::feed)
|
||||||
|
(rt:deftest parse-iii
|
||||||
|
(type-of (rsss:parse *rss2-xml*))
|
||||||
|
rsss::feed)
|
Reference in New Issue