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.

279 lines
5.5 KiB

;; Tests for `rst-all-stn' and relatives -*- lexical-binding: t -*-
(add-to-list 'load-path ".")
(load "init" nil t)
(init-rst-ert t)
(ert-deftest toc-asserts ()
"Check some assertions."
(should (equal ert-Buf-point-char "\^@"))
(should (equal ert-Buf-mark-char "\^?"))
)
(ert-deftest rst-all-stn ()
"Tests `rst-all-stn'."
(let* ((title "=====
Title
=====
")
(headers "Header A
========
Header B
========
Subheader B.a
-------------
SubSubheader B.a.1
~~~~~~~~~~~~~~~~~~
Header C
========
Missing node C.a.1
~~~~~~~~~~~~~~~~~~
")
(ado-T (rst-Ado-new-over-and-under ?=))
(ttl-T (rst-Ttl--new ado-T '(1 18 1 6 7 12 13 18) 0
"Title"))
(ado-A (rst-Ado-new-simple ?=))
(ttl-A (rst-Ttl--new ado-A '(20 37 nil nil 20 28 29 37) 0
"Header A"))
(ttl-B (rst-Ttl--new ado-A '(39 56 nil nil 39 47 48 56) 0
"Header B"))
(ado-Ba (rst-Ado-new-simple ?-))
(ttl-Ba (rst-Ttl--new ado-Ba '(58 85 nil nil 58 71 72 85) 0
"Subheader B.a"))
(ado-Ba1 (rst-Ado-new-simple ?~))
(ttl-Ba1 (rst-Ttl--new ado-Ba1 '(87 124 nil nil 87 105 106 124) 0
"SubSubheader B.a.1"))
(ttl-C (rst-Ttl--new ado-A '(126 143 nil nil 126 134 135 143) 0
"Header C"))
(ttl-Ca nil)
(ttl-Ca1 (rst-Ttl--new ado-Ba1 '(145 182 nil nil 145 163 164 182) 0
"Missing node C.a.1")))
(let* ((stn-Ca (rst-Stn-new
ttl-Ca 2
(list (rst-Stn-new ttl-Ca1 3 nil))))
(stn-C (rst-Stn-new
ttl-C 1
(list stn-Ca)))
(stn-A (rst-Stn-new ttl-A 1 nil))
(stn-B (rst-Stn-new
ttl-B 1
(list (rst-Stn-new
ttl-Ba 2
(list (rst-Stn-new ttl-Ba1 3 nil))))))
(stn-T (rst-Stn-new
ttl-T 0
(list stn-A
stn-B
stn-C))))
(should (ert-equal-buffer-return
'(rst-all-stn)
""
t
nil
))
(should (ert-equal-buffer-return
'(rst-all-stn)
title
t
(rst-Stn-new
nil -1
(list (rst-Stn-new ttl-T 0 nil)))
))
(should (ert-equal-buffer-return
'(rst-all-stn)
(concat title headers)
t
(rst-Stn-new
nil -1
(list stn-T))
))
)))
(ert-deftest rst-stn-containing-point ()
"Tests `rst-stn-containing-point'."
(let* (;; "
;; =====
;; Title
;; =====
;;
;; Header A
;; ========
;;
;; Header B
;; ========
;;
;; Subheader B.a
;; -------------
;;
;; SubSubheader B.a.1
;; ~~~~~~~~~~~~~~~~~~
;;
;; Subheader B.b
;; -------------
;;
;; Header C
;; ========
;;
;; Missing node C.a.1
;; ~~~~~~~~~~~~~~~~~~
;; "
(title "=====
Title
=====
")
(ado-T (rst-Ado-new-over-and-under ?=))
(ttl-T (rst-Ttl--new ado-T '(1 18 1 6 7 12 13 18) 0
"Title"))
(ado-A (rst-Ado-new-simple ?=))
(ttl-A (rst-Ttl--new ado-A '(20 37 nil nil 20 28 29 37) 0
"Header A"))
(ttl-B (rst-Ttl--new ado-A '(39 56 nil nil 39 47 48 56) 0
"Header B"))
(ado-Ba (rst-Ado-new-simple ?-))
(ttl-Ba (rst-Ttl--new ado-Ba '(58 85 nil nil 58 71 72 85) 0
"Subheader B.a"))
(ado-Ba1 (rst-Ado-new-simple ?~))
(ttl-Ba1 (rst-Ttl--new ado-Ba1 '(87 124 nil nil 87 105 106 124) 0
"SubSubheader B.a.1"))
(ttl-Bb (rst-Ttl--new ado-Ba '(126 153 nil nil 126 139 140 153) 0
"Subheader B.b"))
(ttl-C (rst-Ttl--new ado-A '(155 172 nil nil 155 163 164 172) 0
"Header C"))
(ttl-Ca nil)
(ttl-Ca1 (rst-Ttl--new ado-Ba1 '(164 211 nil nil 164 192 193 211) 0
"Missing node C.a.1")))
(let* ((stn-Ca (rst-Stn-new
ttl-Ca 2
(list (rst-Stn-new ttl-Ca1 3 nil))))
(stn-C (rst-Stn-new
ttl-C 1
(list stn-Ca)))
(stn-A (rst-Stn-new ttl-A 1 nil))
(stn-Ba (rst-Stn-new
ttl-Ba 2
(list (rst-Stn-new ttl-Ba1 3 nil))))
(stn-Bb (rst-Stn-new ttl-Bb 2 nil))
(stn-B (rst-Stn-new
ttl-B 1
(list stn-Ba
stn-Bb)))
(stn-T (rst-Stn-new
ttl-T 0
(list stn-A
stn-B
stn-C))))
(should (ert-equal-buffer-return
'(rst-stn-containing-point (rst-all-stn))
"\^@"
t
nil
))
(should (ert-equal-buffer-return
'(rst-stn-containing-point (rst-all-stn))
(concat "\^@" title)
t
nil
))
(should (ert-equal-buffer-return
'(rst-stn-containing-point (rst-all-stn))
(concat title "\^@")
t
(rst-Stn-new ttl-T 0 nil)
))
(should (ert-equal-buffer-return
'(rst-stn-containing-point (rst-all-stn))
(concat title "\^@Header A
========
Header B
========
Subheader B.a
-------------
SubSubheader B.a.1
~~~~~~~~~~~~~~~~~~
Subheader B.b
-------------
Header C
========")
t
stn-A
))
(should (ert-equal-buffer-return
'(rst-stn-containing-point (rst-all-stn))
(concat title "Header A
========
Header B
========
\^@
Subheader B.a
-------------
SubSubheader B.a.1
~~~~~~~~~~~~~~~~~~
Subheader B.b
-------------
Header C
========")
t
stn-B
))
(should (ert-equal-buffer-return
'(rst-stn-containing-point (rst-all-stn))
(concat title "Header A
========
Header B
========
Subheader B.a\^@
-------------
SubSubheader B.a.1
~~~~~~~~~~~~~~~~~~
Subheader B.b
-------------
Header C
========")
t
stn-Ba
))
(should (ert-equal-buffer-return
'(rst-stn-containing-point (rst-all-stn))
(concat title "Header A
========
Header B
========
Subheader B.a
-------------
SubSubheader B.a.1
~~~~~~~~~~~~~~~~~~
S\^@ubheader B.b
-------------
Header C
========")
t
stn-Bb
))
)))