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.
26 _adg_property_model(void)
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
);
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
);
54 /* Using GObject property methods */
55 g_object_set(marker
, "model", NULL
, NULL
);
56 g_object_get(marker
, "model", &model
, NULL
);
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
);
73 adg_entity_destroy(ADG_ENTITY(marker
));
74 g_object_unref(valid_model
);
78 _adg_property_n_segment(void)
82 guint valid_n_segment
, invalid_n_segment
, n_segment
;
84 marker
= ADG_MARKER(adg_arrow_new());
85 trail
= ADG_TRAIL(adg_path_new());
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
);
123 _adg_property_pos(void)
126 gdouble valid_pos1
, valid_pos2
, invalid_pos
, pos
;
128 marker
= ADG_MARKER(adg_arrow_new());
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
));
163 _adg_property_trail(void)
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
);
223 _adg_property_size(void)
226 gdouble valid_size1
, valid_size2
, invalid_size
, size
;
228 marker
= ADG_MARKER(adg_arrow_new());
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
);