(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 "aaba
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 "