;; With arguments.
(should
(org-test-with-temp-text "{{{macro(arg1,arg2)}}}"
- (org-element-map (org-element-parse-buffer) 'macro 'identity))))
+ (org-element-map (org-element-parse-buffer) 'macro 'identity)))
+ ;; Properly handle protected commas in arguments...
+ (should
+ (= 2
+ (length
+ (org-test-with-temp-text "{{{macro(arg1\\,arg1,arg2)}}}"
+ (org-element-property :args (org-element-context))))))
+ ;; ... even when last argument ends with a protected comma.
+ (should
+ (equal '("C-,")
+ (org-test-with-temp-text "{{{macro(C-\\,)}}}"
+ (org-element-property :args (org-element-context))))))
+;;;; Node Property
+
+(ert-deftest test-org-element/node-property ()
+ "Test `node-property' parser."
+ ;; Standard test.
+ (should
+ (equal '("abc" "value")
+ (org-test-with-temp-text ":PROPERTIES:\n:abc: value\n:END:"
+ (progn (forward-line)
+ (let ((element (org-element-at-point)))
+ (list (org-element-property :key element)
+ (org-element-property :value element)))))))
+ ;; Value should be trimmed.
+ (should
+ (equal "value"
+ (org-test-with-temp-text ":PROPERTIES:\n:abc: value \n:END:"
+ (progn (forward-line)
+ (let ((element (org-element-at-point)))
+ (org-element-property :value element))))))
+ ;; A node property requires to be wrapped within a property drawer.
+ (should-not
+ (eq 'node-property
+ (org-test-with-temp-text ":abc: value"
+ (org-element-type (org-element-at-point))))))
+
+
;;;; Paragraph
(ert-deftest test-org-element/paragraph-parser ()