diff options
| author | Grégoire Jadi | 2013-07-18 14:12:04 +0200 |
|---|---|---|
| committer | Grégoire Jadi | 2013-07-18 14:12:04 +0200 |
| commit | b5b5d72916a5fb0ac8be0e0c6e2c7521982735a9 (patch) | |
| tree | d50894b0c8ea83342e0898f17d922ca14419a987 /test | |
| parent | 1eea231d3ebcc2801fe1a8459e60fdb687631ba9 (diff) | |
| download | emacs-b5b5d72916a5fb0ac8be0e0c6e2c7521982735a9.tar.gz emacs-b5b5d72916a5fb0ac8be0e0c6e2c7521982735a9.zip | |
* test/automated/test-xwidget.el: Add XWidget test suites.
Diffstat (limited to 'test')
| -rw-r--r-- | test/automated/xwidget-tests.el | 122 |
1 files changed, 122 insertions, 0 deletions
diff --git a/test/automated/xwidget-tests.el b/test/automated/xwidget-tests.el new file mode 100644 index 00000000000..104daa3fc0f --- /dev/null +++ b/test/automated/xwidget-tests.el | |||
| @@ -0,0 +1,122 @@ | |||
| 1 | ;; -*- lexical-binding: t; -*- | ||
| 2 | |||
| 3 | (require 'cl) | ||
| 4 | (require 'xwidget) | ||
| 5 | (require 'xwidget-test) | ||
| 6 | (require 'parallel) | ||
| 7 | |||
| 8 | (defvar xwidget-parallel-config (list :emacs-path (expand-file-name | ||
| 9 | "~/packages/xwidget-build/src/emacs"))) | ||
| 10 | |||
| 11 | (defmacro xwidget-deftest (name types &rest body) | ||
| 12 | (declare (indent defun)) | ||
| 13 | (if (null types) | ||
| 14 | `(ert-deftest ,(intern (format "%s" name)) () | ||
| 15 | (let ((parallel-config xwidget-parallel-config)) | ||
| 16 | ,@body)) | ||
| 17 | `(progn | ||
| 18 | ,@(loop for type in types | ||
| 19 | collect | ||
| 20 | `(ert-deftest ,(intern (format "%s-%s" name type)) () | ||
| 21 | (let ((parallel-config xwidget-parallel-config) | ||
| 22 | (type ',type) | ||
| 23 | (title ,(symbol-name type))) | ||
| 24 | ,@body)))))) | ||
| 25 | |||
| 26 | (xwidget-deftest xwidget-make-xwidget (Button ToggleButton slider socket cairo) | ||
| 27 | (let* ((beg 1) | ||
| 28 | (end 1) | ||
| 29 | (width 100) | ||
| 30 | (height 100) | ||
| 31 | (data nil) | ||
| 32 | (proc (parallel-start | ||
| 33 | (lambda (beg end type title width height data) | ||
| 34 | (require 'xwidget) | ||
| 35 | (require 'cl) | ||
| 36 | (with-temp-buffer | ||
| 37 | (insert ?\0) | ||
| 38 | (let* ((buffer (current-buffer)) | ||
| 39 | (xwidget (make-xwidget beg end type title width height data buffer))) | ||
| 40 | (set-xwidget-query-on-exit-flag xwidget nil) | ||
| 41 | (parallel-send (coerce (xwidget-info xwidget) 'list)) | ||
| 42 | (parallel-send (buffer-name buffer)) | ||
| 43 | (buffer-name (xwidget-buffer xwidget))))) | ||
| 44 | :env (list beg end type title width height data))) | ||
| 45 | (results (parallel-get-results proc))) | ||
| 46 | (should (parallel-success-p proc)) | ||
| 47 | (when (parallel-success-p proc) | ||
| 48 | (destructuring-bind (xwidget-buffer temp-buffer xwidget-info) | ||
| 49 | results | ||
| 50 | (should (equal (list type title width height) | ||
| 51 | xwidget-info)) | ||
| 52 | (should (equal temp-buffer xwidget-buffer)))))) | ||
| 53 | |||
| 54 | (xwidget-deftest xwidget-query-on-exit-flag () | ||
| 55 | (should (equal '(nil t) | ||
| 56 | (parallel-get-results | ||
| 57 | (parallel-start (lambda () | ||
| 58 | (require 'xwidget) | ||
| 59 | (let ((xwidget (make-xwidget 1 1 'Button "Button" 100 100 nil))) | ||
| 60 | (parallel-send (xwidget-query-on-exit-flag xwidget)) | ||
| 61 | (set-xwidget-query-on-exit-flag xwidget nil) | ||
| 62 | (xwidget-query-on-exit-flag xwidget)))))))) | ||
| 63 | |||
| 64 | (xwidget-deftest xwidget-query-on-exit-flag (Button ToggleButton slider socket cairo) | ||
| 65 | (should (parallel-get-result | ||
| 66 | (parallel-start (lambda (type title) | ||
| 67 | (require 'xwidget) | ||
| 68 | (with-temp-buffer | ||
| 69 | (let ((xwidget (make-xwidget 1 1 type title 10 10 nil))) | ||
| 70 | (set-xwidget-query-on-exit-flag xwidget nil) | ||
| 71 | (xwidgetp xwidget)))) | ||
| 72 | :env (list type title))))) | ||
| 73 | |||
| 74 | (xwidget-deftest xwidget-CHECK_XWIDGET () | ||
| 75 | (should (equal (parallel-get-result | ||
| 76 | (parallel-start (lambda () | ||
| 77 | (require 'xwidget) | ||
| 78 | (xwidget-info nil)))) | ||
| 79 | '(wrong-type-argument xwidgetp nil))) | ||
| 80 | (should (equal (parallel-get-result | ||
| 81 | (parallel-start (lambda () | ||
| 82 | (require 'xwidget) | ||
| 83 | (xwidget-view-info nil)))) | ||
| 84 | '(wrong-type-argument xwidget-view-p nil)))) | ||
| 85 | |||
| 86 | (xwidget-deftest xwidget-view-p (Button ToggleButton slider socket cairo) | ||
| 87 | (should (parallel-get-result | ||
| 88 | (parallel-start (lambda (type title) | ||
| 89 | (require 'xwidget) | ||
| 90 | (with-temp-buffer | ||
| 91 | (insert ?\0) | ||
| 92 | (let* ((xwidget (xwidget-insert 1 type title 100 100)) | ||
| 93 | (window (display-buffer (current-buffer)))) | ||
| 94 | (set-xwidget-query-on-exit-flag xwidget nil) | ||
| 95 | (set-frame-visible (window-frame window) t) | ||
| 96 | (redisplay t) | ||
| 97 | (xwidget-view-p (xwidget-view-lookup xwidget window))))) | ||
| 98 | :env (list type title) | ||
| 99 | :graphical t | ||
| 100 | :emacs-args '("-T" "emacs-debug"))))) | ||
| 101 | |||
| 102 | (defun xwidget-interactive-tests () | ||
| 103 | "Interactively test Button ToggleButton and slider. | ||
| 104 | |||
| 105 | Start Emacs instances and try to insert the xwidget." | ||
| 106 | (interactive) | ||
| 107 | (flet ((test-xwidget (type) | ||
| 108 | (parallel-get-result | ||
| 109 | (parallel-start (lambda () | ||
| 110 | (require 'xwidget) | ||
| 111 | (with-temp-buffer | ||
| 112 | (insert ?\0) | ||
| 113 | (set-xwidget-query-on-exit-flag | ||
| 114 | (xwidget-insert 1 type (format "%s" type) 100 100) nil) | ||
| 115 | (display-buffer (current-buffer)) | ||
| 116 | (cons type (or (y-or-n-p (format "Do you see a %s?" type)) 'failed)))) | ||
| 117 | :graphical t | ||
| 118 | :debug t | ||
| 119 | :config xwidget-parallel-config)))) | ||
| 120 | (message "%S" (mapcar #'test-xwidget '(Button ToggleButton slider))))) | ||
| 121 | |||
| 122 | (provide 'xwidget-tests) | ||