AtlatestRepositorysigil-irc
1
;;; Tests for draft/read-marker MARKREAD helpers.3
(import (sigil test)4
(sigil irc message)5
(sigil irc read-marker))7
(test-group "MARKREAD parsing"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-message18
"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-message26
":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)