1 /* ADG - Automatic Drawing Generation
2 * Copyright (C) 2007-2021 Nicola Fontana <ntd at entidi.it>
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the
16 * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17 * Boston, MA 02110-1301, USA.
27 _adg_gtk_area_new(void)
32 canvas
= adg_test_canvas();
33 area
= ADG_GTK_AREA(adg_gtk_area_new_with_canvas(canvas
));
34 g_object_unref(canvas
);
40 _adg_behavior_translation(void)
44 GdkEventMotion event_motion
;
45 GdkEventButton event_button
;
47 const cairo_matrix_t
*map
;
49 area
= _adg_gtk_area_new();
50 canvas
= adg_gtk_area_get_canvas(area
);
52 /* Translating requires an arranged canvas */
53 adg_entity_arrange(ADG_ENTITY(canvas
));
55 /* Translating (local space) */
56 map
= adg_entity_get_local_map(ADG_ENTITY(canvas
));
57 adg_assert_isapprox(map
->x0
, 0);
58 adg_assert_isapprox(map
->y0
, 0);
60 event_button
.type
= GDK_BUTTON_PRESS
;
61 event_button
.button
= 2;
64 g_signal_emit_by_name(area
, "button-press-event", &event_button
, NULL
, &stop
);
66 event_motion
.type
= GDK_MOTION_NOTIFY
;
67 event_motion
.state
= GDK_BUTTON2_MASK
;
70 g_signal_emit_by_name(area
, "motion-notify-event", &event_motion
, NULL
, &stop
);
71 map
= adg_entity_get_local_map(ADG_ENTITY(canvas
));
72 adg_assert_isapprox(map
->x0
, 90);
73 adg_assert_isapprox(map
->y0
, 180);
75 /* Translating (global space) */
76 map
= adg_gtk_area_get_render_map(area
);
77 adg_assert_isapprox(map
->x0
, 0);
78 adg_assert_isapprox(map
->y0
, 0);
82 g_signal_emit_by_name(area
, "button-press-event", &event_button
, NULL
, &stop
);
84 event_motion
.state
|= GDK_SHIFT_MASK
;
87 g_signal_emit_by_name(area
, "motion-notify-event", &event_motion
, NULL
, &stop
);
88 map
= adg_gtk_area_get_render_map(area
);
89 adg_assert_isapprox(map
->x0
, 270);
90 adg_assert_isapprox(map
->y0
, 360);
92 gtk_widget_destroy(GTK_WIDGET(area
));
96 _adg_property_canvas(void)
99 AdgCanvas
*valid_canvas
, *invalid_canvas
, *canvas
;
101 area
= ADG_GTK_AREA(adg_gtk_area_new());
102 valid_canvas
= adg_canvas_new();
103 invalid_canvas
= adg_test_invalid_pointer();
105 g_object_ref(valid_canvas
);
107 /* Using the public APIs */
108 adg_test_signal(area
, "canvas-changed");
109 adg_gtk_area_set_canvas(area
, NULL
);
110 g_assert_false(adg_test_signal_check(FALSE
));
111 canvas
= adg_gtk_area_get_canvas(area
);
112 g_assert_null(canvas
);
114 adg_gtk_area_set_canvas(area
, valid_canvas
);
115 g_assert_true(adg_test_signal_check(FALSE
));
116 canvas
= adg_gtk_area_get_canvas(area
);
117 g_assert_true(canvas
== valid_canvas
);
119 adg_gtk_area_set_canvas(area
, invalid_canvas
);
120 g_assert_false(adg_test_signal_check(FALSE
));
121 canvas
= adg_gtk_area_get_canvas(area
);
122 g_assert_true(canvas
== valid_canvas
);
124 /* Setting the canvas to NULL is a valid operation
125 * and means to unset the canvas */
126 adg_gtk_area_set_canvas(area
, NULL
);
127 g_assert_true(adg_test_signal_check(FALSE
));
129 /* Resetting the same value is a no-op */
130 adg_gtk_area_set_canvas(area
, NULL
);
131 g_assert_false(adg_test_signal_check(FALSE
));
132 canvas
= adg_gtk_area_get_canvas(area
);
133 g_assert_null(canvas
);
135 /* Using GObject property methods */
136 g_object_set(area
, "canvas", NULL
, NULL
);
137 g_assert_false(adg_test_signal_check(FALSE
));
138 g_object_get(area
, "canvas", &canvas
, NULL
);
139 g_assert_null(canvas
);
141 g_object_set(area
, "canvas", valid_canvas
, NULL
);
142 g_assert_true(adg_test_signal_check(FALSE
));
143 g_object_get(area
, "canvas", &canvas
, NULL
);
144 g_assert_true(canvas
== valid_canvas
);
145 adg_entity_destroy(ADG_ENTITY(canvas
));
147 g_object_set(area
, "canvas", invalid_canvas
, NULL
);
148 g_assert_false(adg_test_signal_check(FALSE
));
149 g_object_get(area
, "canvas", &canvas
, NULL
);
150 g_assert_true(canvas
== valid_canvas
);
151 adg_entity_destroy(ADG_ENTITY(canvas
));
153 g_object_set(area
, "canvas", NULL
, NULL
);
154 g_assert_true(adg_test_signal_check(TRUE
));
155 g_object_get(area
, "canvas", &canvas
, NULL
);
156 g_assert_null(canvas
);
158 adg_gtk_area_set_canvas(area
, valid_canvas
);
159 gtk_widget_destroy(GTK_WIDGET(area
));
160 adg_entity_destroy(ADG_ENTITY(valid_canvas
));
164 _adg_property_factor(void)
167 gdouble valid_factor1
, valid_factor2
, invalid_factor
, factor
;
169 area
= ADG_GTK_AREA(adg_gtk_area_new());
172 invalid_factor
= 0.5;
174 /* Using the public APIs */
175 adg_gtk_area_set_factor(area
, valid_factor1
);
176 factor
= adg_gtk_area_get_factor(area
);
177 adg_assert_isapprox(factor
, valid_factor1
);
179 adg_gtk_area_set_factor(area
, invalid_factor
);
180 factor
= adg_gtk_area_get_factor(area
);
181 adg_assert_isapprox(factor
, valid_factor1
);
183 adg_gtk_area_set_factor(area
, valid_factor2
);
184 factor
= adg_gtk_area_get_factor(area
);
185 adg_assert_isapprox(factor
, valid_factor2
);
187 /* Using GObject property methods */
188 g_object_set(area
, "factor", valid_factor1
, NULL
);
189 g_object_get(area
, "factor", &factor
, NULL
);
190 adg_assert_isapprox(factor
, valid_factor1
);
192 g_object_set(area
, "factor", invalid_factor
, NULL
);
193 g_object_get(area
, "factor", &factor
, NULL
);
194 adg_assert_isapprox(factor
, valid_factor1
);
196 g_object_set(area
, "factor", valid_factor2
, NULL
);
197 g_object_get(area
, "factor", &factor
, NULL
);
198 adg_assert_isapprox(factor
, valid_factor2
);
200 gtk_widget_destroy(GTK_WIDGET(area
));
204 _adg_property_autozoom(void)
207 gboolean invalid_boolean
;
208 gboolean has_autozoom
;
210 area
= (AdgGtkArea
*) adg_gtk_area_new();
211 invalid_boolean
= (gboolean
) 1234;
213 /* Using the public APIs */
214 adg_gtk_area_switch_autozoom(area
, FALSE
);
215 has_autozoom
= adg_gtk_area_has_autozoom(area
);
216 g_assert_false(has_autozoom
);
218 adg_gtk_area_switch_autozoom(area
, invalid_boolean
);
219 has_autozoom
= adg_gtk_area_has_autozoom(area
);
220 g_assert_false(has_autozoom
);
222 adg_gtk_area_switch_autozoom(area
, TRUE
);
223 has_autozoom
= adg_gtk_area_has_autozoom(area
);
224 g_assert_true(has_autozoom
);
226 /* Using GObject property methods */
227 g_object_set(area
, "autozoom", invalid_boolean
, NULL
);
228 g_object_get(area
, "autozoom", &has_autozoom
, NULL
);
229 g_assert_true(has_autozoom
);
231 g_object_set(area
, "autozoom", FALSE
, NULL
);
232 g_object_get(area
, "autozoom", &has_autozoom
, NULL
);
233 g_assert_false(has_autozoom
);
235 g_object_set(area
, "autozoom", TRUE
, NULL
);
236 g_object_get(area
, "autozoom", &has_autozoom
, NULL
);
237 g_assert_true(has_autozoom
);
239 gtk_widget_destroy(GTK_WIDGET(area
));
243 _adg_property_render_map(void)
246 const cairo_matrix_t
*identity_map
;
247 cairo_matrix_t null_map
, dummy_map
;
248 const cairo_matrix_t
*render_map
;
249 cairo_matrix_t
*render_map_dup
;
251 area
= ADG_GTK_AREA(adg_gtk_area_new());
252 identity_map
= adg_matrix_identity();
254 /* A null map is a kind of degenerated matrix: it must be
255 * treated as valid value by the API */
256 cairo_matrix_init(&null_map
, 0, 0, 0, 0, 0, 0);
257 /* A general purpose map value without translations */
258 cairo_matrix_init(&dummy_map
, 1, 2, 3, 4, 0, 0);
260 /* Using the public APIs */
261 adg_gtk_area_set_render_map(area
, &null_map
);
262 render_map
= adg_gtk_area_get_render_map(area
);
263 g_assert_true(adg_matrix_equal(render_map
, &null_map
));
265 adg_gtk_area_transform_render_map(area
, &dummy_map
, ADG_TRANSFORM_AFTER
);
266 render_map
= adg_gtk_area_get_render_map(area
);
267 g_assert_true(adg_matrix_equal(render_map
, &null_map
));
269 adg_gtk_area_set_render_map(area
, identity_map
);
270 render_map
= adg_gtk_area_get_render_map(area
);
271 g_assert_true(adg_matrix_equal(render_map
, identity_map
));
273 adg_gtk_area_set_render_map(area
, NULL
);
274 render_map
= adg_gtk_area_get_render_map(area
);
275 g_assert_true(adg_matrix_equal(render_map
, identity_map
));
277 adg_gtk_area_transform_render_map(area
, &dummy_map
, ADG_TRANSFORM_BEFORE
);
278 render_map
= adg_gtk_area_get_render_map(area
);
279 g_assert_true(adg_matrix_equal(render_map
, &dummy_map
));
281 /* Using GObject property methods */
282 g_object_set(area
, "render-map", &null_map
, NULL
);
283 g_object_get(area
, "render-map", &render_map_dup
, NULL
);
284 g_assert_true(adg_matrix_equal(render_map_dup
, &null_map
));
285 g_free(render_map_dup
);
287 g_object_set(area
, "render-map", NULL
, NULL
);
288 g_object_get(area
, "render-map", &render_map_dup
, NULL
);
289 g_assert_true(adg_matrix_equal(render_map_dup
, &null_map
));
290 g_free(render_map_dup
);
292 g_object_set(area
, "render-map", identity_map
, NULL
);
293 g_object_get(area
, "render-map", &render_map_dup
, NULL
);
294 g_assert_true(adg_matrix_equal(render_map_dup
, identity_map
));
295 g_free(render_map_dup
);
297 gtk_widget_destroy(GTK_WIDGET(area
));
301 _adg_method_get_extents(void)
304 const CpmlExtents
*extents
;
307 area
= ADG_GTK_AREA(adg_gtk_area_new());
308 canvas
= adg_test_canvas();
311 g_assert_null(adg_gtk_area_get_extents(NULL
));
313 /* With no canvas, the extents should be undefined */
314 extents
= adg_gtk_area_get_extents(area
);
315 g_assert_false(extents
->is_defined
);
317 adg_gtk_area_set_canvas(area
, canvas
);
318 g_object_unref(canvas
);
319 extents
= adg_gtk_area_get_extents(area
);
320 g_assert_true(extents
->is_defined
);
321 adg_assert_isapprox(extents
->org
.x
, 0);
322 adg_assert_isapprox(extents
->org
.y
, 0);
323 adg_assert_isapprox(extents
->size
.x
, 1);
324 adg_assert_isapprox(extents
->size
.y
, 1);
326 gtk_widget_destroy(GTK_WIDGET(area
));
330 _adg_method_get_zoom(void)
335 area
= ADG_GTK_AREA(adg_gtk_area_new());
336 canvas
= adg_test_canvas();
339 adg_assert_isapprox(adg_gtk_area_get_zoom(NULL
), 0);
341 adg_assert_isapprox(adg_gtk_area_get_zoom(area
), 1);
343 adg_gtk_area_set_canvas(area
, canvas
);
344 g_object_unref(canvas
);
345 adg_assert_isapprox(adg_gtk_area_get_zoom(area
), 1);
347 gtk_widget_destroy(GTK_WIDGET(area
));
351 _adg_method_switch_autozoom(void)
354 GtkAllocation allocation
;
356 area
= _adg_gtk_area_new();
357 allocation
.width
= 100;
358 allocation
.height
= 100;
360 /* Allocation does not work if the widget is not visible: without a
361 * top-level this will hopefully do not require an X server running */
362 gtk_widget_show(GTK_WIDGET(area
));
364 /* Without autozoom the zoom factor is left to 1 */
365 gtk_widget_size_allocate(GTK_WIDGET(area
), &allocation
);
366 adg_assert_isapprox(adg_gtk_area_get_zoom(area
), 1);
368 /* The allocation phase is one-shot, so I must destroy and recreate
369 * the AdgGtkArea widget every time to trigger the size allocation */
370 gtk_widget_destroy(GTK_WIDGET(area
));
371 area
= _adg_gtk_area_new();
372 gtk_widget_show(GTK_WIDGET(area
));
375 adg_gtk_area_switch_autozoom(area
, TRUE
);
376 gtk_widget_size_allocate(GTK_WIDGET(area
), &allocation
);
377 adg_assert_isapprox(adg_gtk_area_get_zoom(area
), 100);
379 gtk_widget_destroy(GTK_WIDGET(area
));
380 area
= _adg_gtk_area_new();
381 gtk_widget_show(GTK_WIDGET(area
));
383 /* Trying different allocation size */
384 adg_gtk_area_switch_autozoom(area
, TRUE
);
385 allocation
.width
= 200;
386 allocation
.height
= 200;
387 gtk_widget_size_allocate(GTK_WIDGET(area
), &allocation
);
388 adg_assert_isapprox(adg_gtk_area_get_zoom(area
), 200);
390 gtk_widget_destroy(GTK_WIDGET(area
));
394 _adg_method_reset(void)
402 adg_gtk_area_reset(NULL
);
404 window
= gtk_window_new(GTK_WINDOW_TOPLEVEL
);
405 area
= ADG_GTK_AREA(adg_gtk_area_new());
406 gtk_container_add(GTK_CONTAINER(window
), GTK_WIDGET(area
));
408 canvas
= adg_test_canvas();
409 adg_gtk_area_set_canvas(area
, canvas
);
410 g_object_unref(canvas
);
412 cairo_matrix_init_scale(&map
, 2, 2);
414 adg_gtk_area_reset(area
);
415 adg_gtk_area_reset(area
);
416 adg_assert_isapprox(adg_gtk_area_get_zoom(area
), 1);
418 adg_gtk_area_set_render_map(area
, &map
);
419 adg_assert_isapprox(adg_gtk_area_get_zoom(area
), 2);
421 adg_gtk_area_reset(area
);
422 adg_assert_isapprox(adg_gtk_area_get_zoom(area
), 1);
424 gtk_widget_destroy(window
);
428 _adg_method_extents_changed(void)
433 area
= ADG_GTK_AREA(adg_gtk_area_new());
434 extents
.is_defined
= FALSE
;
437 adg_gtk_area_extents_changed(NULL
, &extents
);
439 adg_test_signal(area
, "extents-changed");
440 adg_gtk_area_extents_changed(area
, &extents
);
441 g_assert_true(adg_test_signal_check(FALSE
));
443 adg_gtk_area_extents_changed(area
, NULL
);
444 g_assert_true(adg_test_signal_check(TRUE
));
446 gtk_widget_destroy(GTK_WIDGET(area
));
450 _adg_method_canvas_changed(void)
455 area
= ADG_GTK_AREA(adg_gtk_area_new());
456 canvas
= adg_canvas_new();
459 adg_gtk_area_canvas_changed(NULL
, canvas
);
461 adg_test_signal(area
, "canvas-changed");
462 adg_gtk_area_canvas_changed(area
, canvas
);
463 g_assert_true(adg_test_signal_check(FALSE
));
465 adg_gtk_area_canvas_changed(area
, NULL
);
466 g_assert_true(adg_test_signal_check(TRUE
));
468 gtk_widget_destroy(GTK_WIDGET(area
));
469 adg_entity_destroy(ADG_ENTITY(canvas
));
473 _adg_method_scroll_event(void)
477 GdkEventScroll event
;
479 const cairo_matrix_t
*map
;
481 area
= _adg_gtk_area_new();
482 canvas
= adg_gtk_area_get_canvas(area
);
484 /* Zooming requires an arranged canvas */
485 adg_entity_arrange(ADG_ENTITY(canvas
));
487 map
= adg_entity_get_local_map(ADG_ENTITY(canvas
));
488 adg_assert_isapprox(map
->xx
, 1);
490 /* Zoom in (local space) */
491 event
.type
= GDK_SCROLL
;
492 event
.direction
= GDK_SCROLL_UP
;
494 g_signal_emit_by_name(area
, "scroll-event", &event
, NULL
, &stop
);
495 map
= adg_entity_get_local_map(ADG_ENTITY(canvas
));
496 g_assert_cmpfloat(map
->xx
, >, 1);
498 /* Zoom out (local space) */
499 event
.direction
= GDK_SCROLL_DOWN
;
500 g_signal_emit_by_name(area
, "scroll-event", &event
, NULL
, &stop
);
501 map
= adg_entity_get_local_map(ADG_ENTITY(canvas
));
502 adg_assert_isapprox(map
->xx
, 1);
503 g_signal_emit_by_name(area
, "scroll-event", &event
, NULL
, &stop
);
504 map
= adg_entity_get_local_map(ADG_ENTITY(canvas
));
505 g_assert_cmpfloat(map
->xx
, <, 1);
507 adg_assert_isapprox(adg_gtk_area_get_zoom(area
), 1);
509 /* Zoom out (global space) */
510 event
.state
= GDK_SHIFT_MASK
;
511 g_signal_emit_by_name(area
, "scroll-event", &event
, NULL
, &stop
);
512 g_assert_cmpfloat(adg_gtk_area_get_zoom(area
), <, 1);
514 /* Zoom in (global space) */
515 event
.direction
= GDK_SCROLL_UP
;
516 g_signal_emit_by_name(area
, "scroll-event", &event
, NULL
, &stop
);
517 adg_assert_isapprox(adg_gtk_area_get_zoom(area
), 1);
518 g_signal_emit_by_name(area
, "scroll-event", &event
, NULL
, &stop
);
519 g_assert_cmpfloat(adg_gtk_area_get_zoom(area
), >, 1);
521 gtk_widget_destroy(GTK_WIDGET(area
));
525 _adg_method_motion_event(void)
529 GdkEventMotion event
;
531 const cairo_matrix_t
*map
;
533 area
= _adg_gtk_area_new();
534 canvas
= adg_gtk_area_get_canvas(area
);
536 /* Checking motion requires an arranged canvas */
537 adg_entity_arrange(ADG_ENTITY(canvas
));
539 map
= adg_entity_get_local_map(ADG_ENTITY(canvas
));
540 adg_assert_isapprox(map
->x0
, 0);
541 adg_assert_isapprox(map
->y0
, 0);
543 /* Motion (local space) */
544 event
.type
= GDK_MOTION_NOTIFY
;
545 event
.state
= GDK_BUTTON2_MASK
;
548 g_signal_emit_by_name(area
, "motion-notify-event", &event
, NULL
, &stop
);
549 map
= adg_entity_get_local_map(ADG_ENTITY(canvas
));
550 g_assert_cmpfloat(map
->x0
, >, 0);
551 g_assert_cmpfloat(map
->y0
, >, 0);
554 g_signal_emit_by_name(area
, "motion-notify-event", &event
, NULL
, &stop
);
555 map
= adg_entity_get_local_map(ADG_ENTITY(canvas
));
556 g_assert_cmpfloat(map
->x0
, <, 0);
557 g_assert_cmpfloat(map
->y0
, <, 0);
560 g_signal_emit_by_name(area
, "motion-notify-event", &event
, NULL
, &stop
);
561 map
= adg_entity_get_local_map(ADG_ENTITY(canvas
));
562 adg_assert_isapprox(map
->x0
, 0);
563 adg_assert_isapprox(map
->y0
, 0);
565 map
= adg_gtk_area_get_render_map(area
);
566 adg_assert_isapprox(map
->x0
, 0);
567 adg_assert_isapprox(map
->y0
, 0);
569 /* Motion (global space) */
570 event
.state
|= GDK_SHIFT_MASK
;
573 g_signal_emit_by_name(area
, "motion-notify-event", &event
, NULL
, &stop
);
574 map
= adg_gtk_area_get_render_map(area
);
575 g_assert_cmpfloat(map
->x0
, >, 0);
576 g_assert_cmpfloat(map
->y0
, >, 0);
579 g_signal_emit_by_name(area
, "motion-notify-event", &event
, NULL
, &stop
);
580 map
= adg_gtk_area_get_render_map(area
);
581 g_assert_cmpfloat(map
->x0
, <, 0);
582 g_assert_cmpfloat(map
->y0
, <, 0);
585 g_signal_emit_by_name(area
, "motion-notify-event", &event
, NULL
, &stop
);
586 map
= adg_gtk_area_get_render_map(area
);
587 adg_assert_isapprox(map
->x0
, 0);
588 adg_assert_isapprox(map
->y0
, 0);
590 gtk_widget_destroy(GTK_WIDGET(area
));
596 _adg_method_size_request(void)
600 GtkRequisition requisition
;
602 area
= ADG_GTK_AREA(adg_gtk_area_new());
603 canvas
= adg_test_canvas();
605 gtk_widget_size_request(GTK_WIDGET(area
), &requisition
);
606 g_assert_cmpint(requisition
.width
, ==, 0);
607 g_assert_cmpint(requisition
.height
, ==, 0);
609 /* Size requests are cached so recreate the area widget */
610 gtk_widget_destroy(GTK_WIDGET(area
));
612 area
= ADG_GTK_AREA(adg_gtk_area_new());
613 adg_gtk_area_set_canvas(area
, canvas
);
614 g_object_unref(canvas
);
616 gtk_widget_size_request(GTK_WIDGET(area
), &requisition
);
617 g_assert_cmpint(requisition
.width
, ==, 1);
618 g_assert_cmpint(requisition
.height
, ==, 1);
620 gtk_widget_destroy(GTK_WIDGET(area
));
627 main(int argc
, char *argv
[])
629 adg_test_init(&argc
, &argv
);
630 gtk_init_check(&argc
, &argv
);
632 adg_test_add_object_checks("/adg-gtk/area/type/object", ADG_GTK_TYPE_AREA
);
634 g_test_add_func("/adg-gtk/area/behavior/translation", _adg_behavior_translation
);
636 g_test_add_func("/adg-gtk/area/property/canvas", _adg_property_canvas
);
637 g_test_add_func("/adg-gtk/area/property/factor", _adg_property_factor
);
638 g_test_add_func("/adg-gtk/area/property/autozoom", _adg_property_autozoom
);
639 g_test_add_func("/adg-gtk/area/property/render-map", _adg_property_render_map
);
641 g_test_add_func("/adg-gtk/area/method/get-extents", _adg_method_get_extents
);
642 g_test_add_func("/adg-gtk/area/method/get-zoom", _adg_method_get_zoom
);
643 g_test_add_func("/adg-gtk/area/method/switch-autozoom", _adg_method_switch_autozoom
);
644 g_test_add_func("/adg-gtk/area/method/reset", _adg_method_reset
);
645 g_test_add_func("/adg-gtk/area/method/extents-changed", _adg_method_extents_changed
);
646 g_test_add_func("/adg-gtk/area/method/canvas-changed", _adg_method_canvas_changed
);
647 g_test_add_func("/adg-gtk/area/method/scroll-event", _adg_method_scroll_event
);
648 g_test_add_func("/adg-gtk/area/method/motion-event", _adg_method_motion_event
);
650 g_test_add_func("/adg-gtk/area/method/size-request", _adg_method_size_request
);