(use test html-parser) (test-begin "html-parser") (define (string-scan str pat) (string-length ((make-string-reader/ci pat) (open-input-string str)))) (test-group "utilities" (test "string-scan (basic)" 3 (string-scan "abcdefghi" "def")) (test "string-scan (case-insensitive)" 3 (string-scan "abcdEfghi" "deF")) (test "string-scan (single char)" 4 (string-scan "abcdefghi" "e")) (test "string-scan (overlap)" 12 (string-scan "salkabcdabghabcdabdef" "abcdabd")) (test "string-scan (boyer-moore)" 216 (string-scan "abracadababrabrabrabracadababrabrabrabracadababrabrabrabracadababrabrabrabracadababrabrabrabracadababrabrabrabracadababrabrabrabracadababrabrabrabracadababrabrabrabracadababrabrabrabracadababrabrabrabracadababrabrabrabracadabrabracadababrabrabrabracadababrabrabrabracadababrabrabrabracadababrabrabrabracadababrabrabrabracadababrabrabrabracadababrabrabrabracadababrabrabr" "abracadabra")) (test "string-scan (empty pattern)" 0 (string-scan "abakjrgaker" "")) ) (test-group "parsing" (test '((a (@ (href "http://foo.scm/")) "foo")) (html->sxml "foo")) (test '((a "a" (b "ab") "a" (c "ac")) "x") (html->sxml "aabaacx")) (test '((p "p1") (p "p2") (p "p3")) (html->sxml "

p1

p2

p3")) (test '((i "italic" (b "bold italic")) (b "bold")) (html->sxml "italicbold italicbold")) (test '((*PI* xml "blah blah")) (html->sxml "")) (test '("abc" (*COMMENT* "def") "ghi") (html->sxml "abcghi")) (test '((pre "&")) (html->sxml "

&]]>
")) (test '((xmp "&")) (html->sxml "<a>&amp;<!--foo--><![CDATA[...]]></a>")) ) (test-end)