update.
[chise/xemacs-chise.git.1] / tests / gtk / event-stream-tests.el
1 ;also do this: make two frames, one viewing "*scratch*", the other "foo".
2 ;in *scratch*, type (sit-for 20)^J
3 ;wait a couple of seconds, move cursor to foo, type "a"
4 ;a should be inserted in foo.  Cursor highlighting should not change in
5 ;the meantime.
6
7 ;do it with sleep-for.  move cursor into foo, then back into *scratch*
8 ;before typing.
9 ;repeat also with (accept-process-output nil 20)
10
11 ;make sure ^G aborts sit-for, sleep-for and accept-process-output:
12
13  (defun tst ()
14   (list (condition-case c
15             (sleep-for 20)
16           (quit c))
17         (read-char)))
18
19  (tst)^Ja^G    ==>  ((quit) 97) with no signal
20  (tst)^J^Ga    ==>  ((quit) 97) with no signal
21  (tst)^Jabc^G  ==>  ((quit) 97) with no signal, and "bc" inserted in buffer
22
23 ; with sit-for only do the 2nd test.
24 ; Do all 3 tests with (accept-proccess-output nil 20)
25
26 /*
27 Additional test cases for accept-process-output, sleep-for, sit-for.
28 Be sure you do all of the above checking for C-g and focus, too!
29
30 ; Make sure that timer handlers are run during, not after sit-for:
31 (defun timer-check ()
32   (add-timeout 2 '(lambda (ignore) (message "timer ran")) nil)
33   (sit-for 5)
34   (message "after sit-for"))
35
36 ; The first message should appear after 2 seconds, and the final message
37 ; 3 seconds after that.
38 ; repeat above test with (sleep-for 5) and (accept-process-output nil 5)
39
40 ; Make sure that process filters are run during, not after sit-for.
41 (defun fubar ()
42   (message "sit-for = %s" (sit-for 30)))
43 (add-hook 'post-command-hook 'fubar)
44
45 ; Now type M-x shell RET
46 ; wait for the shell prompt then send: ls RET
47 ; the output of ls should fill immediately, and not wait 30 seconds.
48
49 ; repeat above test with (sleep-for 30) and (accept-process-output nil 30)
50
51
52
53 ; Make sure that recursive invocations return immediately:
54 (defmacro test-diff-time (start end)
55   `(+ (* (- (car ,end) (car ,start)) 65536.0)
56       (- (cadr ,end) (cadr ,start))
57       (/ (- (caddr ,end) (caddr ,start)) 1000000.0)))
58
59 (defun testee (ignore)
60   (sit-for 10))
61
62 (defun test-them ()
63   (let ((start (current-time))
64         end)
65     (add-timeout 2 'testee nil)
66     (sit-for 5)
67     (add-timeout 2 'testee nil)
68     (sleep-for 5)
69     (add-timeout 2 'testee nil)
70     (accept-process-output nil 5)
71     (setq end (current-time))
72     (test-diff-time start end)))
73
74 (test-them) should sit for 15 seconds.