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.
250 lines
5.0 KiB
250 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 |
|
\^@" |
|
" |
|
\^@")) |
|
)
|
|
|