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. */
23 xorn_revision_t rev0
, rev1
, rev2
, rev3
;
24 xorn_object_t ob0
, ob1a
, ob1b
;
27 struct xorn_double2d pos
;
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
);
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
);
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
);