summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarco Wahl <marcowahlsoft@gmail.com>2017-01-17 22:59:48 +0100
committerMarco Wahl <marcowahlsoft@gmail.com>2017-01-17 23:06:56 +0100
commit69b22b6590357ab0bdd8a90793b2322d4a789bbd (patch)
tree13ba02cc594b908e6edefcb873bf2e482fd335a6
parent738d3b4def3e857f4d4b2ca94c11cf1f01c840ca (diff)
downloadorg-mode-69b22b6590357ab0bdd8a90793b2322d4a789bbd.tar.gz
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.
-rw-r--r--lisp/org.el11
-rw-r--r--testing/lisp/test-org.el29
2 files changed, 35 insertions, 5 deletions
diff --git a/lisp/org.el b/lisp/org.el
index 2a38040..c8efe24 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -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)))))
diff --git a/testing/lisp/test-org.el b/testing/lisp/test-org.el
index 014b68a..1de9bf0 100644
--- a/testing/lisp/test-org.el
+++ b/testing/lisp/test-org.el
@@ -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