1 /* ADG - Automatic Drawing Generation
2 * Copyright (C) 2010 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"
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 g_object_unref(marker
);
73 g_object_unref(valid_model
);
77 _adg_test_n_segment(void)
81 guint valid_n_segment
, invalid_n_segment
, n_segment
;
83 marker
= ADG_MARKER(adg_arrow_new());
84 trail
= ADG_TRAIL(adg_path_new());
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 g_object_unref(marker
);
118 g_object_unref(trail
);
125 gdouble valid_pos1
, valid_pos2
, invalid_pos
, pos
;
127 marker
= ADG_MARKER(adg_arrow_new());
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 g_object_unref(marker
);
162 _adg_test_trail(void)
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 g_object_unref(marker
);
218 g_object_unref(valid_trail
);
225 gdouble valid_size1
, valid_size2
, invalid_size
, size
;
227 marker
= ADG_MARKER(adg_arrow_new());
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 g_object_unref(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
);