netlist: Add `tedax' backend
[geda-gaf.git] / tests / storage / select_by_attribute.c
blob7e5e3e94359c6c3fd52e2069cdb301c30cc8ff91
1 /* Copyright (C) 2013-2017 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"
18 #include <stdlib.h>
21 int main(void)
23 xorn_revision_t rev0, rev1, rev2, rev3;
24 xorn_object_t ob0, ob1a, ob1b;
26 xorn_selection_t sel;
27 struct xorn_double2d pos;
29 xorn_revision_t rev4;
30 struct xornsch_text text_data;
31 xorn_object_t text_ob;
33 struct xornsch_line_attr line;
34 struct xornsch_fill_attr fill;
36 setup(&rev0, &rev1, &rev2, &rev3, &ob0, &ob1a, &ob1b);
38 sel = xornsch_select_by_color(rev2, 3);
39 assert(xorn_object_is_selected(rev2, sel, ob0) == true);
40 assert(xorn_object_is_selected(rev2, sel, ob1a) == true);
41 assert(xorn_object_is_selected(rev2, sel, ob1b) == true);
42 xorn_free_selection(sel);
44 sel = xornsch_select_by_color(rev2, 4);
45 assert(xorn_object_is_selected(rev2, sel, ob0) == false);
46 assert(xorn_object_is_selected(rev2, sel, ob1a) == false);
47 assert(xorn_object_is_selected(rev2, sel, ob1b) == false);
48 xorn_free_selection(sel);
50 sel = xornsch_select_by_color(rev3, 3);
51 assert(xorn_object_is_selected(rev3, sel, ob0) == false);
52 assert(xorn_object_is_selected(rev3, sel, ob1a) == false);
53 assert(xorn_object_is_selected(rev3, sel, ob1b) == true);
54 xorn_free_selection(sel);
56 sel = xornsch_select_by_color(rev3, 4);
57 assert(xorn_object_is_selected(rev3, sel, ob0) == true);
58 assert(xorn_object_is_selected(rev3, sel, ob1a) == false);
59 assert(xorn_object_is_selected(rev3, sel, ob1b) == false);
60 xorn_free_selection(sel);
62 sel = xornsch_select_by_line_width(rev2, 0.);
63 assert(xorn_object_is_selected(rev2, sel, ob0) == false);
64 assert(xorn_object_is_selected(rev2, sel, ob1a) == false);
65 assert(xorn_object_is_selected(rev2, sel, ob1b) == false);
66 xorn_free_selection(sel);
68 sel = xornsch_select_by_line_width(rev2, 1.);
69 assert(xorn_object_is_selected(rev2, sel, ob0) == true);
70 assert(xorn_object_is_selected(rev2, sel, ob1a) == true);
71 assert(xorn_object_is_selected(rev2, sel, ob1b) == true);
72 xorn_free_selection(sel);
74 sel = xornsch_select_by_line_width(rev3, 0.);
75 assert(xorn_object_is_selected(rev3, sel, ob0) == false);
76 assert(xorn_object_is_selected(rev3, sel, ob1a) == false);
77 assert(xorn_object_is_selected(rev3, sel, ob1b) == false);
78 xorn_free_selection(sel);
80 sel = xornsch_select_by_line_width(rev3, 1.);
81 assert(xorn_object_is_selected(rev3, sel, ob0) == false);
82 assert(xorn_object_is_selected(rev3, sel, ob1a) == false);
83 assert(xorn_object_is_selected(rev3, sel, ob1b) == true);
84 xorn_free_selection(sel);
86 pos.x = 0.; pos.y = 1.;
87 sel = xornsch_select_by_pos(rev3, &pos);
88 assert(xorn_object_is_selected(rev3, sel, ob0) == true);
89 assert(xorn_object_is_selected(rev3, sel, ob1a) == false);
90 assert(xorn_object_is_selected(rev3, sel, ob1b) == false);
91 xorn_free_selection(sel);
93 pos.x = -1.; pos.y = -1.;
94 sel = xornsch_select_by_pos(rev3, &pos);
95 assert(xorn_object_is_selected(rev3, sel, ob0) == false);
96 assert(xorn_object_is_selected(rev3, sel, ob1a) == false);
97 assert(xorn_object_is_selected(rev3, sel, ob1b) == true);
98 xorn_free_selection(sel);
100 sel = xornsch_select_by_pos_x(rev3, 0.);
101 assert(xorn_object_is_selected(rev3, sel, ob0) == true);
102 assert(xorn_object_is_selected(rev3, sel, ob1a) == false);
103 assert(xorn_object_is_selected(rev3, sel, ob1b) == false);
104 xorn_free_selection(sel);
106 sel = xornsch_select_by_pos_x(rev3, 1.);
107 assert(xorn_object_is_selected(rev3, sel, ob0) == false);
108 assert(xorn_object_is_selected(rev3, sel, ob1a) == false);
109 assert(xorn_object_is_selected(rev3, sel, ob1b) == false);
110 xorn_free_selection(sel);
112 sel = xornsch_select_by_pos_y(rev3, 0.);
113 assert(xorn_object_is_selected(rev3, sel, ob0) == false);
114 assert(xorn_object_is_selected(rev3, sel, ob1a) == false);
115 assert(xorn_object_is_selected(rev3, sel, ob1b) == false);
116 xorn_free_selection(sel);
118 sel = xornsch_select_by_pos_y(rev3, 1.);
119 assert(xorn_object_is_selected(rev3, sel, ob0) == true);
120 assert(xorn_object_is_selected(rev3, sel, ob1a) == false);
121 assert(xorn_object_is_selected(rev3, sel, ob1b) == false);
122 xorn_free_selection(sel);
124 rev4 = xorn_new_revision(rev3);
125 assert(rev4 != NULL);
126 memset(&text_data, 0, sizeof text_data);
127 text_data.text.s = "Hello world";
128 text_data.text.len = 11;
129 text_ob = xornsch_add_text(rev4, &text_data, NULL);
130 assert(text_ob != NULL);
131 xorn_finalize_revision(rev4);
133 text_data.text.s = "";
134 text_data.text.len = 0;
135 sel = xornsch_select_by_text(rev4, &text_data.text);
136 assert(xorn_object_is_selected(rev4, sel, ob0) == false);
137 assert(xorn_object_is_selected(rev4, sel, ob1a) == false);
138 assert(xorn_object_is_selected(rev4, sel, ob1b) == false);
139 assert(xorn_object_is_selected(rev4, sel, text_ob) == false);
140 xorn_free_selection(sel);
142 text_data.text.s = "Hello world";
143 text_data.text.len = 11;
144 sel = xornsch_select_by_text(rev4, &text_data.text);
145 assert(xorn_object_is_selected(rev4, sel, ob0) == false);
146 assert(xorn_object_is_selected(rev4, sel, ob1a) == false);
147 assert(xorn_object_is_selected(rev4, sel, ob1b) == false);
148 assert(xorn_object_is_selected(rev4, sel, text_ob) == true);
149 xorn_free_selection(sel);
151 memset(&line, 0, sizeof line);
152 sel = xornsch_select_by_line(rev2, &line);
153 assert(xorn_object_is_selected(rev2, sel, ob0) == false);
154 assert(xorn_object_is_selected(rev2, sel, ob1a) == false);
155 assert(xorn_object_is_selected(rev2, sel, ob1b) == false);
156 xorn_free_selection(sel);
157 sel = xornsch_select_by_line(rev3, &line);
158 assert(xorn_object_is_selected(rev3, sel, ob0) == false);
159 assert(xorn_object_is_selected(rev3, sel, ob1a) == false);
160 assert(xorn_object_is_selected(rev3, sel, ob1b) == false);
161 xorn_free_selection(sel);
163 line.width = 1.;
164 sel = xornsch_select_by_line(rev2, &line);
165 assert(xorn_object_is_selected(rev2, sel, ob0) == true);
166 assert(xorn_object_is_selected(rev2, sel, ob1a) == true);
167 assert(xorn_object_is_selected(rev2, sel, ob1b) == true);
168 xorn_free_selection(sel);
169 sel = xornsch_select_by_line(rev3, &line);
170 assert(xorn_object_is_selected(rev3, sel, ob0) == false);
171 assert(xorn_object_is_selected(rev3, sel, ob1a) == false);
172 assert(xorn_object_is_selected(rev3, sel, ob1b) == true);
173 xorn_free_selection(sel);
175 memset(&fill, 0, sizeof fill);
176 sel = xornsch_select_by_fill(rev2, &fill);
177 assert(xorn_object_is_selected(rev2, sel, ob0) == false);
178 assert(xorn_object_is_selected(rev2, sel, ob1a) == true);
179 assert(xorn_object_is_selected(rev2, sel, ob1b) == false);
180 xorn_free_selection(sel);
181 sel = xornsch_select_by_fill(rev3, &fill);
182 assert(xorn_object_is_selected(rev3, sel, ob0) == false);
183 assert(xorn_object_is_selected(rev3, sel, ob1a) == false);
184 assert(xorn_object_is_selected(rev3, sel, ob1b) == false);
185 xorn_free_selection(sel);
187 fill.type = 1;
188 sel = xornsch_select_by_fill(rev2, &fill);
189 assert(xorn_object_is_selected(rev2, sel, ob0) == false);
190 assert(xorn_object_is_selected(rev2, sel, ob1a) == false);
191 assert(xorn_object_is_selected(rev2, sel, ob1b) == true);
192 xorn_free_selection(sel);
193 sel = xornsch_select_by_fill(rev3, &fill);
194 assert(xorn_object_is_selected(rev3, sel, ob0) == false);
195 assert(xorn_object_is_selected(rev3, sel, ob1a) == false);
196 assert(xorn_object_is_selected(rev3, sel, ob1b) == true);
197 xorn_free_selection(sel);
199 xorn_free_revision(rev4);
200 xorn_free_revision(rev3);
201 xorn_free_revision(rev2);
202 xorn_free_revision(rev1);
203 xorn_free_revision(rev0);
204 return 0;