doc: update copyright line for 2021
[adg.git] / src / adg / tests / test-marker.c
blob709f20e7e9d9755058e0ddc3c1280d20dfddd027
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.
21 #include <adg-test.h>
22 #include <adg.h>
25 static void
26 _adg_property_model(void)
28 AdgMarker *marker;
29 AdgModel *valid_model, *invalid_model, *model;
31 marker = ADG_MARKER(adg_arrow_new());
32 valid_model = ADG_MODEL(adg_path_new());
33 invalid_model = adg_test_invalid_pointer();
35 g_object_ref(valid_model);
37 /* Using the public APIs */
38 adg_marker_set_model(marker, NULL);
39 model = adg_marker_get_model(marker);
40 g_assert_null(model);
42 adg_marker_set_model(marker, valid_model);
43 model = adg_marker_get_model(marker);
44 g_assert_true(model == valid_model);
46 adg_marker_set_model(marker, invalid_model);
47 model = adg_marker_get_model(marker);
48 g_assert_true(model == valid_model);
50 adg_marker_set_model(marker, NULL);
51 model = adg_marker_get_model(marker);
52 g_assert_null(model);
54 /* Using GObject property methods */
55 g_object_set(marker, "model", NULL, NULL);
56 g_object_get(marker, "model", &model, NULL);
57 g_assert_null(model);
59 g_object_set(marker, "model", valid_model, NULL);
60 g_object_get(marker, "model", &model, NULL);
61 g_assert_true(model == valid_model);
62 g_object_unref(model);
64 g_object_set(marker, "model", invalid_model, NULL);
65 g_object_get(marker, "model", &model, NULL);
66 g_assert_true(model == valid_model);
67 g_object_unref(model);
69 g_object_set(marker, "model", NULL, NULL);
70 g_object_get(marker, "model", &model, NULL);
71 g_assert_null(model);
73 adg_entity_destroy(ADG_ENTITY(marker));
74 g_object_unref(valid_model);
77 static void
78 _adg_property_n_segment(void)
80 AdgMarker *marker;
81 AdgTrail *trail;
82 guint valid_n_segment, invalid_n_segment, n_segment;
84 marker = ADG_MARKER(adg_arrow_new());
85 trail = ADG_TRAIL(adg_path_new());
86 valid_n_segment = 1;
87 invalid_n_segment = 2;
89 /* Define a segment in "trail" */
90 adg_path_move_to_explicit(ADG_PATH(trail), 1, 2);
91 adg_path_line_to_explicit(ADG_PATH(trail), 3, 4);
93 adg_marker_set_trail(marker, trail);
95 /* Using the public APIs */
96 adg_marker_set_n_segment(marker, valid_n_segment);
97 n_segment = adg_marker_get_n_segment(marker);
98 g_assert_cmpint(n_segment, ==, valid_n_segment);
100 adg_marker_set_n_segment(marker, invalid_n_segment);
101 n_segment = adg_marker_get_n_segment(marker);
102 g_assert_cmpint(n_segment, ==, valid_n_segment);
104 adg_marker_set_n_segment(marker, 0);
105 n_segment = adg_marker_get_n_segment(marker);
106 g_assert_cmpint(n_segment, ==, 0);
107 g_assert_cmpint(n_segment, !=, valid_n_segment);
109 /* Using GObject property methods */
110 g_object_set(marker, "n-segment", valid_n_segment, NULL);
111 g_object_get(marker, "n-segment", &n_segment, NULL);
112 g_assert_cmpint(n_segment, ==, valid_n_segment);
114 g_object_set(marker, "n-segment", invalid_n_segment, NULL);
115 g_object_get(marker, "n-segment", &n_segment, NULL);
116 g_assert_cmpint(n_segment, ==, valid_n_segment);
118 adg_entity_destroy(ADG_ENTITY(marker));
119 g_object_unref(trail);
122 static void
123 _adg_property_pos(void)
125 AdgMarker *marker;
126 gdouble valid_pos1, valid_pos2, invalid_pos, pos;
128 marker = ADG_MARKER(adg_arrow_new());
129 valid_pos1 = 1;
130 valid_pos2 = 0;
131 invalid_pos = -1;
133 /* Using the public APIs */
134 adg_marker_set_pos(marker, valid_pos1);
135 pos = adg_marker_get_pos(marker);
136 adg_assert_isapprox(pos, valid_pos1);
138 adg_marker_set_pos(marker, invalid_pos);
139 pos = adg_marker_get_pos(marker);
140 adg_assert_isapprox(pos, valid_pos1);
142 adg_marker_set_pos(marker, valid_pos2);
143 pos = adg_marker_get_pos(marker);
144 adg_assert_isapprox(pos, valid_pos2);
146 /* Using GObject property methods */
147 g_object_set(marker, "pos", valid_pos1, NULL);
148 g_object_get(marker, "pos", &pos, NULL);
149 adg_assert_isapprox(pos, valid_pos1);
151 g_object_set(marker, "pos", invalid_pos, NULL);
152 g_object_get(marker, "pos", &pos, NULL);
153 adg_assert_isapprox(pos, valid_pos1);
155 g_object_set(marker, "pos", valid_pos2, NULL);
156 g_object_get(marker, "pos", &pos, NULL);
157 adg_assert_isapprox(pos, valid_pos2);
159 adg_entity_destroy(ADG_ENTITY(marker));
162 static void
163 _adg_property_trail(void)
165 AdgMarker *marker;
166 AdgTrail *valid_trail, *invalid_trail, *trail;
168 marker = ADG_MARKER(adg_arrow_new());
169 valid_trail = ADG_TRAIL(adg_path_new());
170 invalid_trail = adg_test_invalid_pointer();
172 /* Using the public APIs */
173 adg_marker_set_trail(marker, NULL);
174 trail = adg_marker_get_trail(marker);
175 g_assert_null(trail);
177 adg_marker_set_n_segment(marker, 1);
178 adg_marker_set_trail(marker, valid_trail);
179 trail = adg_marker_get_trail(marker);
180 g_assert_null(trail);
182 adg_marker_set_n_segment(marker, 0);
183 adg_marker_set_trail(marker, valid_trail);
184 trail = adg_marker_get_trail(marker);
185 g_assert_true(trail == valid_trail);
187 adg_marker_set_trail(marker, invalid_trail);
188 trail = adg_marker_get_trail(marker);
189 g_assert_true(trail == valid_trail);
191 adg_marker_set_trail(marker, NULL);
192 trail = adg_marker_get_trail(marker);
193 g_assert_null(trail);
195 /* Using GObject property methods */
196 g_object_set(marker, "trail", NULL, NULL);
197 g_object_get(marker, "trail", &trail, NULL);
198 g_assert_null(trail);
200 g_object_set(marker, "n-segment", 1, "trail", valid_trail, NULL);
201 trail = adg_marker_get_trail(marker);
202 g_assert_null(trail);
204 g_object_set(marker, "n-segment", 0, "trail", valid_trail, NULL);
205 g_object_get(marker, "trail", &trail, NULL);
206 g_assert_true(trail == valid_trail);
207 g_object_unref(trail);
209 g_object_set(marker, "trail", invalid_trail, NULL);
210 g_object_get(marker, "trail", &trail, NULL);
211 g_assert_true(trail == valid_trail);
212 g_object_unref(trail);
214 g_object_set(marker, "trail", NULL, NULL);
215 g_object_get(marker, "trail", &trail, NULL);
216 g_assert_null(trail);
218 adg_entity_destroy(ADG_ENTITY(marker));
219 g_object_unref(valid_trail);
222 static void
223 _adg_property_size(void)
225 AdgMarker *marker;
226 gdouble valid_size1, valid_size2, invalid_size, size;
228 marker = ADG_MARKER(adg_arrow_new());
229 valid_size1 = 10;
230 valid_size2 = 0;
231 invalid_size = -1;
233 /* Using the public APIs */
234 adg_marker_set_size(marker, valid_size1);
235 size = adg_marker_get_size(marker);
236 adg_assert_isapprox(size, valid_size1);
238 adg_marker_set_size(marker, invalid_size);
239 size = adg_marker_get_size(marker);
240 adg_assert_isapprox(size, valid_size1);
242 adg_marker_set_size(marker, valid_size2);
243 size = adg_marker_get_size(marker);
244 adg_assert_isapprox(size, valid_size2);
246 /* Using GObject property methods */
247 g_object_set(marker, "size", valid_size1, NULL);
248 g_object_get(marker, "size", &size, NULL);
249 adg_assert_isapprox(size, valid_size1);
251 g_object_set(marker, "size", invalid_size, NULL);
252 g_object_get(marker, "size", &size, NULL);
253 adg_assert_isapprox(size, valid_size1);
255 g_object_set(marker, "size", valid_size2, NULL);
256 g_object_get(marker, "size", &size, NULL);
257 adg_assert_isapprox(size, valid_size2);
259 adg_entity_destroy(ADG_ENTITY(marker));
264 main(int argc, char *argv[])
266 adg_test_init(&argc, &argv);
268 adg_test_add_object_checks("/adg/marker/type/object", ADG_TYPE_MARKER);
269 adg_test_add_entity_checks("/adg/marker/type/entity", ADG_TYPE_MARKER);
271 g_test_add_func("/adg/marker/property/model", _adg_property_model);
272 g_test_add_func("/adg/marker/property/n-segment", _adg_property_n_segment);
273 g_test_add_func("/adg/marker/property/pos", _adg_property_pos);
274 g_test_add_func("/adg/marker/property/size", _adg_property_size);
275 g_test_add_func("/adg/marker/property/trail", _adg_property_trail);
277 return g_test_run();