AdgEntity: added "destroy" signal
[adg.git] / src / adg / tests / test-marker.c
bloba672b491b381ef73a122be7e90cea5de5420d36e
1 /* ADG - Automatic Drawing Generation
2 * Copyright (C) 2010,2011 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_model(void)
27 AdgMarker *marker;
28 AdgModel *valid_model, *invalid_model, *model;
30 marker = ADG_MARKER(adg_arrow_new());
31 valid_model = ADG_MODEL(adg_path_new());
32 invalid_model = adg_test_invalid_pointer();
34 g_object_ref(valid_model);
36 /* Using the public APIs */
37 adg_marker_set_model(marker, NULL);
38 model = adg_marker_get_model(marker);
39 g_assert(model == NULL);
41 adg_marker_set_model(marker, valid_model);
42 model = adg_marker_get_model(marker);
43 g_assert(model == valid_model);
45 adg_marker_set_model(marker, invalid_model);
46 model = adg_marker_get_model(marker);
47 g_assert(model == valid_model);
49 adg_marker_set_model(marker, NULL);
50 model = adg_marker_get_model(marker);
51 g_assert(model == NULL);
53 /* Using GObject property methods */
54 g_object_set(marker, "model", NULL, NULL);
55 g_object_get(marker, "model", &model, NULL);
56 g_assert(model == NULL);
58 g_object_set(marker, "model", valid_model, NULL);
59 g_object_get(marker, "model", &model, NULL);
60 g_assert(model == valid_model);
61 g_object_unref(model);
63 g_object_set(marker, "model", invalid_model, NULL);
64 g_object_get(marker, "model", &model, NULL);
65 g_assert(model == valid_model);
66 g_object_unref(model);
68 g_object_set(marker, "model", NULL, NULL);
69 g_object_get(marker, "model", &model, NULL);
70 g_assert(model == NULL);
72 adg_entity_destroy(ADG_ENTITY(marker));
73 g_object_unref(valid_model);
76 static void
77 _adg_test_n_segment(void)
79 AdgMarker *marker;
80 AdgTrail *trail;
81 guint valid_n_segment, invalid_n_segment, n_segment;
83 marker = ADG_MARKER(adg_arrow_new());
84 trail = ADG_TRAIL(adg_path_new());
85 valid_n_segment = 1;
86 invalid_n_segment = 2;
88 /* Define a segment in "trail" */
89 adg_path_move_to_explicit(ADG_PATH(trail), 1, 2);
90 adg_path_line_to_explicit(ADG_PATH(trail), 3, 4);
92 adg_marker_set_trail(marker, trail);
94 /* Using the public APIs */
95 adg_marker_set_n_segment(marker, valid_n_segment);
96 n_segment = adg_marker_get_n_segment(marker);
97 g_assert_cmpint(n_segment, ==, valid_n_segment);
99 adg_marker_set_n_segment(marker, invalid_n_segment);
100 n_segment = adg_marker_get_n_segment(marker);
101 g_assert_cmpint(n_segment, ==, valid_n_segment);
103 adg_marker_set_n_segment(marker, 0);
104 n_segment = adg_marker_get_n_segment(marker);
105 g_assert_cmpint(n_segment, ==, 0);
106 g_assert_cmpint(n_segment, !=, valid_n_segment);
108 /* Using GObject property methods */
109 g_object_set(marker, "n-segment", valid_n_segment, NULL);
110 g_object_get(marker, "n-segment", &n_segment, NULL);
111 g_assert_cmpint(n_segment, ==, valid_n_segment);
113 g_object_set(marker, "n-segment", invalid_n_segment, NULL);
114 g_object_get(marker, "n-segment", &n_segment, NULL);
115 g_assert_cmpint(n_segment, ==, valid_n_segment);
117 adg_entity_destroy(ADG_ENTITY(marker));
118 g_object_unref(trail);
121 static void
122 _adg_test_pos(void)
124 AdgMarker *marker;
125 gdouble valid_pos1, valid_pos2, invalid_pos, pos;
127 marker = ADG_MARKER(adg_arrow_new());
128 valid_pos1 = 1;
129 valid_pos2 = 0;
130 invalid_pos = -1;
132 /* Using the public APIs */
133 adg_marker_set_pos(marker, valid_pos1);
134 pos = adg_marker_get_pos(marker);
135 g_assert_cmpfloat(pos, ==, valid_pos1);
137 adg_marker_set_pos(marker, invalid_pos);
138 pos = adg_marker_get_pos(marker);
139 g_assert_cmpfloat(pos, ==, valid_pos1);
141 adg_marker_set_pos(marker, valid_pos2);
142 pos = adg_marker_get_pos(marker);
143 g_assert_cmpfloat(pos, ==, valid_pos2);
145 /* Using GObject property methods */
146 g_object_set(marker, "pos", valid_pos1, NULL);
147 g_object_get(marker, "pos", &pos, NULL);
148 g_assert_cmpfloat(pos, ==, valid_pos1);
150 g_object_set(marker, "pos", invalid_pos, NULL);
151 g_object_get(marker, "pos", &pos, NULL);
152 g_assert_cmpfloat(pos, ==, valid_pos1);
154 g_object_set(marker, "pos", valid_pos2, NULL);
155 g_object_get(marker, "pos", &pos, NULL);
156 g_assert_cmpfloat(pos, ==, valid_pos2);
158 adg_entity_destroy(ADG_ENTITY(marker));
161 static void
162 _adg_test_trail(void)
164 AdgMarker *marker;
165 AdgTrail *valid_trail, *invalid_trail, *trail;
167 marker = ADG_MARKER(adg_arrow_new());
168 valid_trail = ADG_TRAIL(adg_path_new());
169 invalid_trail = adg_test_invalid_pointer();
171 /* Using the public APIs */
172 adg_marker_set_trail(marker, NULL);
173 trail = adg_marker_get_trail(marker);
174 g_assert(trail == NULL);
176 adg_marker_set_n_segment(marker, 1);
177 adg_marker_set_trail(marker, valid_trail);
178 trail = adg_marker_get_trail(marker);
179 g_assert(trail == NULL);
181 adg_marker_set_n_segment(marker, 0);
182 adg_marker_set_trail(marker, valid_trail);
183 trail = adg_marker_get_trail(marker);
184 g_assert(trail == valid_trail);
186 adg_marker_set_trail(marker, invalid_trail);
187 trail = adg_marker_get_trail(marker);
188 g_assert(trail == valid_trail);
190 adg_marker_set_trail(marker, NULL);
191 trail = adg_marker_get_trail(marker);
192 g_assert(trail == NULL);
194 /* Using GObject property methods */
195 g_object_set(marker, "trail", NULL, NULL);
196 g_object_get(marker, "trail", &trail, NULL);
197 g_assert(trail == NULL);
199 g_object_set(marker, "n-segment", 1, "trail", valid_trail, NULL);
200 trail = adg_marker_get_trail(marker);
201 g_assert(trail == NULL);
203 g_object_set(marker, "n-segment", 0, "trail", valid_trail, NULL);
204 g_object_get(marker, "trail", &trail, NULL);
205 g_assert(trail == valid_trail);
206 g_object_unref(trail);
208 g_object_set(marker, "trail", invalid_trail, NULL);
209 g_object_get(marker, "trail", &trail, NULL);
210 g_assert(trail == valid_trail);
211 g_object_unref(trail);
213 g_object_set(marker, "trail", NULL, NULL);
214 g_object_get(marker, "trail", &trail, NULL);
215 g_assert(trail == NULL);
217 adg_entity_destroy(ADG_ENTITY(marker));
218 g_object_unref(valid_trail);
221 static void
222 _adg_test_size(void)
224 AdgMarker *marker;
225 gdouble valid_size1, valid_size2, invalid_size, size;
227 marker = ADG_MARKER(adg_arrow_new());
228 valid_size1 = 10;
229 valid_size2 = 0;
230 invalid_size = -1;
232 /* Using the public APIs */
233 adg_marker_set_size(marker, valid_size1);
234 size = adg_marker_get_size(marker);
235 g_assert_cmpfloat(size, ==, valid_size1);
237 adg_marker_set_size(marker, invalid_size);
238 size = adg_marker_get_size(marker);
239 g_assert_cmpfloat(size, ==, valid_size1);
241 adg_marker_set_size(marker, valid_size2);
242 size = adg_marker_get_size(marker);
243 g_assert_cmpfloat(size, ==, valid_size2);
245 /* Using GObject property methods */
246 g_object_set(marker, "size", valid_size1, NULL);
247 g_object_get(marker, "size", &size, NULL);
248 g_assert_cmpfloat(size, ==, valid_size1);
250 g_object_set(marker, "size", invalid_size, NULL);
251 g_object_get(marker, "size", &size, NULL);
252 g_assert_cmpfloat(size, ==, valid_size1);
254 g_object_set(marker, "size", valid_size2, NULL);
255 g_object_get(marker, "size", &size, NULL);
256 g_assert_cmpfloat(size, ==, valid_size2);
258 adg_entity_destroy(ADG_ENTITY(marker));
263 main(int argc, char *argv[])
265 adg_test_init(&argc, &argv);
267 adg_test_add_func("/adg/marker/model", _adg_test_model);
268 adg_test_add_func("/adg/marker/n-segment", _adg_test_n_segment);
269 adg_test_add_func("/adg/marker/pos", _adg_test_pos);
270 adg_test_add_func("/adg/marker/size", _adg_test_size);
271 adg_test_add_func("/adg/marker/trail", _adg_test_trail);
273 return g_test_run();