diff options
author | Ludovic Courtès | 2008-12-23 01:59:35 +0100 |
---|---|---|
committer | Ludovic Courtès | 2008-12-23 01:59:35 +0100 |
commit | 3d0850364eb2099ff7f047642ae1c48e82cfb1a7 (patch) | |
tree | bbafda9481e316c7ad7fb355f6eff649cae4950c /tests/readers/rss-2.test | |
parent | 6fa59c5132a1a8bde543dd4ce4c6b6c33b8d0625 (diff) | |
download | skribilo-3d0850364eb2099ff7f047642ae1c48e82cfb1a7.tar.gz skribilo-3d0850364eb2099ff7f047642ae1c48e82cfb1a7.tar.lz skribilo-3d0850364eb2099ff7f047642ae1c48e82cfb1a7.zip |
Add test framework and `rss-2' unit tests.
* Makefile.am (SUBDIRS): Add `tests'.
* configure.ac: Produce `tests/Makefile'.
* src/guile/Makefile.am (EXTRA_DIST): Add SRFI-64 files.
* tests: New directory.
Diffstat (limited to 'tests/readers/rss-2.test')
-rw-r--r-- | tests/readers/rss-2.test | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/tests/readers/rss-2.test b/tests/readers/rss-2.test new file mode 100644 index 0000000..e6014f5 --- /dev/null +++ b/tests/readers/rss-2.test @@ -0,0 +1,95 @@ +;;; Excercise RSS 2.0 reader. -*- Scheme -*- +;;; +;;; Copyright (C) 2008 Ludovic Courtès <ludo@gnu.org> +;;; +;;; This file is part of Skribilo. +;;; +;;; Skribilo is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU Lesser General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; Skribilo 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 Lesser +;;; General Public License for more details. +;;; +;;; You should have received a copy of the GNU Lesser General Public License +;;; along with this program. If not, see <http://www.gnu.org/licenses/>. + +(define-module (tests rss-2) + :use-module (ice-9 match) + :use-module (skribilo reader) + :use-module (srfi srfi-64)) + +(if (or (not (false-if-exception (resolve-interface '(sxml simple)))) + (not (false-if-exception (resolve-interface '(htmlprag))))) + (exit 77)) + +(define %rss2-read #f) + + +(define-macro (test-match name pattern xml) + `(test-equal ,name #t + (match (%rss2-read (open-input-string ,xml)) + (,pattern #t) + (_ #f)))) + +;; Since `match' doesn't support keywords, help it. +(define (kw:title? x) (eq? x #:title)) + + +(test-begin "rss-2") + +(test-eq "make-reader" #t + (begin + (set! %rss2-read (make-reader 'rss-2)) + (procedure? %rss2-read))) + +(test-match "basic" + `(document ,'#:title (list "The Channel") + (chapter ,'#:title (list "Foo Bar") + ,_ + (list "Hello world."))) + +"<?xml version=\"1.0\" encoding=\"iso-8859-1\" ?> + <rss version=\"2.0\"> + <channel> + <title>The Channel</title> + <link>http://example.net/</link> + <description>Some channel description...</description> + + <item> + <title>Foo Bar</title> + <pubDate>Mon, 06 Jun 2005 23:05:00 +0200</pubDate> + <description>Hello world.</description> + </item> + </channel> + </rss>") + +(test-match "with HTML markup" + `(document ,'#:title (list (emph "The") " Channel") + (chapter ,'#:title (list "Foo " (bold "&") " Bar") + ,_ + (list (p "Hello world.")))) + +"<?xml version=\"1.0\" encoding=\"iso-8859-1\" ?> + <rss version=\"2.0\"> + <channel> + <title><em>The</em> Channel</title> + <link>http://example.net/</link> + <description>Some channel description...</description> + + <item> + <title>Foo <b>&</b> Bar</title> + <pubDate>Mon, 06 Jun 2005 23:05:00 +0200</pubDate> + <description><P>Hello world.</P></description> + </item> + </channel> + </rss>") + +(test-end "rss-2") + + +(exit (= (test-runner-fail-count (test-runner-current)) 0)) + |