AtlatestRepositorysigil-irc

sigil-irc / tree / testtest-read-marker.sgl

1;;; Tests for draft/read-marker MARKREAD helpers.
2
3(import (sigil test)
4 (sigil irc message)
5 (sigil irc read-marker))
6
7(test-group "MARKREAD parsing"
8
9 (test "query (target only)"
10 (let* ((msg (parse-irc-message "MARKREAD #channel"))
11 (m (parse-markread-line msg)))
12 (assert-true m)
13 (assert-equal "#channel" (read-marker-target m))
14 (assert-equal #f (read-marker-timestamp m))))
16 (test "set (with timestamp)"
17 (let* ((msg (parse-irc-message
18 "MARKREAD #channel timestamp=2026-04-27T12:00:00.000Z"))
19 (m (parse-markread-line msg)))
20 (assert-true m)
21 (assert-equal "#channel" (read-marker-target m))
22 (assert-equal "2026-04-27T12:00:00.000Z" (read-marker-timestamp m))))
24 (test "echoed from server with prefix"
25 (let* ((msg (parse-irc-message
26 ":server MARKREAD #channel timestamp=2026-04-27T12:00:00.000Z"))
27 (m (parse-markread-line msg)))
28 (assert-true m)
29 (assert-equal "2026-04-27T12:00:00.000Z" (read-marker-timestamp m))))
31 (test "rejects malformed timestamp token"
32 (let* ((msg (parse-irc-message "MARKREAD #channel garbage"))
33 (m (parse-markread-line msg)))
34 (assert-equal #f m)))
36 (test "rejects empty params"
37 (let* ((msg (parse-irc-message "MARKREAD"))
38 (m (parse-markread-line msg)))
39 (assert-equal #f m))))
42(test-group "MARKREAD line builders"
44 (test "query line"
45 (assert-equal "MARKREAD #channel\r\n"
46 (markread-query-line "#channel")))
48 (test "set line without prefix"
49 (assert-equal "MARKREAD #channel timestamp=2026-04-27T12:00:00Z\r\n"
50 (markread-set-line "#channel" "2026-04-27T12:00:00Z")))
52 (test "set line with prefix (server echo)"
53 (assert-equal ":server MARKREAD #channel timestamp=2026-04-27T12:00:00Z\r\n"
54 (markread-set-line "#channel" "2026-04-27T12:00:00Z"
55 prefix: "server"))))
57(run-tests)