Code cleanup
[pipeglade.git] / pipegladetest.sh
blobf97eaa249352a7d19bb1a30f10548945d7625cee
1 #! /usr/bin/env bash
3 # Another possible shebang line:
4 #! /usr/bin/env mksh
6 # Pipeglade tests; they should be invoked in the build directory.
8 # Failure of a test can cause failure of one or more subsequent tests.
10 export LC_ALL=C
11 FIN=to-g.fifo
12 FOUT=from-g.fifo
13 FERR=err.fifo
14 BAD_FIFO=bad_fifo
15 rm -f $FIN $FOUT $FERR $BAD_FIFO
17 TESTS=0
18 FAILS=0
19 OKS=0
21 count_fail() {
22 (( TESTS+=1 ))
23 (( FAILS+=1 ))
26 count_ok() {
27 (( TESTS+=1 ))
28 (( OKS+=1 ))
31 check_rm() {
32 if test -e $1; then
33 count_fail
34 echo " FAIL $1 should be deleted"
35 else
36 count_ok
37 echo " OK $1 deleted"
42 # BATCH ONE
44 # Situations where pipeglade should exit immediately. These tests
45 # should run automatically
46 ######################################################################
48 check_call() {
49 r=$2
50 e=$3
51 o=$4
52 output=$($1 2>tmperr.txt)
53 retval=$?
54 error=$(<tmperr.txt)
55 rm tmperr.txt
56 echo "CALL $1"
57 if test "$output" = "" -a "$o" = "" || (echo "$output" | grep -Fqe "$o"); then
58 count_ok
59 echo " OK STDOUT $output"
60 else
61 count_fail
62 echo " FAIL STDOUT $output"
63 echo " EXPECTED $o"
65 if test "$error" = "" -a "$e" = "" || test "$retval" -eq "$r" && (echo "$error" | grep -Fqe "$e"); then
66 count_ok
67 echo " OK EXIT/STDERR $retval $error"
68 else
69 count_fail
70 echo " FAIL EXIT/STDERR $retval $error"
71 echo " EXPECTED $r $e"
75 check_call "./pipeglade -u nonexistent.ui" 1 "nonexistent.ui" ""
76 check_call "./pipeglade -u bad_window.ui" 1 "no toplevel window named 'window'" ""
77 check_call "./pipeglade -u html-template/404.html" 1 "'html'" ""
78 check_call "./pipeglade -u README" 1 "Document must begin with an element" ""
79 touch $BAD_FIFO
80 check_call "./pipeglade -i bad_fifo" 1 "making fifo" ""
81 check_call "./pipeglade -o bad_fifo" 1 "making fifo" ""
82 rm $BAD_FIFO
83 check_call "./pipeglade -h" 0 "usage: ./pipeglade [-h] [-i in-fifo] [-o out-fifo] [-u glade-builder-file.ui] [-G] [-V]" ""
84 check_call "./pipeglade -G" 0 "" "GTK+ v"
85 check_call "./pipeglade -V" 0 "" "."
86 check_call "./pipeglade -X" 0 "option" ""
87 check_call "./pipeglade -u" 0 "argument" ""
88 check_call "./pipeglade -i" 0 "argument" ""
89 check_call "./pipeglade -o" 0 "argument" ""
90 check_call "./pipeglade yyy" 0 "illegal parameter 'yyy'" ""
91 mkfifo $FIN
92 echo -e "statusbar1:pop\n _:main_quit" > $FIN &
93 check_call "./pipeglade -i $FIN" 0 "" ""
95 sleep .5
96 check_rm $FIN
97 check_rm $FOUT
101 #exit
102 # BATCH TWO
104 # Error handling tests---bogus actions leading to appropriate error
105 # messages. These tests should run automatically.
106 ######################################################################
108 mkfifo $FERR
110 check_error() {
111 echo "SEND $1"
112 echo -e "$1" >$FIN
113 read r <$FERR
114 if test "$2" = "$r"; then
115 count_ok
116 echo " OK $r"
117 else
118 count_fail
119 echo " FAIL $r"
120 echo " EXPECTED $2"
124 read r 2< $FERR &
125 ./pipeglade -i $FIN 2> $FERR &
127 # wait for $FIN to appear
128 while test ! \( -e $FIN \); do :; done
130 # Non-existent name
131 check_error "" "ignoring command \"\""
132 check_error "nnn" "ignoring command \"nnn\""
133 check_error "nnn:set_text FFFF" "ignoring command \"nnn:set_text FFFF\""
134 # Widget that shouldn't fire callbacks
135 check_error "label1:force_cb" "ignoring callback forced from label1"
136 # GtkLabel
137 check_error "label1:nnn" "ignoring GtkLabel command \"label1:nnn\""
138 # GtkImage
139 check_error "image1:nnn" "ignoring GtkImage command \"image1:nnn\""
140 # GtkNotebook
141 check_error "notebook1:nnn" "ignoring GtkNotebook command \"notebook1:nnn\""
142 # GtkExpander
143 check_error "expander1:nnn" "ignoring GtkExpander command \"expander1:nnn\""
144 # GtkTextView
145 check_error "textview1:nnn" "ignoring GtkTextView command \"textview1:nnn\""
146 # GtkButton
147 check_error "button1:nnn" "ignoring GtkButton command \"button1:nnn\""
148 # GtkSwitch
149 check_error "switch1:nnn" "ignoring GtkSwitch command \"switch1:nnn\""
150 # GtkToggleButton
151 check_error "togglebutton1:nnn" "ignoring GtkToggleButton command \"togglebutton1:nnn\""
152 # GtkCheckButton
153 check_error "checkbutton1:nnn" "ignoring GtkCheckButton command \"checkbutton1:nnn\""
154 # GtkRadioButton
155 check_error "radiobutton1:nnn" "ignoring GtkRadioButton command \"radiobutton1:nnn\""
156 # GtkSpinButton
157 check_error "spinbutton1:nnn" "ignoring GtkSpinButton command \"spinbutton1:nnn\""
158 # GtkFileChooserButton
159 check_error "filechooserbutton1:nnn" "ignoring GtkFileChooserButton command \"filechooserbutton1:nnn\""
160 # GtkFilechooserDialog
161 check_error "open_dialog:nnn" "ignoring GtkFileChooserDialog command \"open_dialog:nnn\""
162 # GtkFontButton
163 check_error "fontbutton1:nnn" "ignoring GtkFontButton command \"fontbutton1:nnn\""
164 # GtkColorButton
165 check_error "colorbutton1:nnn" "ignoring GtkColorButton command \"colorbutton1:nnn\""
166 # GtkScale
167 check_error "scale1:nnn" "ignoring GtkScale command \"scale1:nnn\""
168 # GtkProgressBar
169 check_error "progressbar1:nnn" "ignoring GtkProgressBar command \"progressbar1:nnn\""
170 # GtkSpinner
171 check_error "spinner1:nnn" "ignoring GtkSpinner command \"spinner1:nnn\""
172 # GtkStatusbar
173 check_error "statusbar1:nnn" "ignoring GtkStatusbar command \"statusbar1:nnn\""
174 # GtkComboBoxText
175 check_error "comboboxtext1:nnn" "ignoring GtkComboBoxText command \"comboboxtext1:nnn\""
176 # GtkEntry
177 check_error "entry1:nnn" "ignoring GtkEntry command \"entry1:nnn\""
178 # GtkTreeView insert_row
179 check_error "treeview1:nnn" "ignoring GtkTreeView command \"treeview1:nnn\""
180 check_error "treeview1:insert_row 10000" "ignoring GtkTreeView command \"treeview1:insert_row 10000\""
181 check_error "treeview1:insert_row -1" "ignoring GtkTreeView command \"treeview1:insert_row -1\""
182 check_error "treeview1:insert_row nnn" "ignoring GtkTreeView command \"treeview1:insert_row nnn\""
183 check_error "treeview1:insert_row" "ignoring GtkTreeView command \"treeview1:insert_row\""
184 check_error "treeview1:insert_row " "ignoring GtkTreeView command \"treeview1:insert_row \""
185 # GtkTreeView remove_row
186 check_error "treeview1:remove_row 10000" "ignoring GtkTreeView command \"treeview1:remove_row 10000\""
187 check_error "treeview1:remove_row -1" "ignoring GtkTreeView command \"treeview1:remove_row -1\""
188 check_error "treeview1:remove_row nnn" "ignoring GtkTreeView command \"treeview1:remove_row nnn\""
189 check_error "treeview1:remove_row" "ignoring GtkTreeView command \"treeview1:remove_row\""
190 check_error "treeview1:remove_row " "ignoring GtkTreeView command \"treeview1:remove_row \""
191 # GtkTreeView move_row
192 check_error "treeview1:move_row" "ignoring GtkTreeView command \"treeview1:move_row\""
193 check_error "treeview1:move_row " "ignoring GtkTreeView command \"treeview1:move_row \""
194 check_error "treeview1:move_row nnn" "ignoring GtkTreeView command \"treeview1:move_row nnn\""
195 check_error "treeview1:move_row 10000 end" "ignoring GtkTreeView command \"treeview1:move_row 10000 end\""
196 check_error "treeview1:move_row -1 end" "ignoring GtkTreeView command \"treeview1:move_row -1 end\""
197 check_error "treeview1:move_row nnn end" "ignoring GtkTreeView command \"treeview1:move_row nnn end\""
198 check_error "treeview1:move_row 0 10000" "ignoring GtkTreeView command \"treeview1:move_row 0 10000\""
199 check_error "treeview1:move_row 0 -1" "ignoring GtkTreeView command \"treeview1:move_row 0 -1\""
200 check_error "treeview1:move_row 0 nnn" "ignoring GtkTreeView command \"treeview1:move_row 0 nnn\""
201 # GtkTreeView scroll
202 check_error "treeview1:scroll" "ignoring GtkTreeView command \"treeview1:scroll\""
203 check_error "treeview1:scroll " "ignoring GtkTreeView command \"treeview1:scroll \""
204 check_error "treeview1:scroll nnn" "ignoring GtkTreeView command \"treeview1:scroll nnn\""
205 check_error "treeview1:scroll -1 1" "ignoring GtkTreeView command \"treeview1:scroll -1 1\""
206 check_error "treeview1:scroll 1 -1" "ignoring GtkTreeView command \"treeview1:scroll 1 -1\""
207 check_error "treeview1:scroll nnn 1" "ignoring GtkTreeView command \"treeview1:scroll nnn 1\""
208 check_error "treeview1:scroll 1 nnn" "ignoring GtkTreeView command \"treeview1:scroll 1 nnn\""
209 # GtkTreeView set
210 check_error "treeview1:set" "ignoring GtkTreeView command \"treeview1:set\""
211 check_error "treeview1:set " "ignoring GtkTreeView command \"treeview1:set \""
212 check_error "treeview1:set nnn" "ignoring GtkTreeView command \"treeview1:set nnn\""
213 check_error "treeview1:set 0 nnn" "ignoring GtkTreeView command \"treeview1:set 0 nnn\""
214 check_error "treeview1:set nnn 0" "ignoring GtkTreeView command \"treeview1:set nnn 0\""
215 check_error "treeview1:set 10000 1 77" "ignoring GtkTreeView command \"treeview1:set 10000 1 77\""
216 check_error "treeview1:set 1 10000 77" "ignoring GtkTreeView command \"treeview1:set 1 10000 77\""
217 check_error "treeview1:set 1 11 77" "ignoring GtkTreeView command \"treeview1:set 1 11 77\""
218 check_error "treeview1:set nnn 1 77" "ignoring GtkTreeView command \"treeview1:set nnn 1 77\""
219 check_error "treeview1:set 1 nnn 77" "ignoring GtkTreeView command \"treeview1:set 1 nnn 77\""
220 check_error "treeview1:set -1 1 77" "ignoring GtkTreeView command \"treeview1:set -1 1 77\""
221 check_error "treeview1:set 1 -1 77" "ignoring GtkTreeView command \"treeview1:set 1 -1 77\""
222 # GtkTree set "abc" into numeric column
223 check_error "treeview1:set 1 1 abc" "ignoring GtkTreeView command \"treeview1:set 1 1 abc\""
224 # GtkCalendar
225 check_error "calendar1:nnn" "ignoring GtkCalendar command \"calendar1:nnn\""
226 check_error "calendar1:select_date" "ignoring GtkCalendar command \"calendar1:select_date\""
227 check_error "calendar1:select_date " "ignoring GtkCalendar command \"calendar1:select_date \""
228 check_error "calendar1:select_date nnn" "ignoring GtkCalendar command \"calendar1:select_date nnn\""
229 check_error "calendar1:select_date 2000-12-33" "ignoring GtkCalendar command \"calendar1:select_date 2000-12-33\""
230 check_error "calendar1:select_date 2000-13-20" "ignoring GtkCalendar command \"calendar1:select_date 2000-13-20\""
231 # GtkDrawingArea
232 check_error "drawingarea1:nnn" "ignoring GtkDrawingArea command \"drawingarea1:nnn\""
233 check_error "drawingarea1:rectangle" "ignoring GtkDrawingArea command \"drawingarea1:rectangle\""
234 check_error "drawingarea1:rectangle " "ignoring GtkDrawingArea command \"drawingarea1:rectangle \""
235 check_error "drawingarea1:rectangle nnn" "ignoring GtkDrawingArea command \"drawingarea1:rectangle nnn\""
236 check_error "drawingarea1:rectangle 1" "ignoring GtkDrawingArea command \"drawingarea1:rectangle 1\""
237 check_error "drawingarea1:rectangle 1 10" "ignoring GtkDrawingArea command \"drawingarea1:rectangle 1 10\""
238 check_error "drawingarea1:rectangle 1 10 10" "ignoring GtkDrawingArea command \"drawingarea1:rectangle 1 10 10\""
239 check_error "drawingarea1:rectangle 1 10 10 20" "ignoring GtkDrawingArea command \"drawingarea1:rectangle 1 10 10 20\""
240 check_error "drawingarea1:rectangle 1 10 10 20 nnn" "ignoring GtkDrawingArea command \"drawingarea1:rectangle 1 10 10 20 nnn\""
241 check_error "drawingarea1:arc" "ignoring GtkDrawingArea command \"drawingarea1:arc\""
242 check_error "drawingarea1:arc " "ignoring GtkDrawingArea command \"drawingarea1:arc \""
243 check_error "drawingarea1:arc nnn" "ignoring GtkDrawingArea command \"drawingarea1:arc nnn\""
244 check_error "drawingarea1:arc 1" "ignoring GtkDrawingArea command \"drawingarea1:arc 1\""
245 check_error "drawingarea1:arc 1 10" "ignoring GtkDrawingArea command \"drawingarea1:arc 1 10\""
246 check_error "drawingarea1:arc 1 10 10" "ignoring GtkDrawingArea command \"drawingarea1:arc 1 10 10\""
247 check_error "drawingarea1:arc 1 10 10 20" "ignoring GtkDrawingArea command \"drawingarea1:arc 1 10 10 20\""
248 check_error "drawingarea1:arc 1 10 10 20 45" "ignoring GtkDrawingArea command \"drawingarea1:arc 1 10 10 20 45\""
249 check_error "drawingarea1:arc 1 10 10 20 45 nnn" "ignoring GtkDrawingArea command \"drawingarea1:arc 1 10 10 20 45 nnn\""
250 check_error "drawingarea1:arc_negative" "ignoring GtkDrawingArea command \"drawingarea1:arc_negative\""
251 check_error "drawingarea1:arc_negative " "ignoring GtkDrawingArea command \"drawingarea1:arc_negative \""
252 check_error "drawingarea1:arc_negative nnn" "ignoring GtkDrawingArea command \"drawingarea1:arc_negative nnn\""
253 check_error "drawingarea1:arc_negative 1" "ignoring GtkDrawingArea command \"drawingarea1:arc_negative 1\""
254 check_error "drawingarea1:arc_negative 1 10" "ignoring GtkDrawingArea command \"drawingarea1:arc_negative 1 10\""
255 check_error "drawingarea1:arc_negative 1 10 10" "ignoring GtkDrawingArea command \"drawingarea1:arc_negative 1 10 10\""
256 check_error "drawingarea1:arc_negative 1 10 10 20" "ignoring GtkDrawingArea command \"drawingarea1:arc_negative 1 10 10 20\""
257 check_error "drawingarea1:arc_negative 1 10 10 20 45" "ignoring GtkDrawingArea command \"drawingarea1:arc_negative 1 10 10 20 45\""
258 check_error "drawingarea1:arc_negative 1 10 10 20 45 nnn" "ignoring GtkDrawingArea command \"drawingarea1:arc_negative 1 10 10 20 45 nnn\""
259 check_error "drawingarea1:curve_to" "ignoring GtkDrawingArea command \"drawingarea1:curve_to\""
260 check_error "drawingarea1:curve_to " "ignoring GtkDrawingArea command \"drawingarea1:curve_to \""
261 check_error "drawingarea1:curve_to nnn" "ignoring GtkDrawingArea command \"drawingarea1:curve_to nnn\""
262 check_error "drawingarea1:curve_to 1" "ignoring GtkDrawingArea command \"drawingarea1:curve_to 1\""
263 check_error "drawingarea1:curve_to 1 10" "ignoring GtkDrawingArea command \"drawingarea1:curve_to 1 10\""
264 check_error "drawingarea1:curve_to 1 10 10" "ignoring GtkDrawingArea command \"drawingarea1:curve_to 1 10 10\""
265 check_error "drawingarea1:curve_to 1 10 10 20" "ignoring GtkDrawingArea command \"drawingarea1:curve_to 1 10 10 20\""
266 check_error "drawingarea1:curve_to 1 10 10 20 20" "ignoring GtkDrawingArea command \"drawingarea1:curve_to 1 10 10 20 20\""
267 check_error "drawingarea1:curve_to 1 10 10 20 20 25" "ignoring GtkDrawingArea command \"drawingarea1:curve_to 1 10 10 20 20 25\""
268 check_error "drawingarea1:curve_to 1 10 10 20 20 25 nnn" "ignoring GtkDrawingArea command \"drawingarea1:curve_to 1 10 10 20 20 25 nnn\""
269 check_error "drawingarea1:rel_curve_to" "ignoring GtkDrawingArea command \"drawingarea1:rel_curve_to\""
270 check_error "drawingarea1:rel_curve_to " "ignoring GtkDrawingArea command \"drawingarea1:rel_curve_to \""
271 check_error "drawingarea1:rel_curve_to nnn" "ignoring GtkDrawingArea command \"drawingarea1:rel_curve_to nnn\""
272 check_error "drawingarea1:rel_curve_to 1" "ignoring GtkDrawingArea command \"drawingarea1:rel_curve_to 1\""
273 check_error "drawingarea1:rel_curve_to 1 10" "ignoring GtkDrawingArea command \"drawingarea1:rel_curve_to 1 10\""
274 check_error "drawingarea1:rel_curve_to 1 10 10" "ignoring GtkDrawingArea command \"drawingarea1:rel_curve_to 1 10 10\""
275 check_error "drawingarea1:rel_curve_to 1 10 10 20" "ignoring GtkDrawingArea command \"drawingarea1:rel_curve_to 1 10 10 20\""
276 check_error "drawingarea1:rel_curve_to 1 10 10 20 20" "ignoring GtkDrawingArea command \"drawingarea1:rel_curve_to 1 10 10 20 20\""
277 check_error "drawingarea1:rel_curve_to 1 10 10 20 20 25" "ignoring GtkDrawingArea command \"drawingarea1:rel_curve_to 1 10 10 20 20 25\""
278 check_error "drawingarea1:rel_curve_to 1 10 10 20 20 25 nnn" "ignoring GtkDrawingArea command \"drawingarea1:rel_curve_to 1 10 10 20 20 25 nnn\""
279 check_error "drawingarea1:line_to" "ignoring GtkDrawingArea command \"drawingarea1:line_to\""
280 check_error "drawingarea1:line_to " "ignoring GtkDrawingArea command \"drawingarea1:line_to \""
281 check_error "drawingarea1:line_to nnn" "ignoring GtkDrawingArea command \"drawingarea1:line_to nnn\""
282 check_error "drawingarea1:line_to 1" "ignoring GtkDrawingArea command \"drawingarea1:line_to 1\""
283 check_error "drawingarea1:line_to 1 20" "ignoring GtkDrawingArea command \"drawingarea1:line_to 1 20\""
284 check_error "drawingarea1:line_to 1 20 nnn" "ignoring GtkDrawingArea command \"drawingarea1:line_to 1 20 nnn\""
285 check_error "drawingarea1:rel_line_to" "ignoring GtkDrawingArea command \"drawingarea1:rel_line_to\""
286 check_error "drawingarea1:rel_line_to " "ignoring GtkDrawingArea command \"drawingarea1:rel_line_to \""
287 check_error "drawingarea1:rel_line_to nnn" "ignoring GtkDrawingArea command \"drawingarea1:rel_line_to nnn\""
288 check_error "drawingarea1:rel_line_to 1" "ignoring GtkDrawingArea command \"drawingarea1:rel_line_to 1\""
289 check_error "drawingarea1:rel_line_to 1 20" "ignoring GtkDrawingArea command \"drawingarea1:rel_line_to 1 20\""
290 check_error "drawingarea1:rel_line_to 1 20 nnn" "ignoring GtkDrawingArea command \"drawingarea1:rel_line_to 1 20 nnn\""
291 check_error "drawingarea1:move_to" "ignoring GtkDrawingArea command \"drawingarea1:move_to\""
292 check_error "drawingarea1:move_to " "ignoring GtkDrawingArea command \"drawingarea1:move_to \""
293 check_error "drawingarea1:move_to nnn" "ignoring GtkDrawingArea command \"drawingarea1:move_to nnn\""
294 check_error "drawingarea1:move_to 1" "ignoring GtkDrawingArea command \"drawingarea1:move_to 1\""
295 check_error "drawingarea1:move_to 1 20" "ignoring GtkDrawingArea command \"drawingarea1:move_to 1 20\""
296 check_error "drawingarea1:move_to 1 20 nnn" "ignoring GtkDrawingArea command \"drawingarea1:move_to 1 20 nnn\""
297 check_error "drawingarea1:rel_move_to" "ignoring GtkDrawingArea command \"drawingarea1:rel_move_to\""
298 check_error "drawingarea1:rel_move_to " "ignoring GtkDrawingArea command \"drawingarea1:rel_move_to \""
299 check_error "drawingarea1:rel_move_to nnn" "ignoring GtkDrawingArea command \"drawingarea1:rel_move_to nnn\""
300 check_error "drawingarea1:rel_move_to 1" "ignoring GtkDrawingArea command \"drawingarea1:rel_move_to 1\""
301 check_error "drawingarea1:rel_move_to 1 20" "ignoring GtkDrawingArea command \"drawingarea1:rel_move_to 1 20\""
302 check_error "drawingarea1:rel_move_to 1 20 nnn" "ignoring GtkDrawingArea command \"drawingarea1:rel_move_to 1 20 nnn\""
303 check_error "drawingarea1:close_path" "ignoring GtkDrawingArea command \"drawingarea1:close_path\""
304 check_error "drawingarea1:close_path " "ignoring GtkDrawingArea command \"drawingarea1:close_path \""
305 check_error "drawingarea1:close_path nnn" "ignoring GtkDrawingArea command \"drawingarea1:close_path nnn\""
306 check_error "drawingarea1:set_source_rgba" "ignoring GtkDrawingArea command \"drawingarea1:set_source_rgba\""
307 check_error "drawingarea1:set_source_rgba " "ignoring GtkDrawingArea command \"drawingarea1:set_source_rgba \""
308 check_error "drawingarea1:set_source_rgba nnn" "ignoring GtkDrawingArea command \"drawingarea1:set_source_rgba nnn\""
309 check_error "drawingarea1:set_dash" "ignoring GtkDrawingArea command \"drawingarea1:set_dash\""
310 check_error "drawingarea1:set_dash " "ignoring GtkDrawingArea command \"drawingarea1:set_dash \""
311 check_error "drawingarea1:set_dash nnn" "ignoring GtkDrawingArea command \"drawingarea1:set_dash nnn\""
312 check_error "drawingarea1:set_line_cap" "ignoring GtkDrawingArea command \"drawingarea1:set_line_cap\""
313 check_error "drawingarea1:set_line_cap " "ignoring GtkDrawingArea command \"drawingarea1:set_line_cap \""
314 check_error "drawingarea1:set_line_cap nnn" "ignoring GtkDrawingArea command \"drawingarea1:set_line_cap nnn\""
315 check_error "drawingarea1:set_line_cap 1" "ignoring GtkDrawingArea command \"drawingarea1:set_line_cap 1\""
316 check_error "drawingarea1:set_line_cap 1 nnn" "ignoring GtkDrawingArea command \"drawingarea1:set_line_cap 1 nnn\""
317 check_error "drawingarea1:set_line_join" "ignoring GtkDrawingArea command \"drawingarea1:set_line_join\""
318 check_error "drawingarea1:set_line_join " "ignoring GtkDrawingArea command \"drawingarea1:set_line_join \""
319 check_error "drawingarea1:set_line_join nnn" "ignoring GtkDrawingArea command \"drawingarea1:set_line_join nnn\""
320 check_error "drawingarea1:set_line_join 1" "ignoring GtkDrawingArea command \"drawingarea1:set_line_join 1\""
321 check_error "drawingarea1:set_line_join 1 nnn" "ignoring GtkDrawingArea command \"drawingarea1:set_line_join 1 nnn\""
322 check_error "drawingarea1:set_line_width" "ignoring GtkDrawingArea command \"drawingarea1:set_line_width\""
323 check_error "drawingarea1:set_line_width " "ignoring GtkDrawingArea command \"drawingarea1:set_line_width \""
324 check_error "drawingarea1:set_line_width nnn" "ignoring GtkDrawingArea command \"drawingarea1:set_line_width nnn\""
325 check_error "drawingarea1:set_line_width 1" "ignoring GtkDrawingArea command \"drawingarea1:set_line_width 1\""
326 check_error "drawingarea1:set_line_width 1 nnn" "ignoring GtkDrawingArea command \"drawingarea1:set_line_width 1 nnn\""
327 check_error "drawingarea1:fill" "ignoring GtkDrawingArea command \"drawingarea1:fill\""
328 check_error "drawingarea1:fill " "ignoring GtkDrawingArea command \"drawingarea1:fill \""
329 check_error "drawingarea1:fill nnn" "ignoring GtkDrawingArea command \"drawingarea1:fill nnn\""
330 check_error "drawingarea1:fill_preserve" "ignoring GtkDrawingArea command \"drawingarea1:fill_preserve\""
331 check_error "drawingarea1:fill_preserve " "ignoring GtkDrawingArea command \"drawingarea1:fill_preserve \""
332 check_error "drawingarea1:fill_preserve nnn" "ignoring GtkDrawingArea command \"drawingarea1:fill_preserve nnn\""
333 check_error "drawingarea1:stroke" "ignoring GtkDrawingArea command \"drawingarea1:stroke\""
334 check_error "drawingarea1:stroke " "ignoring GtkDrawingArea command \"drawingarea1:stroke \""
335 check_error "drawingarea1:stroke nnn" "ignoring GtkDrawingArea command \"drawingarea1:stroke nnn\""
336 check_error "drawingarea1:stroke_preserve" "ignoring GtkDrawingArea command \"drawingarea1:stroke_preserve\""
337 check_error "drawingarea1:stroke_preserve " "ignoring GtkDrawingArea command \"drawingarea1:stroke_preserve \""
338 check_error "drawingarea1:stroke_preserve nnn" "ignoring GtkDrawingArea command \"drawingarea1:stroke_preserve nnn\""
339 check_error "drawingarea1:remove" "ignoring GtkDrawingArea command \"drawingarea1:remove\""
340 check_error "drawingarea1:remove " "ignoring GtkDrawingArea command \"drawingarea1:remove \""
341 check_error "drawingarea1:remove nnn" "ignoring GtkDrawingArea command \"drawingarea1:remove nnn\""
342 check_error "drawingarea1:set_show_text" "ignoring GtkDrawingArea command \"drawingarea1:set_show_text\""
343 check_error "drawingarea1:set_show_text " "ignoring GtkDrawingArea command \"drawingarea1:set_show_text \""
344 check_error "drawingarea1:set_show_text nnn" "ignoring GtkDrawingArea command \"drawingarea1:set_show_text nnn\""
345 check_error "drawingarea1:set_font_size" "ignoring GtkDrawingArea command \"drawingarea1:set_font_size\""
346 check_error "drawingarea1:set_font_size " "ignoring GtkDrawingArea command \"drawingarea1:set_font_size \""
347 check_error "drawingarea1:set_font_size nnn" "ignoring GtkDrawingArea command \"drawingarea1:set_font_size nnn\""
348 check_error "drawingarea1:set_font_size 1" "ignoring GtkDrawingArea command \"drawingarea1:set_font_size 1\""
349 check_error "drawingarea1:set_font_size 1 nnn" "ignoring GtkDrawingArea command \"drawingarea1:set_font_size 1 nnn\""
350 echo "_:main_quit" >$FIN
352 sleep .5
353 check_rm $FIN
354 rm $FERR
357 #exit
358 # BATCH THREE
360 # Tests for the principal functionality---valid actions leading to
361 # correct results. Manual intervention is required. Instructions
362 # will be given on the statusbar of the test GUI.
363 ######################################################################
365 mkfifo $FOUT
367 check() {
368 # Flush stale pipeglade output
369 while read -t .1 <$FOUT; do : ; done
370 N=$1
371 echo "SEND $2"
372 echo -e "$2" >$FIN
374 while (( i<$N )); do
375 read r <$FOUT
376 if test "$r" != ""; then
377 if test "$r" = "$3"; then
378 count_ok
379 echo " OK ($i) $r"
380 else
381 count_fail
382 echo " FAIL($i) $r"
383 echo " EXPECTED $3"
385 shift
386 (( i+=1 ))
388 done
391 ./pipeglade -i $FIN -o $FOUT &
393 # wait for $FIN and $FOUT to appear
394 while test ! \( -e $FIN -a -e $FOUT \); do :; done
396 check 1 "entry1:set_text FFFF" "entry1:0 FFFF"
397 check 1 "entry1:set_text GGGG" "entry1:0 GGGG"
398 check 1 "spinbutton1:set_text 33.0" "spinbutton1:0 33.0"
399 check 2 "radiobutton2:set_active 1" "radiobutton1:0 0" "radiobutton2:0 1"
400 check 2 "radiobutton1:set_active 1" "radiobutton2:0 0" "radiobutton1:0 1"
401 check 1 "switch1:set_active 1" "switch1:0 1"
402 check 1 "switch1:set_active 0" "switch1:0 0"
403 check 1 "togglebutton1:set_active 1" "togglebutton1:0 1"
404 check 1 "calendar1:select_date 1752-03-29" "calendar1:0 1752-03-29"
406 L=$(i=0
407 while (( i<100 )); do
408 (( i+=1 ))
409 echo -n "Repetitive input that is large enough to have the realloc() machinery kick in.---"
410 done)
411 check 1 "entry1:set_text $L" "entry1:0 $L"
413 check 1 "statusbar1:push Open what should now be named \"EXPANDER\" and click the \"button inside expander\"\n expander1:set_expanded 0\n expander1:set_label EXPANDER" "button6:0 clicked"
414 check 0 "expander1:set_expanded 0"
416 check 12 "statusbar1:push Click the 66% line\n treeview1:set 2 0 1\n treeview1:set 2 1 -30000\n treeview1:set 2 2 66\n treeview1:set 2 3 -2000000000\n treeview1:set 2 4 4000000000\n treeview1:set 2 5 -2000000000\n treeview1:set 2 6 4000000000\n treeview1:set 2 7 3.141\n treeview1:set 2 8 3.141\n treeview1:set 2 9 TEXT" "treeview1:1 clicked" "treeview1:1 2 0 1" "treeview1:1 2 1 -30000" "treeview1:1 2 2 66" "treeview1:1 2 3 -2000000000" "treeview1:1 2 4 4000000000" "treeview1:1 2 5 -2000000000" "treeview1:1 2 6 4000000000" "treeview1:1 2 7 3.141000" "treeview1:1 2 8 3.141000" "treeview1:1 2 9 TEXT" "treeview1:1 2 10 zzz"
417 check 12 "statusbar1:push Click the 66% line again (insert_row)\n treeview1:insert_row 0\n treeview1:insert_row 2" "treeview1:1 clicked" "treeview1:1 4 0 1" "treeview1:1 4 1 -30000" "treeview1:1 4 2 66" "treeview1:1 4 3 -2000000000" "treeview1:1 4 4 4000000000" "treeview1:1 4 5 -2000000000" "treeview1:1 4 6 4000000000" "treeview1:1 4 7 3.141000" "treeview1:1 4 8 3.141000" "treeview1:1 4 9 TEXT" "treeview1:1 4 10 zzz"
418 check 12 "statusbar1:push Click the 66% line again (move_row)\n treeview1:move_row 4 0" "treeview1:1 clicked" "treeview1:1 0 0 1" "treeview1:1 0 1 -30000" "treeview1:1 0 2 66" "treeview1:1 0 3 -2000000000" "treeview1:1 0 4 4000000000" "treeview1:1 0 5 -2000000000" "treeview1:1 0 6 4000000000" "treeview1:1 0 7 3.141000" "treeview1:1 0 8 3.141000" "treeview1:1 0 9 TEXT" "treeview1:1 0 10 zzz"
419 check 12 "statusbar1:push Click the 66% line again (move_row)\n treeview1:move_row 0 2" "treeview1:1 clicked" "treeview1:1 1 0 1" "treeview1:1 1 1 -30000" "treeview1:1 1 2 66" "treeview1:1 1 3 -2000000000" "treeview1:1 1 4 4000000000" "treeview1:1 1 5 -2000000000" "treeview1:1 1 6 4000000000" "treeview1:1 1 7 3.141000" "treeview1:1 1 8 3.141000" "treeview1:1 1 9 TEXT" "treeview1:1 1 10 zzz"
420 check 12 "statusbar1:push Click the 66% line again (insert_row, move_row)\n treeview1:insert_row end\n treeview1:move_row 1 end" "treeview1:1 clicked" "treeview1:1 6 0 1" "treeview1:1 6 1 -30000" "treeview1:1 6 2 66" "treeview1:1 6 3 -2000000000" "treeview1:1 6 4 4000000000" "treeview1:1 6 5 -2000000000" "treeview1:1 6 6 4000000000" "treeview1:1 6 7 3.141000" "treeview1:1 6 8 3.141000" "treeview1:1 6 9 TEXT" "treeview1:1 6 10 zzz"
421 check 12 "statusbar1:push Click the 66% line again (remove_row)\n treeview1:remove_row 0\n treeview1:remove_row 2" "treeview1:1 clicked" "treeview1:1 4 0 1" "treeview1:1 4 1 -30000" "treeview1:1 4 2 66" "treeview1:1 4 3 -2000000000" "treeview1:1 4 4 4000000000" "treeview1:1 4 5 -2000000000" "treeview1:1 4 6 4000000000" "treeview1:1 4 7 3.141000" "treeview1:1 4 8 3.141000" "treeview1:1 4 9 TEXT" "treeview1:1 4 10 zzz"
422 check 12 "statusbar1:push Click the 66% line once again (move_row)\n treeview1:move_row 0 end" "treeview1:1 clicked" "treeview1:1 3 0 1" "treeview1:1 3 1 -30000" "treeview1:1 3 2 66" "treeview1:1 3 3 -2000000000" "treeview1:1 3 4 4000000000" "treeview1:1 3 5 -2000000000" "treeview1:1 3 6 4000000000" "treeview1:1 3 7 3.141000" "treeview1:1 3 8 3.141000" "treeview1:1 3 9 TEXT" "treeview1:1 3 10 zzz"
423 check 24 "treeview1:remove_row 3" "treeview1:1 clicked" "treeview1:1 3 0 0" "treeview1:1 3 1 0" "treeview1:1 3 2 0" "treeview1:1 3 3 0" "treeview1:1 3 4 0" "treeview1:1 3 5 0" "treeview1:1 3 6 0" "treeview1:1 3 7 0.000000" "treeview1:1 3 8 0.000000" "treeview1:1 3 9 abc" "treeview1:1 3 10 xxx" "treeview1:1 clicked" "treeview1:1 3 0 0" "treeview1:1 3 1 0" "treeview1:1 3 2 0" "treeview1:1 3 3 0" "treeview1:1 3 4 0" "treeview1:1 3 5 0" "treeview1:1 3 6 0" "treeview1:1 3 7 0.000000" "treeview1:1 3 8 0.000000" "treeview1:1 3 9 abc" "treeview1:1 3 10 xxx"
424 check 1 "statusbar1:push Press \"button\" if the 66% line has vanished" "button1:0 clicked"
425 check 12 "statusbar1:push Click the lowest line visible in the scrolled area (scroll)\n treeview1:insert_row 2\n treeview1:insert_row 2\n treeview1:insert_row 2\n treeview1:insert_row 2\n treeview1:insert_row 2\n treeview1:insert_row 2\n treeview1:insert_row 2\n treeview1:insert_row 2\n treeview1:insert_row 2\n treeview1:insert_row 2\n treeview1:insert_row 2\n treeview1:insert_row 2\n treeview1:insert_row 2\n treeview1:insert_row 2\n treeview1:insert_row 2\n treeview1:insert_row 2\n treeview1:insert_row 2\n treeview1:insert_row 2\n treeview1:insert_row 2\n treeview1:insert_row 2\n treeview1:insert_row 2\n treeview1:scroll 24 0" "treeview1:1 clicked" "treeview1:1 24 0 0" "treeview1:1 24 1 0" "treeview1:1 24 2 0" "treeview1:1 24 3 0" "treeview1:1 24 4 0" "treeview1:1 24 5 0" "treeview1:1 24 6 0" "treeview1:1 24 7 0.000000" "treeview1:1 24 8 0.000000" "treeview1:1 24 9 abc" "treeview1:1 24 10 xxx"
426 check 12 "statusbar1:push Click the highest line visible in the scrolled area (scroll)\n treeview1:scroll 1 0" "treeview1:1 clicked" "treeview1:1 1 0 0" "treeview1:1 1 1 3" "treeview1:1 1 2 0" "treeview1:1 1 3 0" "treeview1:1 1 4 0" "treeview1:1 1 5 0" "treeview1:1 1 6 0" "treeview1:1 1 7 0.000000" "treeview1:1 1 8 0.000000" "treeview1:1 1 9 jkl" "treeview1:1 1 10 ZZZ"
428 check 1 "statusbar1:push Click the header of column \"col3\"" "treeviewcolumn3:3 clicked"
430 check 0 "notebook1:set_current_page 1"
431 check 1 "statusbar1:push Press \"send_text\"" "send_text:text some textnetcn"
432 check 1 "statusbar1:push Press \"send_text\" again\n textview1:place_cursor 5\n textview1:insert_at_cursor MORE " "send_text:text some MORE textnetcn"
433 check 1 "statusbar1:push Press \"send_text\" again\n textview1:place_cursor_at_line 1\n textview1:insert_at_cursor ETC " "send_text:text some MORE textnETC etcn"
434 check 1 "statusbar1:push Press \"send_text\" once again\n textview1:delete" "send_text:text"
435 check 1 "statusbar1:push Highlight the lowest visible text line and press \"send_selection\"\n textview1:place_cursor_at_line 1 \ntextview1:insert_at_cursor A\\\\nB\\\\nC\\\\nD\\\\nE\\\\nF\\\\nG\\\\nH\\\\nI\\\\nJ\\\\nK\\\\nL\\\\nM\\\\nN\\\\nO\\\\nP\\\\nQ\\\\nR\\\\nS\\\\nT\\\\nU\\\\nV\\\\nW\\\\nX\\\\nY\\\\nZ\\\\na\\\\nb\\\\nc\\\\nd\\\\ne\\\\nf\\\\ng\\\\nh\\\\ni\\\\nj\\\\nk\\\\nl\\\\nm\\\\nn\\\\no\\\\np\\\\nq\\\\nr\\\\ns\\\\nt\\\\nu\\\\nv\\\\nw\\\\nx\\\\ny\\\\nz \n textview1:place_cursor_at_line 46 \n textview1:scroll_to_cursor" "send_selection:text u"
436 check 1 "statusbar1:push Again, highlight the lowest visible text line and press \"send_selection\"\n textview1:place_cursor end\n textview1:scroll_to_cursor" "send_selection:text z"
437 check 1 "statusbar1:push Highlight the highest visible text line and press \"send_selection\"\n textview1:place_cursor 0 \n textview1:scroll_to_cursor" "send_selection:text A"
438 check 2 "scale1:set_value 10\n scale1:force_cb" "scale1:0 10.000000" "scale1:forced 10.000000"
439 check 2 "statusbar1:push Click \"Open\" in the \"File\" menu and there, click \"OK\"\n open_dialog:set_filename q.png" "open_dialog:file $PWD/q.png" "open_dialog:folder $PWD"
440 check 2 "statusbar1:push Click \"Save As\" in the \"File\" menu and there, click \"OK\"\n save_as_dialog:set_current_name /somewhere/crazy_idea" "save_as_dialog:file /somewhere/crazy_idea" "save_as_dialog:folder"
441 check 1 "statusbar1:push Press the \"button\" which should now be renamed \"OK\"\n button1:set_label OK" "button1:0 clicked"
442 check 1 "statusbar1:push Press the \"togglebutton\" which should now be renamed \"on/off\"\n togglebutton1:set_label on/off" "togglebutton1:0 0"
443 check 1 "statusbar1:push Press the \"checkbutton\" which should now be renamed \"REGISTER\"\n checkbutton1:set_label REGISTER" "checkbutton1:0 1"
444 check 1 "statusbar1:push Press the \"REGISTER\" checkbutton again\n checkbutton1:set_label REGISTER" "checkbutton1:0 0"
445 check 2 "statusbar1:push Press the \"radiobutton\" which should now be renamed \"RADIO\"\n radiobutton2:set_label RADIO" "radiobutton1:0 0" "radiobutton2:0 1"
446 check 1 "statusbar1:push Click the widget whose label font is now Bold Italic 14\n switch1:override_font Bold Italic 14" "switch1:0 1"
447 check 1 "statusbar1:push Click the widget whose label has turned red\n switch1:override_color red" "switch1:0 0"
448 check 1 "statusbar1:push Click the widget whose background has turned yellow\n checkbutton1:override_background_color yellow" "checkbutton1:0 1"
449 check 1 "statusbar1:push Press \"OK\" if font and colors changed in previous steps are back to normal\n switch1:override_font\n switch1:override_color\n checkbutton1:override_background_color" "button1:0 clicked"
450 check 1 "statusbar1:push Press \"OK\" if the \"lorem ipsum dolor ...\" text inside \"frame1\" now reads \"LABEL\"\n label1:set_text LABEL" "button1:0 clicked"
451 check 1 "statusbar1:push Press \"OK\" if the label of the frame around \"LABEL\" now reads \"LOREM IPSUM\"\n frame1:set_label LOREM IPSUM" "button1:0 clicked"
452 check 1 "statusbar1:push Press \"OK\" if the green dot has turned red\n image1:set_from_icon_name gtk-no" "button1:0 clicked"
453 check 1 "statusbar1:push Press \"OK\" if the red dot has turned into a green \"Q\"\n image1:set_from_file q.png" "button1:0 clicked"
454 check 1 "statusbar1:push Select \"FIRST\" from the combobox\n comboboxtext1:prepend_text FIRST" "comboboxtext1:0 FIRST"
455 check 1 "statusbar1:push Select \"LAST\" from the combobox\n comboboxtext1:append_text LAST" "comboboxtext1:0 LAST"
456 check 1 "statusbar1:push Select \"AVERAGE\" from the combobox\n comboboxtext1:insert_text 3 AVERAGE" "comboboxtext1:0 AVERAGE"
457 check 1 "statusbar1:push Select the second entry from the combobox\n comboboxtext1:remove 0" "comboboxtext1:0 def"
458 check 2 "statusbar1:push Click the \"+\" of the spinbutton \n button1:set_label OK" "spinbutton1:0 33.00" "spinbutton1:0 34.00"
459 check 1 "statusbar1:push Click the \"+\" of the spinbutton again \n button1:set_label OK" "spinbutton1:0 35.00"
460 check 1 "statusbar1:push Click the \"+\" of the spinbutton once again \n button1:set_label OK" "spinbutton1:0 36.00"
461 check 1 "statusbar1:push Using the file chooser button (now labelled \"etc\"), select \"File System\" (= \"/\")\n filechooserbutton1:set_filename /etc/" "filechooserbutton1:0 /"
462 check 1 "statusbar1:push Click the font button (now labelled \"Sans Bold 40\"), and then \"Select\"\n fontbutton1:set_font_name Sans Bold 40" "fontbutton1:0 Sans Bold 40"
463 check 1 "statusbar1:push Click the color button (now turned yellow), and then \"Select\"\n colorbutton1:set_color yellow" "colorbutton1:0 rgb(255,255,0)"
464 check 1 "colorbutton1:set_color rgb(0,255,0)\n colorbutton1:force_cb" "colorbutton1:forced rgb(0,255,0)"
465 check 1 "colorbutton1:set_color #00f\n colorbutton1:force_cb" "colorbutton1:forced rgb(0,0,255)"
466 check 1 "colorbutton1:set_color #ffff00000000\n colorbutton1:force_cb" "colorbutton1:forced rgb(255,0,0)"
467 check 1 "colorbutton1:set_color rgba(0,255,0,.5)\n colorbutton1:force_cb" "colorbutton1:forced rgba(0,255,0,0.5)"
468 check 1 "statusbar1:push Press \"OK\" if both 1752-03-13 and 1752-03-14 are marked on the calendar\n calendar1:mark_day 13\n calendar1:mark_day 14" "button1:0 clicked"
469 check 1 "statusbar1:push Press \"OK\" if 1752-03-13 and 1752-03-14 are no longer marked on the calendar\n calendar1:clear_marks" "button1:0 clicked"
470 check 3 "statusbar1:push Double-click on 1752-03-13 in the calendar" "calendar1:0 1752-03-13" "calendar1:0 1752-03-13" "calendar1:3 1752-03-13"
472 check 0 "drawingarea1:rectangle 1 0 0 150 150\n drawingarea1:fill 1\n drawingarea1:refresh"
473 check 0 "drawingarea1:remove 1\n drawingarea1:remove 2\n drawingarea1:remove 3\n drawingarea1:remove 4\n drawingarea1:refresh"
474 check 0 "drawingarea1:rectangle 1 0 0 150 150\n drawingarea1:fill 1\n drawingarea1:refresh"
475 check 0 "drawingarea1:arc 1 80 80 60 30 60\n drawingarea1:set_source_rgba 1 red\n drawingarea1:stroke_preserve 1\n drawingarea1:line_to 1 80 80\n drawingarea1:fill 1\n drawingarea1:refresh"
476 check 0 "drawingarea1:arc_negative 1 80 80 70 30 60\n drawingarea1:set_source_rgba 1 green\n drawingarea1:stroke_preserve 1\n drawingarea1:rel_line_to 1 -50 -50\n drawingarea1:stroke 1\n drawingarea1:refresh"
477 check 0 "drawingarea1:curve_to 1 30 30 90 120 120 30\n drawingarea1:set_source_rgba 1 blue\n drawingarea1:stroke 1\n drawingarea1:refresh"
478 check 0 "drawingarea1:move_to 1 160 160\n drawingarea1:rel_curve_to 1 30 30 90 120 120 30\n drawingarea1:set_source_rgba 1 orange\n drawingarea1:stroke_preserve 1\n drawingarea1:refresh"
479 check 0 "drawingarea1:move_to 1 0 0\n drawingarea1:rel_move_to 1 0 155\n drawingarea1:rel_line_to 1 300 0\n drawingarea1:set_dash 1 10\n drawingarea1:stroke 1"
480 check 0 "drawingarea1:move_to 1 0 160\n drawingarea1:rel_line_to 1 300 0\n drawingarea1:set_dash 1 20 5\n drawingarea1:stroke 1"
481 check 0 "drawingarea1:move_to 1 0 165\n drawingarea1:rel_line_to 1 300 0\n drawingarea1:set_dash 1 5 20\n drawingarea1:stroke 1"
482 check 0 "drawingarea1:move_to 1 0 170\n drawingarea1:rel_line_to 1 300 0\n drawingarea1:set_dash 1 3 3 3 3 3 15\n drawingarea1:stroke 1"
483 check 0 "drawingarea1:refresh\n drawingarea1:set_dash 1"
484 check 0 "drawingarea1:set_source_rgba 1 brown\n drawingarea1:set_line_width 1 15"
485 check 1 "statusbar1:push Press \"OK\" if the brown shape is rounded\n drawingarea1:set_line_join 2 round\n drawingarea1:set_line_cap 2 round\n drawingarea1:move_to 1 160 20\n drawingarea1:rel_line_to 1 20 0\n drawingarea1:rel_line_to 1 0 20\n drawingarea1:stroke 1\n drawingarea1:refresh" "button1:0 clicked"
486 check 1 "statusbar1:push Press \"OK\" if the second brown shape is shorter and bevelled\n drawingarea1:set_line_join 3 bevel\n drawingarea1:set_line_cap 3 butt\n drawingarea1:move_to 1 160 70\n drawingarea1:rel_line_to 1 20 0\n drawingarea1:rel_line_to 1 0 20\n drawingarea1:stroke 1\n drawingarea1:refresh" "button1:0 clicked"
487 check 1 "statusbar1:push Press \"OK\" if the third brown shape is square\n drawingarea1:set_line_join 3 miter\n drawingarea1:set_line_cap 3 square\n drawingarea1:move_to 1 160 120\n drawingarea1:rel_line_to 1 20 0\n drawingarea1:rel_line_to 1 0 20\n drawingarea1:stroke 1\n drawingarea1:refresh" "button1:0 clicked"
488 check 1 "statusbar1:push Press \"OK\" if the first brown shape is no longer rounded\n drawingarea1:remove 2\n drawingarea1:refresh" "button1:0 clicked"
489 check 1 "statusbar1:push Press \"OK\" if all three brown shapes look the same\n drawingarea1:remove 3\n drawingarea1:refresh" "button1:0 clicked"
490 check 0 "drawingarea1:move_to 5 50 50\n drawingarea1:line_to 5 200 10\n drawingarea1:line_to 5 150 200\n drawingarea1:close_path 1\n drawingarea1:set_source_rgba 5 rgba(0,255,0,.2)\n drawingarea1:fill_preserve 1\n drawingarea1:refresh"
491 check 0 "drawingarea1:move_to 5 10 50\n drawingarea1:set_source_rgba 5 cyan\n drawingarea1:set_font_size 5 30\n drawingarea1:show_text 5 Xyz\n drawingarea1:set_font_size 5 10\n drawingarea1:show_text 5 Abc\n drawingarea1:refresh"
492 check 0 "drawingarea1:remove 1\n drawingarea1:remove 2\n drawingarea1:remove 3\n drawingarea1:remove 4\n drawingarea1:refresh"
494 check 0 "drawingarea2:rectangle 1 0 0 150 150\n drawingarea2:fill 1\n drawingarea2:refresh"
495 check 0 "drawingarea2:arc 1 80 80 60 30 60\n drawingarea2:set_source_rgba 1 red\n drawingarea2:stroke_preserve 1\n drawingarea2:line_to 1 80 80\n drawingarea2:fill 1\n drawingarea2:refresh"
496 check 0 "drawingarea2:arc_negative 1 80 80 70 30 60\n drawingarea2:set_source_rgba 1 green\n drawingarea2:stroke_preserve 1\n drawingarea2:rel_line_to 1 -50 -50\n drawingarea2:stroke 1\n drawingarea2:refresh"
497 check 0 "drawingarea2:curve_to 1 30 30 90 120 120 30\n drawingarea2:set_source_rgba 1 blue\n drawingarea2:stroke 1\n drawingarea2:refresh"
498 check 0 "drawingarea2:move_to 1 160 160\n drawingarea2:rel_curve_to 1 30 30 90 120 120 30\n drawingarea2:set_source_rgba 1 orange\n drawingarea2:stroke_preserve 1\n drawingarea2:refresh"
499 check 0 "drawingarea2:move_to 1 0 0\n drawingarea2:rel_move_to 1 0 155\n drawingarea2:rel_line_to 1 300 0\n drawingarea2:set_dash 1 10\n drawingarea2:stroke 1"
500 check 0 "drawingarea2:move_to 1 0 160\n drawingarea2:rel_line_to 1 300 0\n drawingarea2:set_dash 1 20 5\n drawingarea2:stroke 1"
501 check 0 "drawingarea2:move_to 1 0 165\n drawingarea2:rel_line_to 1 300 0\n drawingarea2:set_dash 1 5 20\n drawingarea2:stroke 1"
502 check 0 "drawingarea2:move_to 1 0 170\n drawingarea2:rel_line_to 1 300 0\n drawingarea2:set_dash 1 3 3 3 3 3 15\n drawingarea2:stroke 1"
503 check 0 "drawingarea2:refresh\n drawingarea2:set_dash 1"
504 check 0 "drawingarea2:set_source_rgba 1 brown\n drawingarea2:set_line_width 1 15"
505 check 0 "drawingarea2:set_line_cap 2 round\n drawingarea2:move_to 1 160 20\n drawingarea2:rel_line_to 1 20 0\n drawingarea2:rel_line_to 1 0 20\n drawingarea2:stroke 1\n drawingarea2:refresh"
506 check 0 "drawingarea2:set_line_join 3 bevel\n drawingarea2:set_line_cap 3 butt\n drawingarea2:move_to 1 160 70\n drawingarea2:rel_line_to 1 20 0\n drawingarea2:rel_line_to 1 0 20\n drawingarea2:stroke 1\n drawingarea2:refresh"
507 check 0 "drawingarea2:set_line_join 3 miter\n drawingarea2:set_line_cap 3 square\n drawingarea2:move_to 1 160 120\n drawingarea2:rel_line_to 1 20 0\n drawingarea2:rel_line_to 1 0 20\n drawingarea2:stroke 1\n drawingarea2:refresh"
508 check 0 "drawingarea2:remove 2\n drawingarea2:refresh"
509 check 0 "drawingarea2:remove 3\n drawingarea2:refresh"
511 check 1 "statusbar1:push Press \"OK\" if there is a spinning spinner\n spinner1:start" "button1:0 clicked"
512 check 1 "statusbar1:push Press \"OK\" if the spinner has stopped\n spinner1:stop" "button1:0 clicked"
513 check 1 "statusbar1:push Press \"OK\" if there is now a \"Disconnect\" button\n button2:set_visible 1\n button2:set_sensitive 0" "button1:0 clicked"
514 check 1 "statusbar1:push Press \"Disconnect\"\n button2:set_sensitive 1" "button2:1 clicked"
515 check 1 "statusbar1:push Press \"OK\" if the window title is now \"ALMOST DONE\"\n window:set_title ALMOST DONE" "button1:0 clicked"
516 check 1 "statusbar1:push Press \"OK\" if the progress bar shows 90%\n progressbar1:set_fraction .9" "button1:0 clicked"
517 check 1 "statusbar1:push Press \"OK\" if the progress bar text reads \"The End\"\n progressbar1:set_text The End" "button1:0 clicked"
518 check 1 "statusbar1:push Press \"No\"\n statusbar1:push nonsense 1\n statusbar1:push nonsense 2\n statusbar1:push nonsense 3\n statusbar1:pop\n statusbar1:pop\n statusbar1:pop" "no_button:0 clicked"
520 echo "_:main_quit" >$FIN
522 sleep .5
523 check_rm $FIN
524 check_rm $FOUT
527 echo "PASSED: $OKS/$TESTS; FAILED: $FAILS/$TESTS"