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.
640 lines
10 KiB
640 lines
10 KiB
7 years ago
|
;; 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"))
|
||
|
)
|