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