1
2 /* Function prototypes */
3 #include "tests.h"
4 #include "appdata.h"
5 #include "timing.h"
6 #include "callbacks.h"
7
8 gboolean
on_idle(gpointer data)9 on_idle (gpointer data)
10 {
11 AppData *appdata = NULL;
12 appdata = (AppData *) data;
13
14 /* remove this idle handle */
15 g_source_remove (appdata->idle_id);
16 appdata->idle_id = 0;
17
18 /* record start time */
19 appdata->time_start_all = get_time ();
20
21 /* Perform test type loop */
22 perform_test_type (appdata);
23
24 return TRUE;
25 }
26
27 void
toggle_test_count(AppData * appdata)28 toggle_test_count (AppData * appdata)
29 {
30
31 if (appdata->test_count > 0)
32 {
33 appdata->test_count--;
34 }
35 else
36 {
37
38
39 /* report time taken to test */
40 add_test_info_time (appdata);
41 g_source_remove (appdata->test_idle_id);
42
43 /* jump away it only one test was selected */
44 if (appdata->test_only_one)
45 {
46 appdata->test_type = 99;
47 }
48 else
49 {
50 appdata->test_type++;
51 appdata->test_count = appdata->test_count_selected;
52 appdata->test_state_data = 0;
53 }
54
55 perform_test_type (appdata);
56 }
57 }
58
59
60 /**
61 * Callback for gtkentry test.
62 * @param data user data.
63 */
64 gboolean
on_idle_gtkentry_test(gpointer data)65 on_idle_gtkentry_test (gpointer data)
66 {
67
68 AppData *appdata = NULL;
69 appdata = (AppData *) data;
70
71 if ((appdata->test_count % 2) != 0)
72 {
73 gtk_entry_set_text (GTK_ENTRY (appdata->entry_entrys),
74 "Test String");
75
76 }
77 else
78 {
79 gtk_entry_set_text (GTK_ENTRY (appdata->entry_entrys),
80 "Longer test string");
81 }
82
83 /* Check if test counter is up */
84 toggle_test_count (appdata);
85
86 return TRUE;
87 }
88
89
90 /**
91 * Callback for gtkcombobox test.
92 * @param data user data.
93 */
94 gboolean
on_idle_gtkcombobox_test(gpointer data)95 on_idle_gtkcombobox_test (gpointer data)
96 {
97
98 AppData *appdata = NULL;
99 appdata = (AppData *) data;
100
101 if ((appdata->test_count % 2) != 0)
102 {
103 gtk_combo_box_popup (GTK_COMBO_BOX
104 (appdata->combobox_entrys));
105 gtk_combo_box_set_active (GTK_COMBO_BOX
106 (appdata->combobox_entrys),
107 appdata->test_state_data);
108
109 }
110 else
111 {
112 gtk_combo_box_popdown (GTK_COMBO_BOX
113 (appdata->combobox_entrys));
114
115 appdata->test_state_data++;
116 if (appdata->test_state_data > 9)
117 {
118 appdata->test_state_data = 0;
119 }
120 }
121
122 /* Check if test counter is up */
123 toggle_test_count (appdata);
124
125 return TRUE;
126 }
127
128
129 /**
130 * Callback for gtkcomboboxentry test.
131 * @param data user data.
132 */
133 gboolean
on_idle_gtkcomboboxentry_test(gpointer data)134 on_idle_gtkcomboboxentry_test (gpointer data)
135 {
136 AppData *appdata = NULL;
137 appdata = (AppData *) data;
138
139 if ((appdata->test_count % 2) != 0)
140 {
141 gtk_combo_box_popup (GTK_COMBO_BOX
142 (appdata->comboboxentry_entrys));
143 gtk_combo_box_set_active (GTK_COMBO_BOX
144 (appdata->comboboxentry_entrys),
145 appdata->test_state_data);
146
147 }
148 else
149 {
150 gtk_combo_box_popdown (GTK_COMBO_BOX
151 (appdata->comboboxentry_entrys));
152
153 appdata->test_state_data++;
154 if (appdata->test_state_data > 9)
155 {
156 appdata->test_state_data = 0;
157 }
158 }
159
160 /* Check if test counter is up */
161 toggle_test_count (appdata);
162
163 return TRUE;
164 }
165
166
167 /**
168 * Callback for gtkspinbutton test.
169 * @param data user data.
170 */
171 gboolean
on_idle_gtkspinbutton_test(gpointer data)172 on_idle_gtkspinbutton_test (gpointer data)
173 {
174 AppData *appdata = NULL;
175 appdata = (AppData *) data;
176
177 gtk_spin_button_spin (GTK_SPIN_BUTTON (appdata->spinbutton_entrys),
178 GTK_SPIN_STEP_FORWARD, 1);
179
180 appdata->test_state_data++;
181 if (appdata->test_state_data > 999)
182 {
183 appdata->test_state_data = 0;
184 }
185
186 /* Check if test counter is up */
187 toggle_test_count (appdata);
188
189 return TRUE;
190 }
191
192
193 /**
194 * Callback for gtkprogressbar test.
195 * @param data user data.
196 */
197 gboolean
on_idle_gtkprogressbar_test(gpointer data)198 on_idle_gtkprogressbar_test (gpointer data)
199 {
200 AppData *appdata = NULL;
201 appdata = (AppData *) data;
202
203 gdouble progress = (1 - ((appdata->test_count % 100) / 100.0));
204 gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR
205 (appdata->progressbar_entrys),
206 progress);
207
208 appdata->test_state_data++;
209 if (appdata->test_state_data > 999)
210 {
211 appdata->test_state_data = 0;
212 }
213
214 /* Check if test counter is up */
215 toggle_test_count (appdata);
216
217 return TRUE;
218 }
219
220
221 /**
222 * Callback for gtktogglebutton test.
223 * @param data user data.
224 */
225 gboolean
on_idle_gtktogglebutton_test(gpointer data)226 on_idle_gtktogglebutton_test (gpointer data)
227 {
228 AppData *appdata = NULL;
229 appdata = (AppData *) data;
230
231 if ((appdata->test_count % 2) != 0)
232 {
233 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
234 (appdata->togglebutton_buttons),
235 TRUE);
236 }
237 else
238 {
239 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
240 (appdata->togglebutton_buttons),
241 FALSE);
242 }
243
244 /* Check if test counter is up */
245 toggle_test_count (appdata);
246
247 return TRUE;
248 }
249
250 /**
251 * Callback for gtkcheckbutton test.
252 * @param data user data.
253 */
254 gboolean
on_idle_gtkcheckbutton_test(gpointer data)255 on_idle_gtkcheckbutton_test (gpointer data)
256 {
257 AppData *appdata = NULL;
258 appdata = (AppData *) data;
259
260 if ((appdata->test_count % 2) != 0)
261 {
262 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
263 (appdata->checkbutton_buttons),
264 TRUE);
265 }
266 else
267 {
268 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
269 (appdata->checkbutton_buttons),
270 FALSE);
271 }
272
273 /* Check if test counter is up */
274 toggle_test_count (appdata);
275
276 return TRUE;
277 }
278
279 /**
280 * Callback for gtkradiobutton test.
281 * @param data user data.
282 */
283 gboolean
on_idle_gtkradiobutton_test(gpointer data)284 on_idle_gtkradiobutton_test (gpointer data)
285 {
286 AppData *appdata = NULL;
287 appdata = (AppData *) data;
288
289 if ((appdata->test_count % 2) != 0)
290 {
291 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
292 (appdata->
293 radiobutton_buttons_1), TRUE);
294 }
295 else
296 {
297 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
298 (appdata->
299 radiobutton_buttons_2), TRUE);
300 }
301
302 /* Check if test counter is up */
303 toggle_test_count (appdata);
304
305 return TRUE;
306 }
307
308
309 /**
310 * Callback for gtktextview add text test.
311 * @param data user data.
312 */
313 gboolean
on_idle_gtktextview_addtext_test(gpointer data)314 on_idle_gtktextview_addtext_test (gpointer data)
315 {
316 AppData *appdata = NULL;
317 appdata = (AppData *) data;
318
319 GtkTextIter iter;
320 gtk_text_buffer_get_end_iter (appdata->textview_text_buffer, &iter);
321 gtk_text_buffer_insert (appdata->textview_text_buffer, &iter,
322 "Future is Open. ", -1);
323
324 /* Check if test counter is up */
325 toggle_test_count (appdata);
326
327 return TRUE;
328 }
329
330
331 /**
332 * Callback for gtktexview scroll test.
333 * @param data user data.
334 */
335 gboolean
on_idle_gtktextview_scroll_test(gpointer data)336 on_idle_gtktextview_scroll_test (gpointer data)
337 {
338
339 AppData *appdata = NULL;
340 appdata = (AppData *) data;
341
342 GtkRange *range;
343 gdouble before, after;
344
345 range = GTK_RANGE (GTK_SCROLLED_WINDOW
346 (appdata->scrolledwindow_text)->vscrollbar);
347
348 before = gtk_range_get_value (range);
349 g_signal_emit_by_name (range, "move-slider",
350 appdata->textview_text_scroll_type);
351 after = gtk_range_get_value (range);
352
353 /* if movement didn't work, change direction */
354 if (before == after)
355 {
356 appdata->textview_text_scroll_type =
357 (appdata->textview_text_scroll_type ==
358 GTK_SCROLL_STEP_FORWARD) ? GTK_SCROLL_STEP_BACKWARD :
359 GTK_SCROLL_STEP_FORWARD;
360 }
361
362 /* Check if test counter is up */
363 toggle_test_count (appdata);
364
365 return TRUE;
366 }
367
368
369 /**
370 * Callback for gtkdrawingarea line test.
371 * @param data user data.
372 */
373 gboolean
on_idle_gtkdrawingarea_lines_test(gpointer data)374 on_idle_gtkdrawingarea_lines_test (gpointer data)
375 {
376
377 AppData *appdata = NULL;
378 appdata = (AppData *) data;
379
380 int i = 0;
381
382 /* create graphical context */
383 appdata->graphical_context =
384 gdk_gc_new (appdata->drawingarea_drawing->window);
385
386 /* drawing lines is so fast that we'll make 1000 in one loop */
387 /* just remember to show this in results! */
388 for (i = 0; i < 1000; i++)
389 {
390
391 set_random_drawing_color ();
392
393 gint x1 = g_random_int_range (0,
394 appdata->drawingarea_drawing->
395 allocation.width);
396 gint x2 = g_random_int_range (0,
397 appdata->drawingarea_drawing->
398 allocation.width);
399 gint y1 = g_random_int_range (0,
400 appdata->drawingarea_drawing->
401 allocation.height);
402 gint y2 = g_random_int_range (0,
403 appdata->drawingarea_drawing->
404 allocation.height);
405
406 gdk_draw_line (appdata->drawingarea_drawing->window,
407 appdata->graphical_context, x1, y1, x2, y2);
408 }
409
410
411 gdk_gc_destroy (appdata->graphical_context);
412
413 /* Check if test counter is up */
414 toggle_test_count (appdata);
415
416 return TRUE;
417 }
418
419
420 /**
421 * Callback for gtkdrawingarea circle test.
422 * @param data user data.
423 */
424 gboolean
on_idle_gtkdrawingarea_circles_test(gpointer data)425 on_idle_gtkdrawingarea_circles_test (gpointer data)
426 {
427
428 AppData *appdata = NULL;
429 appdata = (AppData *) data;
430
431 int i = 0;
432
433 /* create graphical context */
434 appdata->graphical_context =
435 gdk_gc_new (appdata->drawingarea_drawing->window);
436
437 /* drawing circles is so fast that we'll make 1000 in one loop */
438 /* just remember to show this in results! */
439 for (i = 0; i < 1000; i++)
440 {
441
442 set_random_drawing_color ();
443
444 gint x = g_random_int_range (0,
445 appdata->drawingarea_drawing->
446 allocation.width);
447 gint y = g_random_int_range (0,
448 appdata->drawingarea_drawing->
449 allocation.height);
450 gint width = g_random_int_range (0, 100);
451 gint height = g_random_int_range (0, 100);
452
453 gdk_draw_arc (appdata->drawingarea_drawing->window,
454 appdata->graphical_context, TRUE,
455 x, y, width, height, 0, 360 * 64);
456
457 }
458
459 gdk_gc_destroy (appdata->graphical_context);
460
461 /* Check if test counter is up */
462 toggle_test_count (appdata);
463
464 return TRUE;
465 }
466
467
468
469 /**
470 * Callback for gtkdrawingarea text test.
471 * @param data user data.
472 */
473 gboolean
on_idle_gtkdrawingarea_text_test(gpointer data)474 on_idle_gtkdrawingarea_text_test (gpointer data)
475 {
476
477 AppData *appdata = NULL;
478 appdata = (AppData *) data;
479
480 int i = 0;
481
482 /* create graphical context */
483 appdata->graphical_context =
484 gdk_gc_new (appdata->drawingarea_drawing->window);
485
486 PangoLayout *layout;
487 PangoFontDescription *fontdesc;
488 layout = gtk_widget_create_pango_layout (appdata->drawingarea_drawing,
489 "Future is Open.");
490 fontdesc = pango_font_description_from_string ("Sans Bold 16");
491 pango_layout_set_font_description (layout, fontdesc);
492
493 /* drawing text is so fast that we'll make 100 in one loop */
494 /* just remember to show this in results! */
495 for (i = 0; i < 100; i++)
496 {
497
498 set_random_drawing_color ();
499
500 gint x = g_random_int_range (0,
501 appdata->drawingarea_drawing->
502 allocation.width);
503 gint y = g_random_int_range (0,
504 appdata->drawingarea_drawing->
505 allocation.height);
506
507
508 gdk_draw_layout (appdata->drawingarea_drawing->window,
509 appdata->graphical_context, x, y, layout);
510
511 }
512
513 pango_font_description_free (fontdesc);
514 g_object_unref (layout);
515
516 gdk_gc_destroy (appdata->graphical_context);
517
518 /* Check if test counter is up */
519 toggle_test_count (appdata);
520
521 return TRUE;
522 }
523
524
525 /**
526 * Callback for gtkdrawingarea pixbuf test.
527 * @param data user data.
528 */
529 gboolean
on_idle_gtkdrawingarea_pixbufs_test(gpointer data)530 on_idle_gtkdrawingarea_pixbufs_test (gpointer data)
531 {
532
533 AppData *appdata = NULL;
534 appdata = (AppData *) data;
535
536 int i = 0;
537
538 /* drawing pixbufs is so fast that we'll make 10 in one loop */
539 /* just remember to show this in results! */
540 for (i = 0; i < 10; i++)
541 {
542
543 gint x = g_random_int_range (-10,
544 appdata->drawingarea_drawing->
545 allocation.width);
546 gint y = g_random_int_range (-10,
547 appdata->drawingarea_drawing->
548 allocation.height);
549
550 gdk_draw_pixbuf (appdata->drawingarea_drawing->window,
551 NULL, appdata->pixbuf_drawing,
552 0, 0,
553 x, y, -1, -1, GDK_RGB_DITHER_NONE, 0, 0);
554 }
555
556 /* Check if test counter is up */
557 toggle_test_count (appdata);
558
559 return TRUE;
560 }
561