[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/popup 25e2e7f 043/184: Merge pull request #17 from uk-ar/f
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/popup 25e2e7f 043/184: Merge pull request #17 from uk-ar/feature |
Date: |
Wed, 6 Oct 2021 00:01:03 -0400 (EDT) |
branch: elpa/popup
commit 25e2e7fa848f866cc78b1608b0d726428c5b77a6
Merge: 6e467e2 7fda072
Author: yuuki arisawa <yuuki.ari@gmail.com>
Commit: yuuki arisawa <yuuki.ari@gmail.com>
Merge pull request #17 from uk-ar/feature
Port test from popup-interactive-test.el(10/20)
---
tests/popup-test.el | 245 ++++++++++++++++++++++++++++++++++++++++++++++++++--
1 file changed, 240 insertions(+), 5 deletions(-)
diff --git a/tests/popup-test.el b/tests/popup-test.el
index e51e01f..53ce80b 100644
--- a/tests/popup-test.el
+++ b/tests/popup-test.el
@@ -1,18 +1,253 @@
(require 'ert)
(require 'popup)
+;; for "every" function
+(require 'cl)
-(defmacro popup-test-with-common-setup (&rest body)
+(when (< (frame-width) (length "long long long long line"))
+ (set-frame-size (selected-frame) 80 35))
+
+(defmacro popup-test-with-create-popup (&rest body)
+ (declare (indent 0) (debug t))
+ `(let ((popup (popup-create (point) 10 10)))
+ (unwind-protect
+ (progn ,@body)
+ (when popup
+ (popup-delete popup)))
+ ))
+
+(defmacro popup-test-with-temp-buffer (&rest body)
(declare (indent 0) (debug t))
`(save-excursion
(with-temp-buffer
+ (switch-to-buffer (current-buffer))
+ (delete-other-windows)
(erase-buffer)
- (let ((popup (popup-create (point) 10 10)))
- ,@body
- (popup-delete popup)))))
+ ,@body
+ )))
+
+(defmacro popup-test-with-common-setup (&rest body)
+ (declare (indent 0) (debug t))
+ `(popup-test-with-temp-buffer
+ (popup-test-with-create-popup ,@body)))
+
+(defun popup-test-helper-get-overlays-buffer ()
+ "Create a new buffer called *text* containing the visible text
+of the current buffer, ie. it converts overlays containing text
+into real text. Return *text* buffer"
+ (interactive)
+ (let ((tb (get-buffer-create "*text*"))
+ (s (point-min))
+ (os (overlays-in (point-min) (point-max))))
+ (with-current-buffer tb
+ (erase-buffer))
+ (setq os (sort os (lambda (o1 o2)
+ (< (overlay-start o1)
+ (overlay-start o2)))))
+ (mapc (lambda (o)
+ (let ((bt (buffer-substring-no-properties s (overlay-start o)))
+ (b (overlay-get o 'before-string))
+ (text (or (overlay-get o 'display)
+ (buffer-substring-no-properties (overlay-start o)
(overlay-end o))))
+ (a (overlay-get o 'after-string))
+ (inv (overlay-get o 'invisible)))
+ (with-current-buffer tb
+ (insert bt)
+ (unless inv
+ (when b (insert b))
+ (insert text)
+ (when a (insert a))))
+ (setq s (overlay-end o))))
+ os)
+ (let ((x (buffer-substring-no-properties s (point-max))))
+ (with-current-buffer tb
+ (insert x)
+ tb))))
+(defun popup-test-helper-match-points (strings)
+ "Return list of start of first match"
+ (when (listp strings)
+ (let ((text (buffer-string)))
+ (mapcar
+ (lambda (content)
+ (let ((pos (string-match (regexp-quote content) text)))
+ (if (null pos) pos (1+ pos))))
+ strings))))
+
+(defun popup-test-helper-points-to-columns (points)
+ "Return list of colum"
+ (mapcar
+ (lambda (point)
+ (save-excursion (goto-char point) (current-column)))
+ points))
+
+(defun popup-test-helper-same-all-p (seq)
+ "Return first element if `eq' every element of SEQ.If not, return nil."
+ (reduce #'(lambda (x y) (if (eq x y) x nil)) seq))
+
+(defun popup-test-helper-input (key)
+ (push key unread-command-events))
+
+;; Test for helper method
+(ert-deftest popup-test-test-helper ()
+ (should (eq (popup-test-helper-same-all-p '(0 0 0)) 0))
+ (should (eq (popup-test-helper-same-all-p '(1 1 1)) 1))
+ (should (eq (popup-test-helper-same-all-p '(0 1 1)) nil))
+ )
+
+;; Test for popup-el
(ert-deftest popup-test-simple ()
(popup-test-with-common-setup
(popup-set-list popup '("foo" "bar" "baz"))
(popup-draw popup)
- (should (equal (popup-list popup) '("foo" "bar" "baz")))))
+ (should (equal (popup-list popup) '("foo" "bar" "baz")))
+ (with-current-buffer (popup-test-helper-get-overlays-buffer)
+ (let ((points (popup-test-helper-match-points '("foo" "bar" "baz"))))
+ (should (every #'identity points))
+ (should (equal (popup-test-helper-points-to-columns points) '(0 0 0)))
+ (should (eq (popup-test-helper-same-all-p
+ (popup-test-helper-points-to-columns points)) 0))))))
+
+(ert-deftest popup-test-delete ()
+ (popup-test-with-common-setup
+ (popup-delete popup)
+ (should-not (popup-live-p popup))))
+
+(ert-deftest popup-test-hide ()
+ (popup-test-with-common-setup
+ (popup-set-list popup '("foo" "bar" "baz"))
+ (popup-draw popup)
+ (popup-hide popup)
+ (should (equal (popup-list popup) '("foo" "bar" "baz")))
+ (with-current-buffer (popup-test-helper-get-overlays-buffer)
+ (should-not (every #'identity
+ (popup-test-helper-match-points '("foo" "bar"
"baz")))))
+ ))
+
+(ert-deftest popup-test-tip ()
+ (popup-test-with-temp-buffer
+ (popup-tip
+ "Start isearch on POPUP. This function is synchronized, meaning
+event loop waits for quiting of isearch.
+
+CURSOR-COLOR is a cursor color during isearch. The default value
+is `popup-isearch-cursor-color'.
+
+KEYMAP is a keymap which is used when processing events during
+event loop. The default value is `popup-isearch-keymap'.
+
+CALLBACK is a function taking one argument. `popup-isearch' calls
+CALLBACK, if specified, after isearch finished or isearch
+canceled. The arguments is whole filtered list of items.
+
+HELP-DELAY is a delay of displaying helps."
+ :nowait t)
+ (with-current-buffer (popup-test-helper-get-overlays-buffer)
+ (let ((points (popup-test-helper-match-points
+ '("CURSOR-COLOR is a cursor color during isearch"
+ "KEYMAP is a keymap"))))
+ (should (every #'identity points))
+ (should (eq (popup-test-helper-same-all-p
+ (popup-test-helper-points-to-columns points)) 0)))
+ )))
+
+(ert-deftest popup-test-culumn ()
+ (popup-test-with-temp-buffer
+ (insert " ")
+ (popup-test-with-create-popup
+ (popup-set-list popup '("foo" "bar" "baz"))
+ (popup-draw popup)
+ (should (equal (popup-list popup) '("foo" "bar" "baz")))
+ (with-current-buffer (popup-test-helper-get-overlays-buffer)
+ (let ((points (popup-test-helper-match-points '("foo" "bar" "baz"))))
+ (should (every #'identity points))
+ (should (equal (popup-test-helper-points-to-columns points)
+ '(1 1 1)))
+ )
+ ))))
+
+(ert-deftest popup-test-folding-long-line-right-top ()
+ (popup-test-with-temp-buffer
+ ;; To use window-width because Emacs 23 does not have window-body-width
+ (insert (make-string (- (window-width) 3) ? ))
+ (popup-tip "long long long long line" :nowait t)
+ (with-current-buffer (popup-test-helper-get-overlays-buffer)
+ (let ((points (popup-test-helper-match-points
+ '("long long long long line"))))
+ (should (every #'identity points))
+ (should (eq (line-number-at-pos (car points)) 2))
+ ))))
+
+(ert-deftest popup-test-folding-long-line-left-bottom ()
+ (popup-test-with-temp-buffer
+ (insert (make-string (- (window-body-height) 1) ?\n))
+ (popup-tip "long long long long line" :nowait t)
+ (with-current-buffer (popup-test-helper-get-overlays-buffer)
+ (let ((points (popup-test-helper-match-points
+ '("long long long long line"))))
+ (should (every #'identity points))
+ (should (eq (line-number-at-pos (car points))
+ (- (window-body-height) 1)))
+ ))))
+
+(ert-deftest popup-test-folding-long-line-right-bottom ()
+ (popup-test-with-temp-buffer
+ (insert (make-string (- (window-body-height) 1) ?\n))
+ (insert (make-string (- (window-width) 3) ? ))
+ (popup-tip "long long long long line" :nowait t)
+ (with-current-buffer (popup-test-helper-get-overlays-buffer)
+ (let ((points (popup-test-helper-match-points
+ '("long long long long line"))))
+ (should (every #'identity points))
+ (should (eq (line-number-at-pos (car points))
+ (- (window-body-height) 1))))
+ )))
+
+(ert-deftest popup-test-folding-short-line-right-top ()
+ (popup-test-with-temp-buffer
+ (insert (make-string (- (window-width) 3) ? ))
+ (popup-tip "bla\nbla\nbla\nbla\nbla" :nowait t)
+ (with-current-buffer (popup-test-helper-get-overlays-buffer)
+ (let ((points (popup-test-helper-match-points
+ '("bla"))))
+ (should (every #'identity points))
+ (should (eq (line-number-at-pos (car points)) 2))
+ ))))
+
+(ert-deftest popup-test-folding-short-line-left-bottom ()
+ (popup-test-with-temp-buffer
+ (insert (make-string (- (window-body-height) 1) ?\n))
+ (popup-tip "bla\nbla\nbla\nbla\nbla" :nowait t)
+ (with-current-buffer (popup-test-helper-get-overlays-buffer)
+ (let ((points (popup-test-helper-match-points
+ '("bla"))))
+ (should (every #'identity points))
+ (should (eq (popup-test-helper-same-all-p
+ (popup-test-helper-points-to-columns points)) 0))
+ (should (eq (line-number-at-pos (car points))
+ (- (window-body-height) 5)))
+ ))))
+
+(ert-deftest popup-test-folding-short-line-right-bottom ()
+ (popup-test-with-temp-buffer
+ (insert (make-string (- (window-body-height) 1) ?\n))
+ (insert (make-string (- (window-width) 3) ? ))
+ (popup-tip "bla\nbla\nbla\nbla\nbla" :nowait t)
+ (with-current-buffer (popup-test-helper-get-overlays-buffer)
+ (let ((points (popup-test-helper-match-points
+ '("bla"))))
+ (should (every #'identity points))
+ (should (eq (line-number-at-pos (car points))
+ (- (window-body-height) 5))))
+ )))
+
+(ert-deftest popup-test-margin-at-middle ()
+ (popup-test-with-temp-buffer
+ (insert " ")
+ (let ((popup (popup-tip "Margin?" :nowait t :margin t)))
+ (with-current-buffer (popup-test-helper-get-overlays-buffer)
+ (let ((points (popup-test-helper-match-points '(" Margin? "))))
+ (should (every #'identity points))
+ (should (equal (car (popup-test-helper-points-to-columns points))
+ 0))
+ )))))
- [nongnu] elpa/popup 9814c88 038/184: Add test for test helper, (continued)
- [nongnu] elpa/popup 9814c88 038/184: Add test for test helper, ELPA Syncer, 2021/10/06
- [nongnu] elpa/popup 581f35b 062/184: Define popup-menu-summary-face, ELPA Syncer, 2021/10/06
- [nongnu] elpa/popup 4e19acb 036/184: Remove dependency on auto-complete, ELPA Syncer, 2021/10/06
- [nongnu] elpa/popup bec50cc 076/184: Merge pull request #41 from kostafey/master, ELPA Syncer, 2021/10/06
- [nongnu] elpa/popup 4e8824e 051/184: Add some make rules for test., ELPA Syncer, 2021/10/06
- [nongnu] elpa/popup f2fc154 058/184: Add summary-face keyword argument to popup-create-line-string, ELPA Syncer, 2021/10/06
- [nongnu] elpa/popup b45aa2d 060/184: Handle summary-face in popup-draw, ELPA Syncer, 2021/10/06
- [nongnu] elpa/popup e645eae 049/184: Add test case:popup-scroll-down, popup-scroll-up, ELPA Syncer, 2021/10/06
- [nongnu] elpa/popup ee5b4b0 034/184: Add test case when point is on the corner, ELPA Syncer, 2021/10/06
- [nongnu] elpa/popup 1d692e4 066/184: Replace helper functions for some tests., ELPA Syncer, 2021/10/06
- [nongnu] elpa/popup 25e2e7f 043/184: Merge pull request #17 from uk-ar/feature,
ELPA Syncer <=
- [nongnu] elpa/popup 9dcce09 024/184: Merge branch 'master' of github.com:auto-complete/popup-el, ELPA Syncer, 2021/10/06
- [nongnu] elpa/popup e995ffa 030/184: Add check for columns of starting points., ELPA Syncer, 2021/10/06
- [nongnu] elpa/popup 8d7e57e 065/184: Replace popup-test-with-create-popup to popup-create, ELPA Syncer, 2021/10/06
- [nongnu] elpa/popup 357f037 045/184: Add test case:popup-tip(height), ELPA Syncer, 2021/10/06
- [nongnu] elpa/popup b8c1cb4 054/184: At least one space before summary, if possible, ELPA Syncer, 2021/10/06
- [nongnu] elpa/popup 7533efe 078/184: Merge pull request #53 from auto-complete/fix-travis, ELPA Syncer, 2021/10/06
- [nongnu] elpa/popup 64102c2 046/184: Add test case:popup-tip(scroll-bar, min-height), ELPA Syncer, 2021/10/06
- [nongnu] elpa/popup 487c0a8 109/184: add :initial-index parameter test, ELPA Syncer, 2021/10/06
- [nongnu] elpa/popup 8719cd9 105/184: Merge pull request #71 from auto-complete/use-cask, ELPA Syncer, 2021/10/06
- [nongnu] elpa/popup 1510820 100/184: activate isearch in cascade menu, ELPA Syncer, 2021/10/06