diff options
author | Eli Zaretskii <eliz@gnu.org> | 2016-09-24 13:20:19 +0300 |
---|---|---|
committer | Eli Zaretskii <eliz@gnu.org> | 2016-09-24 13:20:19 +0300 |
commit | 7f287b7f780849ca32cddaf69dac83a435f92300 (patch) | |
tree | b786de65a234622dc33add0ee7fbe05c4a80b7bd /test/lisp/emacs-lisp | |
parent | 25d66a430e45b4df1d8bb8c8e559f86dcdbcb4c3 (diff) | |
download | emacs-7f287b7f780849ca32cddaf69dac83a435f92300.tar.gz emacs-7f287b7f780849ca32cddaf69dac83a435f92300.tar.bz2 emacs-7f287b7f780849ca32cddaf69dac83a435f92300.zip |
Incorporate syntax-tests in lisp-tests.
* test/lisp/emacs-lisp/lisp-tests.el: Add tests from
test/lisp/legacy/syntax-tests.el.
* test/lisp/legacy/syntax-tests.el: File deleted.
Diffstat (limited to 'test/lisp/emacs-lisp')
-rw-r--r-- | test/lisp/emacs-lisp/lisp-tests.el | 71 |
1 files changed, 69 insertions, 2 deletions
diff --git a/test/lisp/emacs-lisp/lisp-tests.el b/test/lisp/emacs-lisp/lisp-tests.el index d83f4a052cb..2dadae95536 100644 --- a/test/lisp/emacs-lisp/lisp-tests.el +++ b/test/lisp/emacs-lisp/lisp-tests.el @@ -4,6 +4,7 @@ ;; Author: Aaron S. Hawley <aaron.s.hawley@gmail.com> ;; Author: Stefan Monnier <monnier@iro.umontreal.ca> +;; Author: Daniel Colascione <dancol@dancol.org> ;; Keywords: internal ;; GNU Emacs is free software: you can redistribute it and/or modify @@ -27,6 +28,7 @@ (require 'ert) (require 'python) +(require 'cl-lib) (ert-deftest lisp-forward-sexp-1-empty-parens () "Test basics of \\[forward-sexp]." @@ -233,8 +235,73 @@ (ert-deftest core-elisp-tests-3-backquote () (should (eq 3 (eval ``,,'(+ 1 2))))) -(provide 'core-elisp-tests) -;;; core-elisp-tests.el ends here +;; Test up-list and backward-up-list. +(defun lisp-run-up-list-test (fn data start instructions) + (cl-labels ((posof (thing) + (and (symbolp thing) + (= (length (symbol-name thing)) 1) + (- (aref (symbol-name thing) 0) ?a -1)))) + (with-temp-buffer + (set-syntax-table (make-syntax-table)) + ;; Use a syntax table in which single quote is a string + ;; character so that we can embed the test data in a lisp string + ;; literal. + (modify-syntax-entry ?\' "\"") + (insert data) + (goto-char (posof start)) + (dolist (instruction instructions) + (cond ((posof instruction) + (funcall fn) + (should (eql (point) (posof instruction)))) + ((symbolp instruction) + (should-error (funcall fn) + :type instruction)) + (t (cl-assert nil nil "unknown ins"))))))) + +(defmacro define-lisp-up-list-test (name fn data start &rest expected) + `(ert-deftest ,name () + (lisp-run-up-list-test ,fn ,data ',start ',expected))) + +(define-lisp-up-list-test up-list-basic + (lambda () (up-list)) + (or "(1 1 (1 1) 1 (1 1) 1)") + ;; abcdefghijklmnopqrstuv + i k v scan-error) + +(define-lisp-up-list-test up-list-with-forward-sexp-function + (lambda () + (let ((forward-sexp-function + (lambda (&optional arg) + (let ((forward-sexp-function nil)) + (forward-sexp arg))))) + (up-list))) + (or "(1 1 (1 1) 1 (1 1) 1)") + ;; abcdefghijklmnopqrstuv + i k v scan-error) + +(define-lisp-up-list-test up-list-out-of-string + (lambda () (up-list 1 t)) + (or "1 (1 '2 2 (2 2 2' 1) 1") + ;; abcdefghijklmnopqrstuvwxy + o r u scan-error) + +(define-lisp-up-list-test up-list-cross-string + (lambda () (up-list 1 t)) + (or "(1 '2 ( 2' 1 '2 ) 2' 1)") + ;; abcdefghijklmnopqrstuvwxy + i r u x scan-error) + +(define-lisp-up-list-test up-list-no-cross-string + (lambda () (up-list 1 t t)) + (or "(1 '2 ( 2' 1 '2 ) 2' 1)") + ;; abcdefghijklmnopqrstuvwxy + i k x scan-error) + +(define-lisp-up-list-test backward-up-list-basic + (lambda () (backward-up-list)) + (or "(1 1 (1 1) 1 (1 1) 1)") + ;; abcdefghijklmnopqrstuv + i f a scan-error) (provide 'lisp-tests) ;;; lisp-tests.el ends here |