summaryrefslogtreecommitdiff
path: root/test/lisp/emacs-lisp
diff options
context:
space:
mode:
authorMattias EngdegÄrd <mattiase@acm.org>2019-01-16 14:57:12 +0100
committerEli Zaretskii <eliz@gnu.org>2019-02-01 11:39:43 +0200
commitdecdff76fb185f87145940cc3b91549f84600a87 (patch)
treecc3bc3fd672616f1880472c066bee367450e072d /test/lisp/emacs-lisp
parentb01a4295c2f9bb58858880e4e28b05cc8396791c (diff)
downloademacs-decdff76fb185f87145940cc3b91549f84600a87.tar.gz
emacs-decdff76fb185f87145940cc3b91549f84600a87.tar.bz2
emacs-decdff76fb185f87145940cc3b91549f84600a87.zip
Make the rx operators \? and \?? behave correctly
* lisp/emacs-lisp/rx.el (rx-kleene): Treat \? and \?? like ? and ?? (Bug#34100). * test/lisp/emacs-lisp/rx-tests.el: Add tests for all repetition operators.
Diffstat (limited to 'test/lisp/emacs-lisp')
-rw-r--r--test/lisp/emacs-lisp/rx-tests.el23
1 files changed, 23 insertions, 0 deletions
diff --git a/test/lisp/emacs-lisp/rx-tests.el b/test/lisp/emacs-lisp/rx-tests.el
index 392a38ab95b..f15e1016f7c 100644
--- a/test/lisp/emacs-lisp/rx-tests.el
+++ b/test/lisp/emacs-lisp/rx-tests.el
@@ -65,5 +65,28 @@
(list u v)))
'("1" "3"))))
+(ert-deftest rx-kleene ()
+ "Test greedy and non-greedy repetition operators."
+ (should (equal (rx (* "a") (+ "b") (\? "c") (?\s "d")
+ (*? "e") (+? "f") (\?? "g") (?? "h"))
+ "a*b+c?d?e*?f+?g??h??"))
+ (should (equal (rx (zero-or-more "a") (0+ "b")
+ (one-or-more "c") (1+ "d")
+ (zero-or-one "e") (optional "f") (opt "g"))
+ "a*b*c+d+e?f?g?"))
+ (should (equal (rx (minimal-match
+ (seq (* "a") (+ "b") (\? "c") (?\s "d")
+ (*? "e") (+? "f") (\?? "g") (?? "h"))))
+ "a*b+c?d?e*?f+?g??h??"))
+ (should (equal (rx (minimal-match
+ (seq (zero-or-more "a") (0+ "b")
+ (one-or-more "c") (1+ "d")
+ (zero-or-one "e") (optional "f") (opt "g"))))
+ "a*?b*?c+?d+?e??f??g??"))
+ (should (equal (rx (maximal-match
+ (seq (* "a") (+ "b") (\? "c") (?\s "d")
+ (*? "e") (+? "f") (\?? "g") (?? "h"))))
+ "a*b+c?d?e*?f+?g??h??")))
+
(provide 'rx-tests)
;; rx-tests.el ends here.