netlist: Fix component refdes mangling
[geda-gaf.git] / tests / storage / get_attribute.c
blob8d15b38d938d48a2ca6d2da0cf5248a29176f728
1 /* Copyright (C) 2013-2020 Roland Lutz
3 This program is free software; you can redistribute it and/or modify
4 it under the terms of the GNU General Public License as published by
5 the Free Software Foundation; either version 2 of the License, or
6 (at your option) any later version.
8 This program is distributed in the hope that it will be useful,
9 but WITHOUT ANY WARRANTY; without even the implied warranty of
10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 GNU General Public License for more details.
13 You should have received a copy of the GNU General Public License
14 along with this program; if not, write to the Free Software Foundation,
15 Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
17 #include "Setup.h"
20 static void assert_color(xorn_revision_t rev, xorn_selection_t sel,
21 xorn_attst_t expected_state, int expected_color)
23 xorn_attst_t state;
24 int color;
26 xornsch_get_color(rev, sel, &state, &color);
27 assert(state == expected_state);
28 assert(color == expected_color);
31 static void assert_line_width(xorn_revision_t rev, xorn_selection_t sel,
32 xorn_attst_t expected_state,
33 double expected_value)
35 xorn_attst_t state;
36 double value;
38 xornsch_get_line_width(rev, sel, &state, &value);
39 assert(state == expected_state);
40 assert(value == expected_value);
43 static void assert_fill_type(xorn_revision_t rev, xorn_selection_t sel,
44 xorn_attst_t expected_state, int expected_value)
46 xorn_attst_t state;
47 int value;
49 xornsch_get_fill_type(rev, sel, &state, &value);
50 assert(state == expected_state);
51 assert(value == expected_value);
54 static void assert_position(xorn_revision_t rev, xorn_selection_t sel,
55 xorn_attst_t expected_state,
56 double expected_x, double expected_y)
58 xorn_attst_t state;
59 struct xorn_double2d position;
60 double x, y;
62 xornsch_get_pos(rev, sel, &state, &position);
63 assert(state == expected_state);
64 assert(position.x == expected_x);
65 assert(position.y == expected_y);
67 /* this doesn't generally work */
68 xornsch_get_pos_x(rev, sel, &state, &x);
69 assert(state == expected_state);
70 assert(x == expected_x);
72 xornsch_get_pos_y(rev, sel, &state, &y);
73 assert(state == expected_state);
74 assert(y == expected_y);
77 static void assert_text(xorn_revision_t rev, xorn_selection_t sel,
78 xorn_attst_t expected_state, char *expected_text)
80 xorn_attst_t state;
81 struct xorn_string text;
83 xornsch_get_text(rev, sel, &state, &text);
84 assert(state == expected_state);
85 assert(text.len == strlen(expected_text));
86 assert(memcmp(text.s, expected_text, text.len) == 0);
89 static void assert_line(xorn_revision_t rev, xorn_selection_t sel,
90 xorn_attst_t expected_state,
91 double width, int cap_style, int dash_style,
92 double dash_length, double dash_space)
94 xorn_attst_t state;
95 struct xornsch_line_attr expected_line, real_line;
97 memset(&expected_line, 0, sizeof expected_line);
98 expected_line.width = width;
99 expected_line.cap_style = cap_style;
100 expected_line.dash_style = dash_style;
101 expected_line.dash_length = dash_length;
102 expected_line.dash_space = dash_space;
104 xornsch_get_line(rev, sel, &state, &real_line);
105 assert(state == expected_state);
106 assert(memcmp(&expected_line, &real_line, sizeof expected_line) == 0);
109 static void assert_fill(xorn_revision_t rev, xorn_selection_t sel,
110 xorn_attst_t expected_state, int type, double width,
111 int angle0, double pitch0, int angle1, double pitch1)
113 xorn_attst_t state;
114 struct xornsch_fill_attr expected_fill, real_fill;
116 memset(&expected_fill, 0, sizeof expected_fill);
117 expected_fill.type = type;
118 expected_fill.width = width;
119 expected_fill.angle0 = angle0;
120 expected_fill.pitch0 = pitch0;
121 expected_fill.angle1 = angle1;
122 expected_fill.pitch1 = pitch1;
124 xornsch_get_fill(rev, sel, &state, &real_fill);
125 assert(state == expected_state);
126 assert(memcmp(&expected_fill, &real_fill, sizeof expected_fill) == 0);
129 int main(void)
131 xorn_revision_t rev0, rev1, rev2, rev3;
132 xorn_object_t ob0, ob1a, ob1b;
133 xorn_selection_t sel0, sel1, sel2, sel3;
135 xorn_revision_t rev4;
136 struct xornsch_text text_data;
137 xorn_object_t text0, text1;
138 xorn_selection_t tsel0, tsel1, tselA;
140 setup(&rev0, &rev1, &rev2, &rev3, &ob0, &ob1a, &ob1b);
142 sel0 = xorn_select_all(rev0); assert(sel0 != NULL);
143 sel1 = xorn_select_all(rev1); assert(sel1 != NULL);
144 sel2 = xorn_select_all(rev2); assert(sel2 != NULL);
145 sel3 = xorn_select_all(rev3); assert(sel3 != NULL);
147 rev4 = xorn_new_revision(rev3);
148 assert(rev4 != NULL);
150 memset(&text_data, 0, sizeof text_data);
152 text_data.text.s = "Hello world";
153 text_data.text.len = 11;
154 text0 = xornsch_add_text(rev4, &text_data, NULL);
155 assert(text0 != NULL);
157 text_data.text.s = "dlrow olleH";
158 text_data.text.len = 11;
159 text1 = xornsch_add_text(rev4, &text_data, NULL);
160 assert(text0 != NULL);
162 xorn_finalize_revision(rev4);
164 tsel0 = xorn_select_object(text0);
165 assert(tsel0 != NULL);
166 tsel1 = xorn_select_object(text1);
167 assert(tsel1 != NULL);
168 tselA = xorn_select_all(rev4);
169 assert(tselA != NULL);
171 assert_color(rev0, sel0, xorn_attst_na, 0);
172 assert_color(rev0, sel1, xorn_attst_na, 0);
173 assert_color(rev0, sel2, xorn_attst_na, 0);
174 assert_color(rev0, sel3, xorn_attst_na, 0);
176 assert_color(rev1, sel0, xorn_attst_na, 0);
177 assert_color(rev1, sel1, xorn_attst_consistent, 3);
178 assert_color(rev1, sel2, xorn_attst_consistent, 3);
179 assert_color(rev1, sel3, xorn_attst_consistent, 3);
181 assert_color(rev2, sel0, xorn_attst_na, 0);
182 assert_color(rev2, sel1, xorn_attst_consistent, 3);
183 assert_color(rev2, sel2, xorn_attst_consistent, 3);
184 assert_color(rev2, sel3, xorn_attst_consistent, 3);
186 assert_color(rev3, sel0, xorn_attst_na, 0);
187 assert_color(rev3, sel1, xorn_attst_consistent, 4);
188 assert_color(rev3, sel2, xorn_attst_inconsistent, 0);
189 assert_color(rev3, sel3, xorn_attst_inconsistent, 0);
191 assert_line_width(rev0, sel0, xorn_attst_na, 0.);
192 assert_line_width(rev0, sel1, xorn_attst_na, 0.);
193 assert_line_width(rev0, sel2, xorn_attst_na, 0.);
194 assert_line_width(rev0, sel3, xorn_attst_na, 0.);
196 assert_line_width(rev1, sel0, xorn_attst_na, 0.);
197 assert_line_width(rev1, sel1, xorn_attst_consistent, 1.);
198 assert_line_width(rev1, sel2, xorn_attst_consistent, 1.);
199 assert_line_width(rev1, sel3, xorn_attst_consistent, 1.);
201 assert_line_width(rev2, sel0, xorn_attst_na, 0.);
202 assert_line_width(rev2, sel1, xorn_attst_consistent, 1.);
203 assert_line_width(rev2, sel2, xorn_attst_consistent, 1.);
204 assert_line_width(rev2, sel3, xorn_attst_consistent, 1.);
206 assert_line_width(rev3, sel0, xorn_attst_na, 0.);
207 assert_line_width(rev3, sel1, xorn_attst_na, 0.);
208 assert_line_width(rev3, sel2, xorn_attst_consistent, 1.);
209 assert_line_width(rev3, sel3, xorn_attst_consistent, 1.);
211 assert_fill_type(rev0, sel0, xorn_attst_na, 0);
212 assert_fill_type(rev0, sel1, xorn_attst_na, 0);
213 assert_fill_type(rev0, sel2, xorn_attst_na, 0);
214 assert_fill_type(rev0, sel3, xorn_attst_na, 0);
216 assert_fill_type(rev1, sel0, xorn_attst_na, 0);
217 assert_fill_type(rev1, sel1, xorn_attst_na, 0);
218 assert_fill_type(rev1, sel2, xorn_attst_na, 0);
219 assert_fill_type(rev1, sel3, xorn_attst_na, 0);
221 assert_fill_type(rev2, sel0, xorn_attst_na, 0);
222 assert_fill_type(rev2, sel1, xorn_attst_na, 0);
223 assert_fill_type(rev2, sel2, xorn_attst_inconsistent, 0);
224 assert_fill_type(rev2, sel3, xorn_attst_consistent, 1);
226 assert_fill_type(rev3, sel0, xorn_attst_na, 0);
227 assert_fill_type(rev3, sel1, xorn_attst_na, 0);
228 assert_fill_type(rev3, sel2, xorn_attst_consistent, 1);
229 assert_fill_type(rev3, sel3, xorn_attst_consistent, 1);
231 assert_position(rev0, sel0, xorn_attst_na, 0., 0.);
232 assert_position(rev0, sel1, xorn_attst_na, 0., 0.);
233 assert_position(rev0, sel2, xorn_attst_na, 0., 0.);
234 assert_position(rev0, sel3, xorn_attst_na, 0., 0.);
236 assert_position(rev1, sel0, xorn_attst_na, 0., 0.);
237 assert_position(rev1, sel1, xorn_attst_consistent, 0., 1.);
238 assert_position(rev1, sel2, xorn_attst_consistent, 0., 1.);
239 assert_position(rev1, sel3, xorn_attst_consistent, 0., 1.);
241 assert_position(rev2, sel0, xorn_attst_na, 0., 0.);
242 assert_position(rev2, sel1, xorn_attst_consistent, 0., 1.);
243 assert_position(rev2, sel2, xorn_attst_inconsistent, 0., 0.);
244 assert_position(rev2, sel3, xorn_attst_inconsistent, 0., 0.);
246 assert_position(rev3, sel0, xorn_attst_na, 0., 0.);
247 assert_position(rev3, sel1, xorn_attst_consistent, 0., 1.);
248 assert_position(rev3, sel2, xorn_attst_inconsistent, 0., 0.);
249 assert_position(rev3, sel3, xorn_attst_inconsistent, 0., 0.);
251 assert_text(rev4, sel0, xorn_attst_na, "");
252 assert_text(rev4, tsel0, xorn_attst_consistent, "Hello world");
253 assert_text(rev4, tsel1, xorn_attst_consistent, "dlrow olleH");
254 assert_text(rev4, tselA, xorn_attst_inconsistent, "");
256 assert_line(rev0, sel0, xorn_attst_na, 0., 0, 0, 0., 0.);
257 assert_line(rev0, sel1, xorn_attst_na, 0., 0, 0, 0., 0.);
258 assert_line(rev0, sel2, xorn_attst_na, 0., 0, 0, 0., 0.);
259 assert_line(rev0, sel3, xorn_attst_na, 0., 0, 0, 0., 0.);
261 assert_line(rev1, sel0, xorn_attst_na, 0., 0, 0, 0., 0.);
262 assert_line(rev1, sel1, xorn_attst_consistent, 1., 0, 0, 0., 0.);
263 assert_line(rev1, sel2, xorn_attst_consistent, 1., 0, 0, 0., 0.);
264 assert_line(rev1, sel3, xorn_attst_consistent, 1., 0, 0, 0., 0.);
266 assert_line(rev2, sel0, xorn_attst_na, 0., 0, 0, 0., 0.);
267 assert_line(rev2, sel1, xorn_attst_consistent, 1., 0, 0, 0., 0.);
268 assert_line(rev2, sel2, xorn_attst_consistent, 1., 0, 0, 0., 0.);
269 assert_line(rev2, sel3, xorn_attst_consistent, 1., 0, 0, 0., 0.);
271 assert_line(rev3, sel0, xorn_attst_na, 0., 0, 0, 0., 0.);
272 assert_line(rev3, sel1, xorn_attst_na, 0., 0, 0, 0., 0.);
273 assert_line(rev3, sel2, xorn_attst_consistent, 1., 0, 0, 0., 0.);
274 assert_line(rev3, sel3, xorn_attst_consistent, 1., 0, 0, 0., 0.);
276 assert_fill(rev0, sel0, xorn_attst_na, 0, 0., 0, 0., 0, 0.);
277 assert_fill(rev0, sel1, xorn_attst_na, 0, 0., 0, 0., 0, 0.);
278 assert_fill(rev0, sel2, xorn_attst_na, 0, 0., 0, 0., 0, 0.);
279 assert_fill(rev0, sel3, xorn_attst_na, 0, 0., 0, 0., 0, 0.);
281 assert_fill(rev1, sel0, xorn_attst_na, 0, 0., 0, 0., 0, 0.);
282 assert_fill(rev1, sel1, xorn_attst_na, 0, 0., 0, 0., 0, 0.);
283 assert_fill(rev1, sel2, xorn_attst_na, 0, 0., 0, 0., 0, 0.);
284 assert_fill(rev1, sel3, xorn_attst_na, 0, 0., 0, 0., 0, 0.);
286 assert_fill(rev2, sel0, xorn_attst_na, 0, 0., 0, 0., 0, 0.);
287 assert_fill(rev2, sel1, xorn_attst_na, 0, 0., 0, 0., 0, 0.);
288 assert_fill(rev2, sel2, xorn_attst_inconsistent, 0, 0., 0, 0., 0, 0.);
289 assert_fill(rev2, sel3, xorn_attst_consistent, 1, 0., 0, 0., 0, 0.);
291 assert_fill(rev3, sel0, xorn_attst_na, 0, 0., 0, 0., 0, 0.);
292 assert_fill(rev3, sel1, xorn_attst_na, 0, 0., 0, 0., 0, 0.);
293 assert_fill(rev3, sel2, xorn_attst_consistent, 1, 0., 0, 0., 0, 0.);
294 assert_fill(rev3, sel3, xorn_attst_consistent, 1, 0., 0, 0., 0, 0.);
296 xorn_free_selection(tselA);
297 xorn_free_selection(tsel1);
298 xorn_free_selection(tsel0);
299 xorn_free_selection(sel3);
300 xorn_free_selection(sel2);
301 xorn_free_selection(sel1);
302 xorn_free_selection(sel0);
304 xorn_free_revision(rev4);
305 xorn_free_revision(rev3);
306 xorn_free_revision(rev2);
307 xorn_free_revision(rev1);
308 xorn_free_revision(rev0);
309 return 0;