doc: updated copyright
[adg.git] / src / adg / tests / test-gtk-area.c
blob677d0e0ac677d8414091741d482cfa822e71d584
1 /* ADG - Automatic Drawing Generation
2 * Copyright (C) 2007,2008,2009,2010,2011,2012,2013 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.
21 #include "test-internal.h"
24 static void
25 _adg_test_canvas(void)
27 AdgGtkArea *area;
28 AdgCanvas *valid_canvas, *invalid_canvas, *canvas;
30 area = ADG_GTK_AREA(adg_gtk_area_new());
31 valid_canvas = adg_canvas_new();
32 invalid_canvas = adg_test_invalid_pointer();
34 g_object_ref(valid_canvas);
36 /* Using the public APIs */
37 adg_gtk_area_set_canvas(area, NULL);
38 canvas = adg_gtk_area_get_canvas(area);
39 g_assert(canvas == NULL);
41 adg_gtk_area_set_canvas(area, valid_canvas);
42 canvas = adg_gtk_area_get_canvas(area);
43 g_assert(canvas == valid_canvas);
45 adg_gtk_area_set_canvas(area, invalid_canvas);
46 canvas = adg_gtk_area_get_canvas(area);
47 g_assert(canvas == valid_canvas);
49 adg_gtk_area_set_canvas(area, NULL);
50 canvas = adg_gtk_area_get_canvas(area);
51 g_assert(canvas == NULL);
53 /* Using GObject property methods */
54 g_object_set(area, "canvas", NULL, NULL);
55 g_object_get(area, "canvas", &canvas, NULL);
56 g_assert(canvas == NULL);
58 g_object_set(area, "canvas", valid_canvas, NULL);
59 g_object_get(area, "canvas", &canvas, NULL);
60 g_assert(canvas == valid_canvas);
61 adg_entity_destroy(ADG_ENTITY(canvas));
63 g_object_set(area, "canvas", invalid_canvas, NULL);
64 g_object_get(area, "canvas", &canvas, NULL);
65 g_assert(canvas == valid_canvas);
66 adg_entity_destroy(ADG_ENTITY(canvas));
68 g_object_set(area, "canvas", NULL, NULL);
69 g_object_get(area, "canvas", &canvas, NULL);
70 g_assert(canvas == NULL);
72 gtk_widget_destroy(GTK_WIDGET(area));
73 adg_entity_destroy(ADG_ENTITY(valid_canvas));
76 static void
77 _adg_test_factor(void)
79 AdgGtkArea *area;
80 gdouble valid_factor1, valid_factor2, invalid_factor, factor;
82 area = ADG_GTK_AREA(adg_gtk_area_new());
83 valid_factor1 = 10;
84 valid_factor2 = 1;
85 invalid_factor = 0.5;
87 /* Using the public APIs */
88 adg_gtk_area_set_factor(area, valid_factor1);
89 factor = adg_gtk_area_get_factor(area);
90 g_assert_cmpfloat(factor, ==, valid_factor1);
92 adg_gtk_area_set_factor(area, invalid_factor);
93 factor = adg_gtk_area_get_factor(area);
94 g_assert_cmpfloat(factor, ==, valid_factor1);
96 adg_gtk_area_set_factor(area, valid_factor2);
97 factor = adg_gtk_area_get_factor(area);
98 g_assert_cmpfloat(factor, ==, valid_factor2);
100 /* Using GObject property methods */
101 g_object_set(area, "factor", valid_factor1, NULL);
102 g_object_get(area, "factor", &factor, NULL);
103 g_assert_cmpfloat(factor, ==, valid_factor1);
105 g_object_set(area, "factor", invalid_factor, NULL);
106 g_object_get(area, "factor", &factor, NULL);
107 g_assert_cmpfloat(factor, ==, valid_factor1);
109 g_object_set(area, "factor", valid_factor2, NULL);
110 g_object_get(area, "factor", &factor, NULL);
111 g_assert_cmpfloat(factor, ==, valid_factor2);
113 gtk_widget_destroy(GTK_WIDGET(area));
116 static void
117 _adg_test_autozoom(void)
119 AdgGtkArea *area;
120 gboolean invalid_boolean;
121 gboolean has_autozoom;
123 area = (AdgGtkArea *) adg_gtk_area_new();
124 invalid_boolean = (gboolean) 1234;
126 /* Using the public APIs */
127 adg_gtk_area_switch_autozoom(area, FALSE);
128 has_autozoom = adg_gtk_area_has_autozoom(area);
129 g_assert(!has_autozoom);
131 adg_gtk_area_switch_autozoom(area, invalid_boolean);
132 has_autozoom = adg_gtk_area_has_autozoom(area);
133 g_assert(!has_autozoom);
135 adg_gtk_area_switch_autozoom(area, TRUE);
136 has_autozoom = adg_gtk_area_has_autozoom(area);
137 g_assert(has_autozoom);
139 /* Using GObject property methods */
140 g_object_set(area, "autozoom", invalid_boolean, NULL);
141 g_object_get(area, "autozoom", &has_autozoom, NULL);
142 g_assert(has_autozoom);
144 g_object_set(area, "autozoom", FALSE, NULL);
145 g_object_get(area, "autozoom", &has_autozoom, NULL);
146 g_assert(!has_autozoom);
148 g_object_set(area, "autozoom", TRUE, NULL);
149 g_object_get(area, "autozoom", &has_autozoom, NULL);
150 g_assert(has_autozoom);
152 gtk_widget_destroy(GTK_WIDGET(area));
155 static void
156 _adg_test_render_map(void)
158 AdgGtkArea *area;
159 const cairo_matrix_t *identity_map;
160 cairo_matrix_t null_map, dummy_map;
161 const cairo_matrix_t *render_map;
162 cairo_matrix_t *render_map_dup;
164 area = ADG_GTK_AREA(adg_gtk_area_new());
165 identity_map = adg_matrix_identity();
167 /* A null map is a kind of degenerated matrix: it must be
168 * treated as valid value by the API */
169 cairo_matrix_init(&null_map, 0, 0, 0, 0, 0, 0);
170 /* A general purpose map value without translations */
171 cairo_matrix_init(&dummy_map, 1, 2, 3, 4, 0, 0);
173 /* Using the public APIs */
174 adg_gtk_area_set_render_map(area, &null_map);
175 render_map = adg_gtk_area_get_render_map(area);
176 g_assert(adg_matrix_equal(render_map, &null_map));
178 adg_gtk_area_transform_render_map(area, &dummy_map, ADG_TRANSFORM_AFTER);
179 render_map = adg_gtk_area_get_render_map(area);
180 g_assert(adg_matrix_equal(render_map, &null_map));
182 adg_gtk_area_set_render_map(area, identity_map);
183 render_map = adg_gtk_area_get_render_map(area);
184 g_assert(adg_matrix_equal(render_map, identity_map));
186 adg_gtk_area_set_render_map(area, NULL);
187 render_map = adg_gtk_area_get_render_map(area);
188 g_assert(adg_matrix_equal(render_map, identity_map));
190 adg_gtk_area_transform_render_map(area, &dummy_map, ADG_TRANSFORM_BEFORE);
191 render_map = adg_gtk_area_get_render_map(area);
192 g_assert(adg_matrix_equal(render_map, &dummy_map));
194 /* Using GObject property methods */
195 g_object_set(area, "render-map", &null_map, NULL);
196 g_object_get(area, "render-map", &render_map_dup, NULL);
197 g_assert(adg_matrix_equal(render_map_dup, &null_map));
198 g_free(render_map_dup);
200 g_object_set(area, "render-map", NULL, NULL);
201 g_object_get(area, "render-map", &render_map_dup, NULL);
202 g_assert(adg_matrix_equal(render_map_dup, &null_map));
203 g_free(render_map_dup);
205 g_object_set(area, "render-map", identity_map, NULL);
206 g_object_get(area, "render-map", &render_map_dup, NULL);
207 g_assert(adg_matrix_equal(render_map_dup, identity_map));
208 g_free(render_map_dup);
210 gtk_widget_destroy(GTK_WIDGET(area));
215 main(int argc, char *argv[])
217 adg_test_init(&argc, &argv);
219 adg_test_add_func("/adg/gtk/area/canvas", _adg_test_canvas);
220 adg_test_add_func("/adg/gtk/area/factor", _adg_test_factor);
221 adg_test_add_func("/adg/gtk/area/autozoom", _adg_test_autozoom);
222 adg_test_add_func("/adg/gtk/area/render-map", _adg_test_render_map);
224 return g_test_run();