]> gitweb.factorcode.org Git - factor.git/blob - basis/ui/tools/listener/listener-tests.factor
4e1c583eb6f3a331fff93c7fb75091ec3ff4f019
[factor.git] / basis / ui / tools / listener / listener-tests.factor
1 USING: continuations documents
2 ui.tools.listener hashtables kernel namespaces parser sequences
3 tools.test ui.commands ui.gadgets ui.gadgets.editors
4 ui.gadgets.panes vocabs words ui.gadgets.debug slots.private
5 arrays generic threads accessors listener math
6 calendar concurrency.promises io ui.tools.common ;
7 IN: ui.tools.listener.tests
8
9 [
10     [ ] [ <interactor> <pane> <pane-stream> >>output "interactor" set ] unit-test
11
12     [ ] [ "interactor" get register-self ] unit-test
13
14     [ ] [ "[ 1 2 3" "interactor" get set-editor-string ] unit-test
15
16     [ ] [ <promise> "promise" set ] unit-test
17
18     [
19         self "interactor" get thread<<
20         "interactor" get stream-read-quot "promise" get fulfill
21     ] "Interactor test" spawn drop
22
23     ! This should not throw an exception
24     [ ] [ "interactor" get evaluate-input ] unit-test
25
26     [ ] [ [ "interactor" get interactor-busy? ] [ yield ] while ] unit-test
27
28     [ ] [ "[ 1 2 3 ]" "interactor" get set-editor-string ] unit-test
29
30     [ ] [ "interactor" get evaluate-input ] unit-test
31
32     [ [ [ 1 2 3 ] ] ] [ "promise" get 5 seconds ?promise-timeout ] unit-test
33 ] with-interactive-vocabs
34
35 [
36     [ ] [ <interactor> <pane> <pane-stream> >>output "interactor" set ] unit-test
37
38     [ ] [ "interactor" get register-self ] unit-test
39
40     [ ] [ <promise> "promise" set ] unit-test
41
42     [
43         self "interactor" get thread<<
44         "interactor" get stream-readln "promise" get fulfill
45     ] "Interactor test" spawn drop
46
47     [ ] [ "hi" "interactor" get set-editor-string ] unit-test
48
49     [ ] [ [ "interactor" get interactor-busy? ] [ yield ] while ] unit-test
50
51     [ ] [ "interactor" get evaluate-input ] unit-test
52
53     [ "hi" ] [ "promise" get 5 seconds ?promise-timeout ] unit-test
54
55     [ ] [ <promise> "promise" set ] unit-test
56
57     [
58         self "interactor" get thread<<
59         "\n" "interactor" get stream-read-until 2array "promise" get fulfill
60     ] "Interactor test" spawn drop
61
62     [ ] [ "Hello\nWorld\n" "interactor" get set-editor-string ] unit-test
63
64     [ ] [ [ "interactor" get interactor-busy? ] [ yield ] while ] unit-test
65
66     [ ] [ "interactor" get evaluate-input ] unit-test
67
68     [ { "Hello" 10 } ] [ "promise" get 5 seconds ?promise-timeout ] unit-test
69
70     [ ] [ <promise> "promise" set ] unit-test
71
72     [
73         self "interactor" get thread<<
74         "C\n" "interactor" get stream-read-until 2array "promise" get fulfill
75     ] "Interactor test" spawn drop
76
77     [ ] [ "ABCDEFGHIJKLM" "interactor" get set-editor-string ] unit-test
78
79     [ ] [ [ "interactor" get interactor-busy? ] [ yield ] while ] unit-test
80
81     [ ] [ "interactor" get evaluate-input ] unit-test
82
83     [ { "AB" 67 } ] [ "promise" get 5 seconds ?promise-timeout ] unit-test
84
85     [ ] [ <promise> "promise" set ] unit-test
86
87     [
88         self "interactor" get thread<<
89         "Z" "interactor" get stream-read-until 2array "promise" get fulfill
90     ] "Interactor test" spawn drop
91
92     [ ] [ "Hello\nWorld" "interactor" get set-editor-string ] unit-test
93
94     [ ] [ [ "interactor" get interactor-busy? ] [ yield ] while ] unit-test
95
96     [ ] [ "interactor" get evaluate-input ] unit-test
97
98     [ ] [ "interactor" get interactor-eof ] unit-test
99
100     [ { "Hello\nWorld\n" f } ] [ "promise" get 5 seconds ?promise-timeout ] unit-test
101 ] with-interactive-vocabs
102
103 ! Hang
104 { } [ <interactor> <pane> <pane-stream> >>output "interactor" set ] unit-test
105
106 { } [ [ "interactor" get stream-read-quot drop ] "A" spawn drop ] unit-test
107
108 { } [ [ "interactor" get stream-read-quot drop ] "B" spawn drop ] unit-test
109
110 { } [ 1 seconds sleep ] unit-test
111
112 { } [ "interactor" get interactor-eof ] unit-test
113
114 { } [ <interactor> <pane> <pane-stream> >>output "interactor" set ] unit-test
115
116 CONSTANT: text "Hello world.\nThis is a test."
117
118 { } [ text "interactor" get set-editor-string ] unit-test
119
120 { } [ <promise> "promise" set ] unit-test
121
122 { } [
123     [
124         "interactor" get register-self
125         "interactor" get stream-contents "promise" get fulfill
126     ] in-thread
127 ] unit-test
128
129 { } [ 100 milliseconds sleep ] unit-test
130
131 { } [ "interactor" get evaluate-input ] unit-test
132
133 { } [ 100 milliseconds sleep ] unit-test
134
135 { } [ "interactor" get interactor-eof ] unit-test
136
137 { t } [ "promise" get 2 seconds ?promise-timeout text = ] unit-test
138
139 { } [ <interactor> <pane> <pane-stream> >>output "interactor" set ] unit-test
140
141 { } [ text "interactor" get set-editor-string ] unit-test
142
143 { } [ <promise> "promise" set ] unit-test
144
145 { } [
146     [
147         "interactor" get register-self
148         "interactor" get stream-read1 "promise" get fulfill
149     ] in-thread
150 ] unit-test
151
152 { } [ 100 milliseconds sleep ] unit-test
153
154 { } [ "interactor" get evaluate-input ] unit-test
155
156 { CHAR: H } [ "promise" get 2 seconds ?promise-timeout ] unit-test
157
158 { } [ <listener-gadget> [ ] with-grafted-gadget ] unit-test
159
160 { } [ <listener-gadget> "listener" set ] unit-test
161
162 "listener" get [
163     <interactor> <pane> <pane-stream> >>output "i" set
164
165     [ t ] [ "i" get interactor? ] unit-test
166
167     [ ] [ "SYMBOL:" "i" get set-editor-string ] unit-test
168
169     [ ] [
170         "i" get [ { "SYMBOL:" } parse-lines ] [ go-to-error ] recover
171     ] unit-test
172
173     [ t ] [
174         "i" get model>> doc-end
175         "i" get editor-caret =
176     ] unit-test
177
178     ! Race condition discovered by SimonRC
179     [ ] [
180         [
181             "listener" get input>>
182             [ stream-read-quot drop ]
183             [ stream-read-quot drop ] bi
184         ] "OH, HAI" spawn drop
185     ] unit-test
186
187     [ ] [ "listener" get clear-output ] unit-test
188
189     [ ] [ "listener" get restart-listener ] unit-test
190
191     [ ] [ 1 seconds sleep ] unit-test
192
193     [ ] [ "listener" get com-end ] unit-test
194 ] with-grafted-gadget
195
196 { } [ \ + <interactor> manifest>> use-if-necessary ] unit-test
197
198 { } [ <listener-gadget> "l" set ] unit-test
199 { } [ "l" get com-scroll-up ] unit-test
200 { } [ "l" get com-scroll-down ] unit-test