You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

251 lines
5.0 KiB

;; Tests for helper functions and macros. -*- lexical-binding: t -*-
(add-to-list 'load-path ".")
(load "init" nil t)
(init-rst-ert t)
(ert-deftest helpers-asserts ()
"Check some assertions."
(should (equal ert-Buf-point-char "\^@"))
(should (equal ert-Buf-mark-char "\^?"))
)
(ert-deftest rst-destructuring-dolist ()
"Test `rst-destructuring-dolist'."
(should (equal nil (rst-destructuring-dolist (i nil)
(signal 'error nil))))
(should (equal t (rst-destructuring-dolist (i nil t)
(signal 'error nil))))
(should (let (res)
(rst-destructuring-dolist (e '(1) res)
(setq res (not (boundp '--rst-destructuring-dolist-var--))))))
(should (equal
'((4 . 3) (2 . 1))
(let (res)
(rst-destructuring-dolist ((l &rest r) '((1 . 2) (3 . 4)) res)
(push (cons r l) res)))))
(should (equal
'((6 5 4) (3 2 1))
(let (res)
(rst-destructuring-dolist ((l m r) '((1 2 3) (4 5 6)) res)
(push (list r m l) res)))))
(should (equal
'(3 2 1)
(let (res)
(rst-destructuring-dolist (e '(1 2 3) res)
(push e res)))))
(should (equal
'(30 20 10)
(let (res)
(rst-destructuring-dolist ((e &aux (a 10)) '((1) (2) (3)) res)
(push (* e a) res)
(setq a (+ a a))))))
(should (equal
'(30 20 10)
(let (res)
(rst-destructuring-dolist ((&rest e &aux (a 10)) '(1 2 3) res)
(push (* e a) res)
(setq a (+ a a))))))
)
(ert-deftest rst-forward-line-strict ()
"Test `rst-forward-line-strict'."
(should (ert-equal-buffer-return
'(rst-forward-line-strict 1)
"\^@"
t
nil))
(should (ert-equal-buffer-return
'(rst-forward-line-strict 0)
"\^@"
t
t))
(should (ert-equal-buffer-return
'(rst-forward-line-strict -1)
"\^@"
t
nil))
(should (ert-equal-buffer-return
'(rst-forward-line-strict 1)
"abc\^@"
t
nil))
(should (ert-equal-buffer-return
'(rst-forward-line-strict 0)
"abc\^@"
"\^@abc"
t))
(should (ert-equal-buffer-return
'(rst-forward-line-strict -1)
"abc\^@"
t
nil))
(should (ert-equal-buffer-return
'(rst-forward-line-strict 1)
"abc\^@
"
"abc
\^@"
t))
(should (ert-equal-buffer-return
'(rst-forward-line-strict 2)
"abc\^@
"
t
nil))
(should (ert-equal-buffer-return
'(rst-forward-line-strict 0)
"abc\^@
"
"\^@abc
"
t))
(should (ert-equal-buffer-return
'(rst-forward-line-strict -1)
"abc
\^@"
"\^@abc
"
t))
(should (ert-equal-buffer-return
'(rst-forward-line-strict -2)
"abc
\^@"
t
nil))
(should (ert-equal-buffer-return
'(rst-forward-line-strict 1 1)
"\^@"
t
nil))
(should (ert-equal-buffer-return
'(rst-forward-line-strict 1 2)
"\^@"
t
nil))
(should (ert-equal-buffer-return
'(rst-forward-line-strict 1 4)
"\^@abc"
"abc\^@"
t))
(should (ert-equal-buffer-return
'(rst-forward-line-strict 1 4)
"abc\^@"
t
nil))
(should (ert-equal-buffer-return
'(rst-forward-line-strict 1 3)
"\^@abc"
"abc\^@"
t))
(should (ert-equal-buffer-return
'(rst-forward-line-strict 1 5)
"abc\^@
"
"abc
\^@"
t))
(should (ert-equal-buffer-return
'(rst-forward-line-strict 2 5)
"abc\^@
"
t
nil))
)
(defun forward-line-looking-at (n &rest rst-res)
"Call `rst-forward-line-looking-at'. If match is returned
return t if `(match-beginning 0)' satisfies `(bolp)'
and `(match-end 0)' matches mark."
(rst-forward-line-looking-at
n rst-res
#'(lambda (mtcd)
(when mtcd
(and (bolp)
(= (match-end 0) (mark)))))))
(ert-deftest rst-forward-line-looking-at ()
"Test `rst-forward-line-looking-at'."
(should (ert-equal-buffer-return
'(forward-line-looking-at 0)
"\^@\^?"
t
t))
(should (ert-equal-buffer-return
'(forward-line-looking-at 1)
"\^@\^?"
t
nil))
(should (ert-equal-buffer-return
'(forward-line-looking-at 1)
"\^@
\^?"
t
t))
(should (ert-equal-buffer-return
'(forward-line-looking-at 1)
"\^@
.. \^?"
t
nil))
(should (ert-equal-buffer-return
'(forward-line-looking-at 1 'exm-sta)
"\^@
.. \^?
"
t
nil))
(should (ert-equal-buffer-return
'(forward-line-looking-at 1 'exm-beg)
"\^@
.. \^?
"
t
t))
)
(ert-deftest rst-delete-entire-line ()
"Test `rst-delete-entire-line'."
(should (ert-equal-buffer
'(rst-delete-entire-line 0)
"\^@"
t))
(should (ert-equal-buffer
'(rst-delete-entire-line 0)
" \^@"
"\^@"))
(should (ert-equal-buffer
'(rst-delete-entire-line 1)
"\^@
abc
"
"\^@
"))
(should (ert-equal-buffer
'(rst-delete-entire-line 2)
"\^@
abc
"
t))
(should (ert-equal-buffer
'(rst-delete-entire-line 3)
"\^@
abc
"
t))
(should (ert-equal-buffer
'(rst-delete-entire-line 0)
"
\^@abc
"
"
\^@"))
(should (ert-equal-buffer
'(rst-delete-entire-line -1)
"
abc
\^@"
"
\^@"))
)