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.
639 lines
10 KiB
639 lines
10 KiB
;; Tests for operations on list items -*- lexical-binding: t -*- |
|
|
|
(add-to-list 'load-path ".") |
|
(load "init" nil t) |
|
(init-rst-ert t) |
|
|
|
(ert-deftest items-asserts () |
|
"Check some assertions." |
|
(should (equal ert-Buf-point-char "\^@")) |
|
(should (equal ert-Buf-mark-char "\^?")) |
|
) |
|
|
|
(defun find-begs (beg-re) |
|
(rst-find-begs (region-beginning) (region-end) beg-re)) |
|
|
|
(ert-deftest rst-find-begs () |
|
"Tests `rst-find-begs'." |
|
(should (ert-equal-buffer-return |
|
'(find-begs 'itmany-beg-1) |
|
"\^@1 Normal paragraph. |
|
|
|
* 22 A bullet |
|
|
|
* 37 Another bullet |
|
|
|
58 Another normal paragraph. |
|
|
|
\^?" |
|
t '((22 . 0) |
|
(37 . 0)))) |
|
(should (ert-equal-buffer-return |
|
'(find-begs 'itmany-beg-1) |
|
"1 Normal paragraph. |
|
|
|
\^?* 22 A bullet |
|
|
|
* 37 Another bullet |
|
|
|
\^@58 Another normal paragraph. |
|
|
|
" |
|
t '((22 . 0) |
|
(37 . 0)))) |
|
(should (ert-equal-buffer-return |
|
'(find-begs 'itmany-beg-1) |
|
"1 Normal paragraph. |
|
|
|
\^?* 22 A bullet |
|
|
|
* 37 Another bullet |
|
|
|
1. 58 An enum. |
|
|
|
2. 74 Another enum. |
|
|
|
\^@95 Another normal paragraph. |
|
|
|
" |
|
t '((22 . 0) |
|
(37 . 0) |
|
(58 . 0) |
|
(74 . 0)))) |
|
(should (ert-equal-buffer-return |
|
'(find-begs 'bul-beg) |
|
"\^@ |
|
- 2 one |
|
+ 10 two |
|
* 19 three |
|
\^?" |
|
t '((2 . 0) |
|
(10 . 0) |
|
(19 . 0)))) |
|
(should (ert-equal-buffer-return |
|
'(find-begs 'bul-beg) |
|
" |
|
- 2 one\^@ |
|
+ 10 two |
|
* 19 three |
|
\^?" |
|
t '((2 . 0) |
|
(10 . 0) |
|
(19 . 0)))) |
|
(should (ert-equal-buffer-return |
|
'(find-begs 'bul-beg) |
|
"+ 1 zero |
|
\^@- 10 one |
|
+ 19 two |
|
* 28 three\^? |
|
" |
|
t '((10 . 0) |
|
(19 . 0) |
|
(28 . 0)))) |
|
(should (ert-equal-buffer-return |
|
'(find-begs 'bul-beg) |
|
"\^@ |
|
- 2 one |
|
|
|
+ 11 two |
|
|
|
* 23 three |
|
\^?" |
|
t '((2 . 0) |
|
(13 . 2) |
|
(23 . 0)))) |
|
(should (ert-equal-buffer-return |
|
'(find-begs 'bul-beg) |
|
"\^@Normal paragraph |
|
|
|
* 19 bullet |
|
|
|
* 32 three |
|
|
|
Another normal paragraph |
|
\^?" |
|
t '((19 . 0) |
|
(34 . 2)))) |
|
) |
|
|
|
(ert-deftest rst-find-begs-BUGS () |
|
"Exposes bugs in `rst-find-begs'." |
|
:expected-result :failed ;; These are bugs |
|
(should (ert-equal-buffer-return |
|
'(find-begs 'bul-beg) |
|
"\^@Normal paragraph |
|
* 18 bullet |
|
* 30 three |
|
Another normal paragraph |
|
\^?" |
|
t '((18 . 0) |
|
(32 . 2)))) |
|
(should (ert-equal-buffer-return |
|
'(find-begs 'bul-beg) |
|
"\^@ |
|
- 2 one |
|
+ 10 two |
|
* 21 three |
|
\^?" |
|
t '((2 . 0) |
|
(12 . 2) |
|
(19 . 0)))) |
|
) |
|
|
|
(ert-deftest rst-convert-bullets-to-enumeration () |
|
"Tests `rst-convert-bullets-to-enumeration'." |
|
(should (ert-equal-buffer |
|
'(rst-convert-bullets-to-enumeration) |
|
"\^@Normal paragraph. |
|
|
|
* A bullet |
|
|
|
* Another bullet |
|
|
|
Another normal paragraph. |
|
|
|
\^?" |
|
"\^@Normal paragraph. |
|
|
|
1. A bullet |
|
|
|
2. Another bullet |
|
|
|
Another normal paragraph. |
|
|
|
\^?" t)) |
|
(should (ert-equal-buffer |
|
'(rst-convert-bullets-to-enumeration) |
|
"Normal paragraph. |
|
|
|
\^?* A bullet |
|
|
|
* Another bullet |
|
|
|
\^@Another normal paragraph. |
|
|
|
" |
|
"Normal paragraph. |
|
|
|
\^?1. A bullet |
|
|
|
2. Another bullet |
|
|
|
\^@Another normal paragraph. |
|
|
|
" t)) |
|
(should (ert-equal-buffer |
|
'(rst-convert-bullets-to-enumeration) |
|
"Normal paragraph. |
|
|
|
\^?* A bullet |
|
|
|
* Another bullet |
|
|
|
1. A bullet |
|
|
|
2. Another bullet |
|
|
|
\^@Another normal paragraph. |
|
|
|
" |
|
|
|
"Normal paragraph. |
|
|
|
\^?1. A bullet |
|
|
|
2. Another bullet |
|
|
|
3. A bullet |
|
|
|
4. Another bullet |
|
|
|
\^@Another normal paragraph. |
|
|
|
" t)) |
|
) |
|
|
|
(ert-deftest rst-convert-bullets-to-enumeration-BUGS () |
|
"Exposes bugs in `rst-convert-bullets-to-enumeration'." |
|
:expected-result :failed ;; These are bugs |
|
(should (ert-equal-buffer |
|
'(rst-convert-bullets-to-enumeration) |
|
"\^@Normal paragraph. |
|
|
|
* A bullet |
|
|
|
* Another bullet |
|
|
|
* A bullet |
|
|
|
* Another bullet |
|
|
|
Another normal paragraph. |
|
|
|
\^?" |
|
"\^@Normal paragraph. |
|
|
|
1. A bullet |
|
|
|
2. Another bullet |
|
|
|
* A bullet |
|
|
|
* Another bullet |
|
|
|
Another normal paragraph. |
|
|
|
\^?" t)) |
|
) |
|
|
|
(ert-deftest rst-insert-list-continue () |
|
"Tests `rst-insert-list' when continuing a list." |
|
(should (ert-equal-buffer |
|
'(rst-insert-list) |
|
"* Some text\^@\n" |
|
"* Some text |
|
* \^@\n")) |
|
(should (ert-equal-buffer |
|
'(rst-insert-list) |
|
"* Some \^@text\n" |
|
"* Some text |
|
* \^@\n")) |
|
(should (ert-equal-buffer |
|
'(rst-insert-list) |
|
"* \^@Some text\n" |
|
"* Some text |
|
* \^@\n")) |
|
(should (ert-equal-buffer |
|
'(rst-insert-list) |
|
"* Some text |
|
- A deeper hyphen bullet\^@\n" |
|
"* Some text |
|
- A deeper hyphen bullet |
|
- \^@\n")) |
|
(should (ert-equal-buffer |
|
'(rst-insert-list) |
|
"* Some text |
|
- \^@Some text\n" |
|
"* Some text |
|
- Some text |
|
- \^@\n")) |
|
(should (ert-equal-buffer |
|
'(rst-insert-list) |
|
"1. Some text\^@\n" |
|
"1. Some text |
|
2. \^@\n")) |
|
(should (ert-equal-buffer |
|
'(rst-insert-list) |
|
"2. Some text\^@\n" |
|
"2. Some text |
|
3. \^@\n")) |
|
(should (ert-equal-buffer |
|
'(rst-insert-list) |
|
"a) Some text\^@\n" |
|
"a) Some text |
|
b) \^@\n")) |
|
(should (ert-equal-buffer |
|
'(rst-insert-list) |
|
"(A) Some text\^@\n" |
|
"(A) Some text |
|
\(B) \^@\n")) |
|
(should (ert-equal-buffer |
|
'(rst-insert-list) |
|
"(I) Some text\^@\n" |
|
"(I) Some text |
|
\(J) \^@\n")) |
|
(should (ert-equal-buffer |
|
'(rst-insert-list) |
|
"(I) Some text\^@\n" |
|
"(I) Some text |
|
\(J) \^@\n")) |
|
(should (ert-equal-buffer |
|
'(rst-insert-list) |
|
"(h) Some text |
|
\(i) Some text\^@\n" |
|
"(h) Some text |
|
\(i) Some text |
|
\(j) \^@\n")) |
|
(should (ert-equal-buffer |
|
'(rst-insert-list t) |
|
"(i) Some text\^@\n" |
|
"(i) Some text |
|
\(ii) \^@\n")) |
|
(should (ert-equal-buffer |
|
'(rst-insert-list) |
|
"(IV) Some text |
|
\(V) Some text\^@\n" |
|
"(IV) Some text |
|
\(V) Some text |
|
\(VI) \^@\n")) |
|
) |
|
|
|
(ert-deftest rst-insert-list-continue-BUGS () |
|
"Exposes bugs in `rst-insert-list-continue'." |
|
:expected-result :failed ;; These are bugs |
|
(should (ert-equal-buffer |
|
'(rst-insert-list) |
|
"(iv) Some text |
|
|
|
\(v) Some text\^@\n" |
|
"(iv) Some text |
|
|
|
\(v) Some text |
|
\(vi) \^@\n"))) |
|
|
|
(ert-deftest rst-insert-list-new () |
|
"Tests `rst-insert-list' when inserting a new list." |
|
(should (ert-equal-buffer |
|
'(rst-insert-list) |
|
"\^@ |
|
" |
|
"* \^@ |
|
" '("*"))) |
|
(should (ert-equal-buffer |
|
'(rst-insert-list) |
|
" |
|
\^@ |
|
" |
|
" |
|
- \^@ |
|
" '("-"))) |
|
(should (ert-equal-buffer |
|
'(rst-insert-list) |
|
" |
|
\^@ |
|
|
|
" |
|
" |
|
#. \^@ |
|
|
|
" '("#."))) |
|
(should (ert-equal-buffer |
|
'(rst-insert-list) |
|
"\^@ |
|
" |
|
"5) \^@ |
|
" '("1)" 5))) |
|
(should (ert-equal-buffer |
|
'(rst-insert-list) |
|
"\^@ |
|
" |
|
"(i) \^@ |
|
" '("(i)" ""))) |
|
(should (ert-equal-buffer |
|
'(rst-insert-list) |
|
"\^@ |
|
" |
|
"IV. \^@ |
|
" '("I." 4))) |
|
(should (ert-equal-buffer |
|
'(rst-insert-list) |
|
"Some line\^@ |
|
" |
|
"Some line |
|
|
|
c. \^@ |
|
" '("a." "c"))) |
|
(should (ert-equal-buffer |
|
'(rst-insert-list) |
|
"Some line |
|
\^@ |
|
" |
|
"Some line |
|
|
|
B) \^@ |
|
" '("A)" "B"))) |
|
(should (ert-equal-buffer |
|
'(rst-insert-list) |
|
"Some line |
|
|
|
\^@ |
|
" |
|
"Some line |
|
|
|
IV. \^@ |
|
" '("I." 4))) |
|
(should (ert-equal-buffer |
|
'(rst-insert-list) |
|
"Some line |
|
\^@Another line |
|
" |
|
"Some line |
|
Another line |
|
|
|
* \^@ |
|
" '("*"))) |
|
) |
|
|
|
(ert-deftest rst-insert-list-new-BUGS () |
|
"Exposes bugs in `rst-insert-list' when inserting a new list." |
|
:expected-result :failed ;; These are bugs |
|
(should (ert-equal-buffer |
|
'(rst-insert-list) |
|
"\^@ \n" |
|
"* \^@ |
|
" '("*"))) |
|
(should (ert-equal-buffer |
|
'(rst-insert-list) |
|
"Some line |
|
\^@ |
|
Another line |
|
" |
|
"Some line |
|
|
|
* \^@ |
|
|
|
Another line |
|
" '("*"))) |
|
) |
|
|
|
(ert-deftest rst-straighten-bullets-region () |
|
"Tests `rst-straighten-bullets-region'." |
|
(let ((rst-preferred-bullets '(?* ?-))) |
|
(should (ert-equal-buffer |
|
'(rst-straighten-bullets-region) |
|
"\^@\^?" |
|
"\^@\^?" |
|
t)) |
|
(should (ert-equal-buffer |
|
'(rst-straighten-bullets-region) |
|
"\^@ |
|
- one |
|
+ two |
|
* three |
|
\^?" |
|
"\^@ |
|
* one |
|
* two |
|
* three |
|
\^?" |
|
t)) |
|
(should (ert-equal-buffer |
|
'(rst-straighten-bullets-region) |
|
"- one\^@ |
|
+ two\^?" |
|
"* one\^@ |
|
* two\^?" |
|
t)) |
|
(should (ert-equal-buffer |
|
'(rst-straighten-bullets-region) |
|
"+ zero |
|
\^@- one |
|
+ two |
|
* three\^? |
|
- four" |
|
"+ zero |
|
\^@* one |
|
* two |
|
* three\^? |
|
- four" |
|
t)) |
|
(should (ert-equal-buffer |
|
'(rst-straighten-bullets-region) |
|
"\^@ |
|
- one |
|
|
|
+ two |
|
|
|
* three |
|
\^?" |
|
"\^@ |
|
* one |
|
|
|
- two |
|
|
|
* three |
|
\^?" |
|
t)) |
|
(should (ert-equal-buffer |
|
'(rst-straighten-bullets-region) |
|
"\^@ |
|
- one |
|
|
|
- two |
|
|
|
* three |
|
\^?" |
|
"\^@ |
|
* one |
|
|
|
- two |
|
|
|
* three |
|
\^?" |
|
t)) |
|
(should (ert-equal-buffer |
|
'(rst-straighten-bullets-region) |
|
"\^@ |
|
+ one |
|
|
|
* two |
|
|
|
+ three |
|
\^?" |
|
"\^@ |
|
* one |
|
|
|
- two |
|
|
|
* three |
|
\^?" |
|
t)) |
|
) |
|
(let ((rst-preferred-bullets nil)) |
|
(should (ert-equal-buffer |
|
'(rst-straighten-bullets-region) |
|
"\^@ |
|
- one |
|
+ two |
|
* three |
|
\^?" |
|
"\^@ |
|
- one |
|
+ two |
|
* three |
|
\^?" |
|
t)) |
|
)) |
|
|
|
(ert-deftest rst-straighten-bullets-region-BUGS () |
|
"Tests `rst-straighten-bullets-region'." |
|
:expected-result :failed ;; These are bugs |
|
(let ((rst-preferred-bullets '(?* ?-))) |
|
(should (ert-equal-buffer |
|
'(rst-straighten-bullets-region) |
|
"\^@ |
|
- one |
|
+ two |
|
* three |
|
\^?" |
|
"\^@ |
|
* one |
|
- two |
|
* three |
|
\^?" |
|
t)) |
|
(should (ert-equal-buffer |
|
'(rst-straighten-bullets-region) |
|
"\^@ |
|
- one |
|
+ two |
|
* three |
|
\^?" |
|
"\^@ |
|
* one |
|
- two |
|
* three |
|
\^?" |
|
t)) |
|
(should (ert-equal-buffer |
|
'(rst-straighten-bullets-region) |
|
"\^@ |
|
+ one |
|
* two |
|
+ three |
|
\^?" |
|
"\^@ |
|
* one |
|
- two |
|
* three |
|
\^?" |
|
t)) |
|
)) |
|
|
|
(defun arabic-roman-roundtrip (arabic roman) |
|
"Convert ARABIC to roman, compare it to ROMAN and convert this back. |
|
Return t if roundtrip is correct." |
|
(let ((cvt-roman (rst-arabic-to-roman arabic)) |
|
(cvt-arabic (rst-roman-to-arabic roman))) |
|
(and (equal roman cvt-roman) (equal arabic cvt-arabic)))) |
|
|
|
(ert-deftest arabic-roman-roundtrip () |
|
"Test `rst-arabic-to-roman' and `rst-roman-to-arabic'." |
|
|
|
;; Test invalid arabic numbers. |
|
(should-error (arabic-roman-roundtrip -1 "I") |
|
:type 'wrong-type-argument) |
|
(should-error (arabic-roman-roundtrip 0 "I") |
|
:type 'wrong-type-argument) |
|
(should-error (arabic-roman-roundtrip nil "I") |
|
:type 'wrong-type-argument) |
|
|
|
;; Test invalid roman numbers. |
|
(should-error (arabic-roman-roundtrip 1 nil) |
|
:type 'wrong-type-argument) |
|
(should-error (arabic-roman-roundtrip 1 "NoRoman") |
|
:type 'wrong-type-argument) |
|
(should-error (arabic-roman-roundtrip 1 "") |
|
:type 'wrong-type-argument) |
|
|
|
;; Test values. |
|
(should (arabic-roman-roundtrip 1 "I")) |
|
(should (arabic-roman-roundtrip 4 "IV")) |
|
(should (arabic-roman-roundtrip 5 "V")) |
|
(should (arabic-roman-roundtrip 10 "X")) |
|
(should (arabic-roman-roundtrip 20 "XX")) |
|
(should (arabic-roman-roundtrip 1999 "MCMXCIX")) |
|
(should (arabic-roman-roundtrip 2000 "MM")) |
|
(should (arabic-roman-roundtrip 3333 "MMMCCCXXXIII")) |
|
(should (arabic-roman-roundtrip 444 "CDXLIV")) |
|
)
|
|
|