branch: externals/hyperbole
commit 7b50db7eb0944a8b6a76e2beffa9a2e352a02d58
Author: Mats Lidell <[email protected]>
Commit: GitHub <[email protected]>
Matsl rsw forward backward same level tests (#443)
---
ChangeLog | 8 ++++++
test/hyrolo-tests.el | 79 +++++++++++++++++++++++++++++++++++++++++++++++++++-
2 files changed, 86 insertions(+), 1 deletion(-)
diff --git a/ChangeLog b/ChangeLog
index 5f8290e22d..61f4713b19 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2024-01-15 Mats Lidell <[email protected]>
+
+* test/hyrolo-tests.el (hyrolo-tests--forward-same-level-all-file-types-level1)
+ (hyrolo-tests--forward-same-level-org-level2): Add tests for hyrolo
+ forward and backward movement on same level.
+
2024-01-14 Bob Weiner <[email protected]>
* hypb.el (require 'org): Add to define 'org-show-all'. Fix typo
@@ -130,6 +136,8 @@
fboundp or not before trying to enable it (should be autoloaded when
it exists, probably in Emacs 28 or greater).
+2024-01-09 Bob Weiner <[email protected]>
+
* hsys-xref.el: Add forgotten file.
2024-01-09 Mats Lidell <[email protected]>
diff --git a/test/hyrolo-tests.el b/test/hyrolo-tests.el
index 4ede38fa42..3c4ae188d1 100644
--- a/test/hyrolo-tests.el
+++ b/test/hyrolo-tests.el
@@ -3,7 +3,7 @@
;; Author: Mats Lidell <[email protected]>
;;
;; Orig-Date: 19-Jun-21 at 22:42:00
-;; Last-Mod: 13-Jan-24 at 20:05:16 by Bob Weiner
+;; Last-Mod: 15-Jan-24 at 00:38:13 by Mats Lidell
;;
;; SPDX-License-Identifier: GPL-3.0-or-later
;;
@@ -903,5 +903,82 @@ Make cell start with HEADING and follow by next line BODY."
(kill-buffer hyrolo-display-buffer)
(hy-delete-files-and-buffers hyrolo-file-list))))
+(ert-deftest hyrolo-tests--forward-same-level-all-file-types-level1 ()
+ "Verify forward and backward to first level headers and section lines.
+All files types are present."
+ :expected-result :failed
+ (let* ((org-file1 (make-temp-file "hypb" nil ".org"
+ (hyrolo-tests--gen-outline ?*
"heading-org" 1 "body-org" 1)))
+ (md-file1 (make-temp-file "hypb" nil ".md"
+ (hyrolo-tests--gen-outline ?# "heading-md"
1 "body-md" 1)))
+ (otl-file1 (make-temp-file "hypb" nil ".otl"
+ (hyrolo-tests--gen-outline ?*
"heading-otl" 1 "body-otl" 1)))
+ (kotl-file1 (hyrolo-tests--gen-kotl-outline "heading-kotl"
"body-kotl"))
+ (hyrolo-file-list (list org-file1 md-file1 otl-file1 kotl-file1)))
+ (unwind-protect
+ (progn
+ (hyrolo-grep "body")
+ (should (string= hyrolo-display-buffer (buffer-name)))
+
+ ;; Move forward
+ (dolist (v '("===" "^\\* heading-org 1$" "===" "^# heading-md 1$"
+ "===" "^\\* heading-otl 1$" "===" "^ +1\\.
heading-kotl$"))
+ (should (and (looking-at-p v) (hact 'kbd-key "f"))))
+ (should (looking-at-p "^ +1\\. heading-kotl$")) ; When on last match
do not move further
+
+ ;; Move backward
+ (dolist (v '("===" "^\\* heading-otl 1$" "===" "^# heading-md 1$"
+ "===" "^\\* heading-org 1$" "==="))
+ (should (and (hact 'kbd-key "b") (looking-at-p v))))
+ (should (= 1 (line-number-at-pos))))
+ (kill-buffer hyrolo-display-buffer)
+ (hy-delete-files-and-buffers hyrolo-file-list))))
+
+(ert-deftest hyrolo-tests--forward-same-level-org-level2 ()
+ "Verify forward and backward to second level headers with org files."
+ (let* ((content
+ "\
+* h-org 1
+body
+** h-org 1.1
+body
+** h-org 1.2
+body
+*** h-org 1.2.1
+body
+* h-org 2
+body
+** h-org-2.1
+body
+")
+ (org-file1 (make-temp-file "hypb" nil ".org" content))
+ (org-file2 (make-temp-file "hypb" nil ".org" content))
+ (hyrolo-file-list (list org-file1 org-file2)))
+ (unwind-protect
+ (progn
+ (hyrolo-grep "body")
+ (should (string= hyrolo-display-buffer (buffer-name)))
+
+ ;; Move to first second level header
+ (search-forward "** h-org 1.1")
+ (beginning-of-line)
+ (should (looking-at-p "^\\*\\* h-org 1\\.1"))
+
+ ;; Move forward same level
+ (should (and (hact 'kbd-key "f") (looking-at-p "^\\*\\* h-org
1\\.2")))
+
+ ;; Multiple times does not move point when there are no more headers
at the same level
+ (should (and (hact 'kbd-key "f") (looking-at-p "^\\*\\* h-org
1\\.2")))
+ (should (and (hact 'kbd-key "f") (looking-at-p "^\\*\\* h-org
1\\.2")))
+
+ ;; Move back on same level
+ (should (and (hact 'kbd-key "b") (looking-at-p "\\*\\* h-org
1\\.1")))
+
+ ;; Moving up from first header on a level errors, also when repeated.
+ (should-error (and (hact 'kbd-key "b") (looking-at-p "^\\*\\* h-org
1\\.1")))
+ (should-error (and (hact 'kbd-key "b") (looking-at-p "^\\*\\* h-org
1\\.1"))))
+ (kill-buffer hyrolo-display-buffer)
+ (hy-delete-files-and-buffers hyrolo-file-list))))
+
(provide 'hyrolo-tests)
;;; hyrolo-tests.el ends here