Blame


1 033f04ab 2022-01-14 op (in-package :gemtext-tests)
2 033f04ab 2022-01-14 op
3 033f04ab 2022-01-14 op (defsuite gemtext-suite (all-suite))
4 033f04ab 2022-01-14 op
5 033f04ab 2022-01-14 op (defun cmp-lines (xs ys)
6 033f04ab 2022-01-14 op (cond ((and (null xs) (null ys)) t)
7 033f04ab 2022-01-14 op ((and (null xs) ys) nil)
8 033f04ab 2022-01-14 op ((and xs (null ys)) nil)
9 033f04ab 2022-01-14 op ((not (gemtext:line-eq (car xs) (car ys))) nil)
10 033f04ab 2022-01-14 op (t (cmp-lines (cdr xs) (cdr ys)))))
11 033f04ab 2022-01-14 op
12 033f04ab 2022-01-14 op (deftest test-parse-elements (gemtext-suite)
13 033f04ab 2022-01-14 op (loop with suite = `(("# title" . ,(make-instance 'gemtext:title
14 033f04ab 2022-01-14 op :text "title"
15 033f04ab 2022-01-14 op :level 1))
16 033f04ab 2022-01-14 op ("#title" . ,(make-instance 'gemtext:title
17 033f04ab 2022-01-14 op :text "title"
18 033f04ab 2022-01-14 op :level 1))
19 033f04ab 2022-01-14 op ("## title" . ,(make-instance 'gemtext:title
20 033f04ab 2022-01-14 op :text "title"
21 033f04ab 2022-01-14 op :level 2))
22 033f04ab 2022-01-14 op ("###title" . ,(make-instance 'gemtext:title
23 033f04ab 2022-01-14 op :text "title"
24 033f04ab 2022-01-14 op :level 3))
25 588b55fb 2022-01-17 op ;; handle gracefully invalid link lines
26 588b55fb 2022-01-17 op ("=>" . ,(make-instance 'gemtext:paragraph
27 588b55fb 2022-01-17 op :text "=>"))
28 033f04ab 2022-01-14 op ("=>/foo" . ,(make-instance 'gemtext:link
29 033f04ab 2022-01-14 op :url (quri:uri "/foo")))
30 033f04ab 2022-01-14 op ("=> /foo bar" . ,(make-instance 'gemtext:link
31 033f04ab 2022-01-14 op :url (quri:uri "/foo")
32 033f04ab 2022-01-14 op :text "bar"))
33 033f04ab 2022-01-14 op ("* list item " . ,(make-instance 'gemtext:item
34 033f04ab 2022-01-14 op :text "list item"))
35 033f04ab 2022-01-14 op ("*text" . ,(make-instance 'gemtext:paragraph
36 033f04ab 2022-01-14 op :text "*text"))
37 033f04ab 2022-01-14 op (">cit" . ,(make-instance 'gemtext:blockquote
38 033f04ab 2022-01-14 op :text "cit")))
39 033f04ab 2022-01-14 op for (str . exp) in suite
40 033f04ab 2022-01-14 op do (assert-true (cmp-lines (gemtext:parse-string str)
41 033f04ab 2022-01-14 op (list exp)))))
42 a903e422 2022-01-17 op
43 a903e422 2022-01-17 op (deftest test-parse-verbatim (gemtext-suite)
44 a903e422 2022-01-17 op (let* ((content (format nil "hello~%"))
45 a903e422 2022-01-17 op (doc (format nil "```~%~A```" content)))
46 a903e422 2022-01-17 op (assert-true (cmp-lines (gemtext:parse-string doc)
47 a903e422 2022-01-17 op (list (make-instance 'gemtext:verbatim
48 a903e422 2022-01-17 op :text content))))))
49 a903e422 2022-01-17 op
50 a903e422 2022-01-17 op (deftest test-parse-verbatim-with-alt (gemtext-suite)
51 a903e422 2022-01-17 op (let* ((alt "some text")
52 a903e422 2022-01-17 op (content (format nil "hello~%"))
53 a903e422 2022-01-17 op (doc (format nil "```~A~%~A```" alt content)))
54 a903e422 2022-01-17 op (assert-true (cmp-lines (gemtext:parse-string doc)
55 a903e422 2022-01-17 op (list (make-instance 'gemtext:verbatim
56 a903e422 2022-01-17 op :alt alt
57 a903e422 2022-01-17 op :text content))))))
58 a903e422 2022-01-17 op
59 a903e422 2022-01-17 op (deftest test-parse-open-verbatim-block (gemtext-suite)
60 a903e422 2022-01-17 op (let* ((content (format nil "hello~%"))
61 a903e422 2022-01-17 op (doc (format nil "```~%~A" content)))
62 a903e422 2022-01-17 op (assert-true (cmp-lines (gemtext:parse-string doc)
63 a903e422 2022-01-17 op (list (make-instance 'gemtext:verbatim
64 a903e422 2022-01-17 op :text content))))))