org: Improved consistency + tests

* lisp/org.el (org-get-valid-level): The function now returns 1 for
  parameters level=0, change=1 and `org-odd-levels-only'=t.  Before
  it returned 3.
This commit is contained in:
Marco Wahl 2017-01-17 22:59:48 +01:00
parent 738d3b4def
commit 69b22b6590
2 changed files with 35 additions and 5 deletions

View File

@ -8262,13 +8262,14 @@ time to headlines when structure editing, based on the value of
(if org-odd-levels-only 2 1))
(defun org-get-valid-level (level &optional change)
"Rectify a level change under the influence of `org-odd-levels-only'
LEVEL is a current level, CHANGE is by how much the level should be
modified. Even if CHANGE is nil, LEVEL may be returned modified because
even level numbers will become the next higher odd number."
"Rectify a level change under the influence of `org-odd-levels-only'.
LEVEL is a current level, CHANGE is by how much the level should
be modified. Even if CHANGE is nil, LEVEL may be returned
modified because even level numbers will become the next higher
odd number. Returns values greater than 0."
(if org-odd-levels-only
(cond ((or (not change) (= 0 change)) (1+ (* 2 (/ level 2))))
((> change 0) (1+ (* 2 (/ (+ level (* 2 change)) 2))))
((> change 0) (1+ (* 2 (/ (+ (1- level) (* 2 change)) 2))))
((< change 0) (max 1 (1+ (* 2 (/ (+ level (* 2 change)) 2))))))
(max 1 (+ level (or change 0)))))

View File

@ -3786,6 +3786,35 @@ Text.
(forward-line)
(org-get-indentation)))))
(ert-deftest test-org/org-get-valid-level ()
"Test function `org-get-valid-level' specifications."
(let ((org-odd-levels-only nil))
(should (equal 1 (org-get-valid-level 0 0)))
(should (equal 1 (org-get-valid-level 0 1)))
(should (equal 2 (org-get-valid-level 0 2)))
(should (equal 3 (org-get-valid-level 0 3)))
(should (equal 1 (org-get-valid-level 1 0)))
(should (equal 2 (org-get-valid-level 1 1)))
(should (equal 23 (org-get-valid-level 1 22)))
(should (equal 1 (org-get-valid-level 1 -1)))
(should (equal 1 (org-get-valid-level 2 -1))))
(let ((org-odd-levels-only t))
(should (equal 1 (org-get-valid-level 0 0)))
(should (equal 1 (org-get-valid-level 0 1)))
(should (equal 3 (org-get-valid-level 0 2)))
(should (equal 5 (org-get-valid-level 0 3)))
(should (equal 1 (org-get-valid-level 1 0)))
(should (equal 3 (org-get-valid-level 1 1)))
(should (equal 3 (org-get-valid-level 2 1)))
(should (equal 5 (org-get-valid-level 3 1)))
(should (equal 5 (org-get-valid-level 4 1)))
(should (equal 43 (org-get-valid-level 1 21)))
(should (equal 1 (org-get-valid-level 1 -1)))
(should (equal 1 (org-get-valid-level 2 -1)))
(should (equal 1 (org-get-valid-level 3 -1)))
(should (equal 3 (org-get-valid-level 4 -1)))
(should (equal 3 (org-get-valid-level 5 -1)))))
;;; Planning