annotate tests/gtk/event-stream-tests.el @ 4709:db7068430402

Add explicit GPL v2 or later notices to Bill Perry's code, where such notices are missing. This is done with Bill Perry's stated permission, in private email to me.
author Jerry James <james@xemacs.org>
date Mon, 05 Oct 2009 11:08:59 -0600
parents cef5f57bb9e2
children ba07c880114a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4709
db7068430402 Add explicit GPL v2 or later notices to Bill Perry's code, where such notices
Jerry James <james@xemacs.org>
parents: 4021
diff changeset
1 ;; This file is part of XEmacs.
db7068430402 Add explicit GPL v2 or later notices to Bill Perry's code, where such notices
Jerry James <james@xemacs.org>
parents: 4021
diff changeset
2 ;;
db7068430402 Add explicit GPL v2 or later notices to Bill Perry's code, where such notices
Jerry James <james@xemacs.org>
parents: 4021
diff changeset
3 ;; XEmacs is free software; you can redistribute it and/or modify it
db7068430402 Add explicit GPL v2 or later notices to Bill Perry's code, where such notices
Jerry James <james@xemacs.org>
parents: 4021
diff changeset
4 ;; under the terms of the GNU General Public License as published by the
db7068430402 Add explicit GPL v2 or later notices to Bill Perry's code, where such notices
Jerry James <james@xemacs.org>
parents: 4021
diff changeset
5 ;; Free Software Foundation; either version 2, or (at your option) any
db7068430402 Add explicit GPL v2 or later notices to Bill Perry's code, where such notices
Jerry James <james@xemacs.org>
parents: 4021
diff changeset
6 ;; later version.
db7068430402 Add explicit GPL v2 or later notices to Bill Perry's code, where such notices
Jerry James <james@xemacs.org>
parents: 4021
diff changeset
7 ;;
db7068430402 Add explicit GPL v2 or later notices to Bill Perry's code, where such notices
Jerry James <james@xemacs.org>
parents: 4021
diff changeset
8 ;; XEmacs is distributed in the hope that it will be useful, but WITHOUT
db7068430402 Add explicit GPL v2 or later notices to Bill Perry's code, where such notices
Jerry James <james@xemacs.org>
parents: 4021
diff changeset
9 ;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
db7068430402 Add explicit GPL v2 or later notices to Bill Perry's code, where such notices
Jerry James <james@xemacs.org>
parents: 4021
diff changeset
10 ;; FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
db7068430402 Add explicit GPL v2 or later notices to Bill Perry's code, where such notices
Jerry James <james@xemacs.org>
parents: 4021
diff changeset
11 ;; for more details.
db7068430402 Add explicit GPL v2 or later notices to Bill Perry's code, where such notices
Jerry James <james@xemacs.org>
parents: 4021
diff changeset
12 ;;
db7068430402 Add explicit GPL v2 or later notices to Bill Perry's code, where such notices
Jerry James <james@xemacs.org>
parents: 4021
diff changeset
13 ;; You should have received a copy of the GNU General Public License
db7068430402 Add explicit GPL v2 or later notices to Bill Perry's code, where such notices
Jerry James <james@xemacs.org>
parents: 4021
diff changeset
14 ;; along with XEmacs; see the file COPYING. If not, write to
db7068430402 Add explicit GPL v2 or later notices to Bill Perry's code, where such notices
Jerry James <james@xemacs.org>
parents: 4021
diff changeset
15 ;; the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
db7068430402 Add explicit GPL v2 or later notices to Bill Perry's code, where such notices
Jerry James <james@xemacs.org>
parents: 4021
diff changeset
16 ;; Boston, MA 02111-1301, USA. */
db7068430402 Add explicit GPL v2 or later notices to Bill Perry's code, where such notices
Jerry James <james@xemacs.org>
parents: 4021
diff changeset
17
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
18 ;also do this: make two frames, one viewing "*scratch*", the other "foo".
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
19 ;in *scratch*, type (sit-for 20)^J
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
20 ;wait a couple of seconds, move cursor to foo, type "a"
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
21 ;a should be inserted in foo. Cursor highlighting should not change in
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
22 ;the meantime.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
23
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
24 ;do it with sleep-for. move cursor into foo, then back into *scratch*
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
25 ;before typing.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
26 ;repeat also with (accept-process-output nil 20)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
27
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
28 ;make sure ^G aborts sit-for, sleep-for and accept-process-output:
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
29
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
30 (defun tst ()
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
31 (list (condition-case c
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
32 (sleep-for 20)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
33 (quit c))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
34 (read-char)))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
35
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
36 (tst)^Ja^G ==> ((quit) 97) with no signal
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
37 (tst)^J^Ga ==> ((quit) 97) with no signal
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
38 (tst)^Jabc^G ==> ((quit) 97) with no signal, and "bc" inserted in buffer
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
39
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
40 ; with sit-for only do the 2nd test.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
41 ; Do all 3 tests with (accept-proccess-output nil 20)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
42
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
43 /*
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
44 Additional test cases for accept-process-output, sleep-for, sit-for.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
45 Be sure you do all of the above checking for C-g and focus, too!
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
46
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
47 ; Make sure that timer handlers are run during, not after sit-for:
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
48 (defun timer-check ()
4021
cef5f57bb9e2 [xemacs-hg @ 2007-06-21 13:39:08 by aidan]
aidan
parents: 462
diff changeset
49 (add-timeout 2 #'(lambda (ignore) (message "timer ran")) nil)
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
50 (sit-for 5)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
51 (message "after sit-for"))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
52
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
53 ; The first message should appear after 2 seconds, and the final message
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
54 ; 3 seconds after that.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
55 ; repeat above test with (sleep-for 5) and (accept-process-output nil 5)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
56
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
57 ; Make sure that process filters are run during, not after sit-for.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
58 (defun fubar ()
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
59 (message "sit-for = %s" (sit-for 30)))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
60 (add-hook 'post-command-hook 'fubar)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
61
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
62 ; Now type M-x shell RET
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
63 ; wait for the shell prompt then send: ls RET
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
64 ; the output of ls should fill immediately, and not wait 30 seconds.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
65
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
66 ; repeat above test with (sleep-for 30) and (accept-process-output nil 30)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
67
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
68
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
69
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
70 ; Make sure that recursive invocations return immediately:
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
71 (defmacro test-diff-time (start end)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
72 `(+ (* (- (car ,end) (car ,start)) 65536.0)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
73 (- (cadr ,end) (cadr ,start))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
74 (/ (- (caddr ,end) (caddr ,start)) 1000000.0)))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
75
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
76 (defun testee (ignore)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
77 (sit-for 10))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
78
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
79 (defun test-them ()
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
80 (let ((start (current-time))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
81 end)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
82 (add-timeout 2 'testee nil)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
83 (sit-for 5)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
84 (add-timeout 2 'testee nil)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
85 (sleep-for 5)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
86 (add-timeout 2 'testee nil)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
87 (accept-process-output nil 5)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
88 (setq end (current-time))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
89 (test-diff-time start end)))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
90
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
91 (test-them) should sit for 15 seconds.