Skip to content

Commit 381dd2e

Browse files
committed
[layout] Testcases for vertical grid..
1 parent 8941b00 commit 381dd2e

File tree

1 file changed

+201
-17
lines changed

1 file changed

+201
-17
lines changed

tests/tst_layout.cpp

Lines changed: 201 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -134,107 +134,94 @@ void tst_layoutnode_horizontal_grid()
134134
root->append(r[i]);
135135
}
136136

137-
// Layout out in a single row, based on cell size
137+
// cellsize, one row
138138
apply_w_h_cw_ch_r_c_m_s(root, 0, 0, 10, 20, 0, 0, 0, 0);
139139
check_equal(r[0]->geometry(), rect2d::fromXywh( 0, 0, 10, 20));
140140
check_equal(r[1]->geometry(), rect2d::fromXywh(10, 0, 10, 20));
141141
check_equal(r[2]->geometry(), rect2d::fromXywh(20, 0, 10, 20));
142142
check_equal(r[3]->geometry(), rect2d::fromXywh(30, 0, 10, 20));
143-
// Layout out in a single row, negative cell width
144143
apply_w_h_cw_ch_r_c_m_s(root, 0, 0, -10, 20, 0, 0, 0, 0);
145144
check_equal(r[0]->geometry(), rect2d::fromXywh(-10, 0, 10, 20));
146145
check_equal(r[1]->geometry(), rect2d::fromXywh(-20, 0, 10, 20));
147146
check_equal(r[2]->geometry(), rect2d::fromXywh(-30, 0, 10, 20));
148147
check_equal(r[3]->geometry(), rect2d::fromXywh(-40, 0, 10, 20));
149-
// Layout out in a single row, negative cell dimensions
150148
apply_w_h_cw_ch_r_c_m_s(root, 0, 0, -10, -20, 0, 0, 0, 0);
151149
check_equal(r[0]->geometry(), rect2d::fromXywh(-10, -20, 10, 20));
152150
check_equal(r[1]->geometry(), rect2d::fromXywh(-20, -20, 10, 20));
153151
check_equal(r[2]->geometry(), rect2d::fromXywh(-30, -20, 10, 20));
154152
check_equal(r[3]->geometry(), rect2d::fromXywh(-40, -20, 10, 20));
155-
// Layout out in a single row, negative cell height
156153
apply_w_h_cw_ch_r_c_m_s(root, 0, 0, 10, -20, 0, 0, 0, 0);
157154
check_equal(r[0]->geometry(), rect2d::fromXywh( 0, -20, 10, 20));
158155
check_equal(r[1]->geometry(), rect2d::fromXywh(10, -20, 10, 20));
159156
check_equal(r[2]->geometry(), rect2d::fromXywh(20, -20, 10, 20));
160157
check_equal(r[3]->geometry(), rect2d::fromXywh(30, -20, 10, 20));
161158

162-
// Layout out in a single row, based on cell size. With margin/spacing
159+
// cellsize, margin/spacing
163160
apply_w_h_cw_ch_r_c_m_s(root, 0, 0, 10, 20, 0, 0, 1, 2);
164161
check_equal(r[0]->geometry(), rect2d::fromXywh( 1, 1, 10, 20));
165162
check_equal(r[1]->geometry(), rect2d::fromXywh(13, 1, 10, 20));
166163
check_equal(r[2]->geometry(), rect2d::fromXywh(25, 1, 10, 20));
167164
check_equal(r[3]->geometry(), rect2d::fromXywh(37, 1, 10, 20));
168-
// Layout out in a single row, negative cellwidth, with margin/spacing
169165
apply_w_h_cw_ch_r_c_m_s(root, 0, 0, -10, 20, 0, 0, 1, 2);
170166
check_equal(r[0]->geometry(), rect2d::fromXywh(-11, 1, 10, 20));
171167
check_equal(r[1]->geometry(), rect2d::fromXywh(-23, 1, 10, 20));
172168
check_equal(r[2]->geometry(), rect2d::fromXywh(-35, 1, 10, 20));
173169
check_equal(r[3]->geometry(), rect2d::fromXywh(-47, 1, 10, 20));
174-
// Layout out in a single row, negative cell dimensions, with margin/spacing
175170
apply_w_h_cw_ch_r_c_m_s(root, 0, 0, -10, -20, 0, 0, 1, 2);
176171
check_equal(r[0]->geometry(), rect2d::fromXywh(-11, -21, 10, 20));
177172
check_equal(r[1]->geometry(), rect2d::fromXywh(-23, -21, 10, 20));
178173
check_equal(r[2]->geometry(), rect2d::fromXywh(-35, -21, 10, 20));
179174
check_equal(r[3]->geometry(), rect2d::fromXywh(-47, -21, 10, 20));
180-
// Layout out in a single row, negative cell height, with margin/spacing
181175
apply_w_h_cw_ch_r_c_m_s(root, 0, 0, 10, -20, 0, 0, 1, 2);
182176
check_equal(r[0]->geometry(), rect2d::fromXywh( 1, -21, 10, 20));
183177
check_equal(r[1]->geometry(), rect2d::fromXywh(13, -21, 10, 20));
184178
check_equal(r[2]->geometry(), rect2d::fromXywh(25, -21, 10, 20));
185179
check_equal(r[3]->geometry(), rect2d::fromXywh(37, -21, 10, 20));
186180

187-
// Layout out in a single row, based on width/4cols
181+
// width/height, 1x4 grid
188182
apply_w_h_cw_ch_r_c_m_s(root, 40, 20, 0, 0, 1, 4, 0, 0);
189183
check_equal(r[0]->geometry(), rect2d::fromXywh( 0, 0, 10, 20));
190184
check_equal(r[1]->geometry(), rect2d::fromXywh(10, 0, 10, 20));
191185
check_equal(r[2]->geometry(), rect2d::fromXywh(20, 0, 10, 20));
192186
check_equal(r[3]->geometry(), rect2d::fromXywh(30, 0, 10, 20));
193-
// Layout out in a single row, negative width/4cols
194187
apply_w_h_cw_ch_r_c_m_s(root, -40, 20, 0, 0, 1, 4, 0, 0);
195188
check_equal(r[0]->geometry(), rect2d::fromXywh(-10, 0, 10, 20));
196189
check_equal(r[1]->geometry(), rect2d::fromXywh(-20, 0, 10, 20));
197190
check_equal(r[2]->geometry(), rect2d::fromXywh(-30, 0, 10, 20));
198191
check_equal(r[3]->geometry(), rect2d::fromXywh(-40, 0, 10, 20));
199-
// Layout out in a single row, negative width/4cols negative height
200192
apply_w_h_cw_ch_r_c_m_s(root, -40, -20, 0, 0, 1, 4, 0, 0);
201193
check_equal(r[0]->geometry(), rect2d::fromXywh(-10, -20, 10, 20));
202194
check_equal(r[1]->geometry(), rect2d::fromXywh(-20, -20, 10, 20));
203195
check_equal(r[2]->geometry(), rect2d::fromXywh(-30, -20, 10, 20));
204196
check_equal(r[3]->geometry(), rect2d::fromXywh(-40, -20, 10, 20));
205-
// Layout out in a single row, width/4cols and negative height
206197
apply_w_h_cw_ch_r_c_m_s(root, 40, -20, 0, 0, 1, 4, 0, 0);
207198
check_equal(r[0]->geometry(), rect2d::fromXywh( 0, -20, 10, 20));
208199
check_equal(r[1]->geometry(), rect2d::fromXywh(10, -20, 10, 20));
209200
check_equal(r[2]->geometry(), rect2d::fromXywh(20, -20, 10, 20));
210201
check_equal(r[3]->geometry(), rect2d::fromXywh(30, -20, 10, 20));
211202

212-
// Layout out in a single row, based on width/4cols + margin/space
203+
// width/height, 1x4 grid, space/margin
213204
apply_w_h_cw_ch_r_c_m_s(root, 48, 22, 0, 0, 1, 4, 1, 2);
214205
check_equal(r[0]->geometry(), rect2d::fromXywh( 1, 1, 10, 20));
215206
check_equal(r[1]->geometry(), rect2d::fromXywh(13, 1, 10, 20));
216207
check_equal(r[2]->geometry(), rect2d::fromXywh(25, 1, 10, 20));
217208
check_equal(r[3]->geometry(), rect2d::fromXywh(37, 1, 10, 20));
218-
// Layout out in a single row, negative width/4cols + margin/space
219209
apply_w_h_cw_ch_r_c_m_s(root, -48, 22, 0, 0, 1, 4, 1, 2);
220210
check_equal(r[0]->geometry(), rect2d::fromXywh(-11, 1, 10, 20));
221211
check_equal(r[1]->geometry(), rect2d::fromXywh(-23, 1, 10, 20));
222212
check_equal(r[2]->geometry(), rect2d::fromXywh(-35, 1, 10, 20));
223213
check_equal(r[3]->geometry(), rect2d::fromXywh(-47, 1, 10, 20));
224-
// Layout out in a single row, negative width/4cols negative height + margin/space
225214
apply_w_h_cw_ch_r_c_m_s(root, -48, -22, 0, 0, 1, 4, 1, 2);
226215
check_equal(r[0]->geometry(), rect2d::fromXywh(-11, -21, 10, 20));
227216
check_equal(r[1]->geometry(), rect2d::fromXywh(-23, -21, 10, 20));
228217
check_equal(r[2]->geometry(), rect2d::fromXywh(-35, -21, 10, 20));
229218
check_equal(r[3]->geometry(), rect2d::fromXywh(-47, -21, 10, 20));
230-
// Layout out in a single row, width/4cols and negative height + margin/space
231219
apply_w_h_cw_ch_r_c_m_s(root, 48, -22, 0, 0, 1, 4, 1, 2);
232220
check_equal(r[0]->geometry(), rect2d::fromXywh( 1, -21, 10, 20));
233221
check_equal(r[1]->geometry(), rect2d::fromXywh(13, -21, 10, 20));
234222
check_equal(r[2]->geometry(), rect2d::fromXywh(25, -21, 10, 20));
235223
check_equal(r[3]->geometry(), rect2d::fromXywh(37, -21, 10, 20));
236224

237-
238225
// And then all the same tests, but this time limited to 2 columns
239226

240227
// cell size, 2 columns
@@ -331,10 +318,207 @@ void tst_layoutnode_horizontal_grid()
331318
root->destroy();
332319
}
333320

321+
322+
void tst_layoutnode_vertical_grid()
323+
{
324+
LayoutNode *root = LayoutNode::create();
325+
root->setActivationMode(LayoutNode::Explicit);
326+
root->setLayoutType(LayoutEngine::Grid_Vertical);
327+
328+
RectangleNode *r[4];
329+
for (int i=0; i<4; ++i) {
330+
r[i] = RectangleNode::create();
331+
root->append(r[i]);
332+
}
333+
334+
// cellsize, one column
335+
apply_w_h_cw_ch_r_c_m_s(root, 0, 0, 10, 20, 0, 0, 0, 0);
336+
check_equal(r[0]->geometry(), rect2d::fromXywh(0, 0, 10, 20));
337+
check_equal(r[1]->geometry(), rect2d::fromXywh(0, 20, 10, 20));
338+
check_equal(r[2]->geometry(), rect2d::fromXywh(0, 40, 10, 20));
339+
check_equal(r[3]->geometry(), rect2d::fromXywh(0, 60, 10, 20));
340+
apply_w_h_cw_ch_r_c_m_s(root, 0, 0, -10, 20, 0, 0, 0, 0);
341+
check_equal(r[0]->geometry(), rect2d::fromXywh(-10, 0, 10, 20));
342+
check_equal(r[1]->geometry(), rect2d::fromXywh(-10, 20, 10, 20));
343+
check_equal(r[2]->geometry(), rect2d::fromXywh(-10, 40, 10, 20));
344+
check_equal(r[3]->geometry(), rect2d::fromXywh(-10, 60, 10, 20));
345+
apply_w_h_cw_ch_r_c_m_s(root, 0, 0, -10, -20, 0, 0, 0, 0);
346+
check_equal(r[0]->geometry(), rect2d::fromXywh(-10, -20, 10, 20));
347+
check_equal(r[1]->geometry(), rect2d::fromXywh(-10, -40, 10, 20));
348+
check_equal(r[2]->geometry(), rect2d::fromXywh(-10, -60, 10, 20));
349+
check_equal(r[3]->geometry(), rect2d::fromXywh(-10, -80, 10, 20));
350+
apply_w_h_cw_ch_r_c_m_s(root, 0, 0, 10, -20, 0, 0, 0, 0);
351+
check_equal(r[0]->geometry(), rect2d::fromXywh(0, -20, 10, 20));
352+
check_equal(r[1]->geometry(), rect2d::fromXywh(0, -40, 10, 20));
353+
check_equal(r[2]->geometry(), rect2d::fromXywh(0, -60, 10, 20));
354+
check_equal(r[3]->geometry(), rect2d::fromXywh(0, -80, 10, 20));
355+
356+
// cellsize, one column, margin/spacing
357+
apply_w_h_cw_ch_r_c_m_s(root, 0, 0, 10, 20, 0, 0, 1, 2);
358+
check_equal(r[0]->geometry(), rect2d::fromXywh(1, 1, 10, 20));
359+
check_equal(r[1]->geometry(), rect2d::fromXywh(1, 23, 10, 20));
360+
check_equal(r[2]->geometry(), rect2d::fromXywh(1, 45, 10, 20));
361+
check_equal(r[3]->geometry(), rect2d::fromXywh(1, 67, 10, 20));
362+
apply_w_h_cw_ch_r_c_m_s(root, 0, 0, -10, 20, 0, 0, 1, 2);
363+
check_equal(r[0]->geometry(), rect2d::fromXywh(-11, 1, 10, 20));
364+
check_equal(r[1]->geometry(), rect2d::fromXywh(-11, 23, 10, 20));
365+
check_equal(r[2]->geometry(), rect2d::fromXywh(-11, 45, 10, 20));
366+
check_equal(r[3]->geometry(), rect2d::fromXywh(-11, 67, 10, 20));
367+
apply_w_h_cw_ch_r_c_m_s(root, 0, 0, -10, -20, 0, 0, 1, 2);
368+
check_equal(r[0]->geometry(), rect2d::fromXywh(-11, -21, 10, 20));
369+
check_equal(r[1]->geometry(), rect2d::fromXywh(-11, -43, 10, 20));
370+
check_equal(r[2]->geometry(), rect2d::fromXywh(-11, -65, 10, 20));
371+
check_equal(r[3]->geometry(), rect2d::fromXywh(-11, -87, 10, 20));
372+
apply_w_h_cw_ch_r_c_m_s(root, 0, 0, 10, -20, 0, 0, 1, 2);
373+
check_equal(r[0]->geometry(), rect2d::fromXywh(1, -21, 10, 20));
374+
check_equal(r[1]->geometry(), rect2d::fromXywh(1, -43, 10, 20));
375+
check_equal(r[2]->geometry(), rect2d::fromXywh(1, -65, 10, 20));
376+
check_equal(r[3]->geometry(), rect2d::fromXywh(1, -87, 10, 20));
377+
378+
// width/height, 4x1 grid
379+
apply_w_h_cw_ch_r_c_m_s(root, 10, 80, 0, 0, 4, 1, 0, 0);
380+
check_equal(r[0]->geometry(), rect2d::fromXywh(0, 0, 10, 20));
381+
check_equal(r[1]->geometry(), rect2d::fromXywh(0, 20, 10, 20));
382+
check_equal(r[2]->geometry(), rect2d::fromXywh(0, 40, 10, 20));
383+
check_equal(r[3]->geometry(), rect2d::fromXywh(0, 60, 10, 20));
384+
apply_w_h_cw_ch_r_c_m_s(root, -10, 80, 0, 0, 4, 1, 0, 0);
385+
check_equal(r[0]->geometry(), rect2d::fromXywh(-10, 0, 10, 20));
386+
check_equal(r[1]->geometry(), rect2d::fromXywh(-10, 20, 10, 20));
387+
check_equal(r[2]->geometry(), rect2d::fromXywh(-10, 40, 10, 20));
388+
check_equal(r[3]->geometry(), rect2d::fromXywh(-10, 60, 10, 20));
389+
apply_w_h_cw_ch_r_c_m_s(root, -10, -80, 0, 0, 4, 1, 0, 0);
390+
check_equal(r[0]->geometry(), rect2d::fromXywh(-10, -20, 10, 20));
391+
check_equal(r[1]->geometry(), rect2d::fromXywh(-10, -40, 10, 20));
392+
check_equal(r[2]->geometry(), rect2d::fromXywh(-10, -60, 10, 20));
393+
check_equal(r[3]->geometry(), rect2d::fromXywh(-10, -80, 10, 20));
394+
apply_w_h_cw_ch_r_c_m_s(root, 10, -80, 0, 0, 4, 1, 0, 0);
395+
check_equal(r[0]->geometry(), rect2d::fromXywh(0, -20, 10, 20));
396+
check_equal(r[1]->geometry(), rect2d::fromXywh(0, -40, 10, 20));
397+
check_equal(r[2]->geometry(), rect2d::fromXywh(0, -60, 10, 20));
398+
check_equal(r[3]->geometry(), rect2d::fromXywh(0, -80, 10, 20));
399+
400+
// width/height, 4x1 grid, space/margin
401+
apply_w_h_cw_ch_r_c_m_s(root, 12, 88, 0, 0, 4, 1, 1, 2);
402+
check_equal(r[0]->geometry(), rect2d::fromXywh(1, 1, 10, 20));
403+
check_equal(r[1]->geometry(), rect2d::fromXywh(1, 23, 10, 20));
404+
check_equal(r[2]->geometry(), rect2d::fromXywh(1, 45, 10, 20));
405+
check_equal(r[3]->geometry(), rect2d::fromXywh(1, 67, 10, 20));
406+
apply_w_h_cw_ch_r_c_m_s(root, -12, 88, 0, 0, 4, 1, 1, 2);
407+
check_equal(r[0]->geometry(), rect2d::fromXywh(-11, 1, 10, 20));
408+
check_equal(r[1]->geometry(), rect2d::fromXywh(-11, 23, 10, 20));
409+
check_equal(r[2]->geometry(), rect2d::fromXywh(-11, 45, 10, 20));
410+
check_equal(r[3]->geometry(), rect2d::fromXywh(-11, 67, 10, 20));
411+
apply_w_h_cw_ch_r_c_m_s(root, -12, -88, 0, 0, 4, 1, 1, 2);
412+
check_equal(r[0]->geometry(), rect2d::fromXywh(-11, -21, 10, 20));
413+
check_equal(r[1]->geometry(), rect2d::fromXywh(-11, -43, 10, 20));
414+
check_equal(r[2]->geometry(), rect2d::fromXywh(-11, -65, 10, 20));
415+
check_equal(r[3]->geometry(), rect2d::fromXywh(-11, -87, 10, 20));
416+
apply_w_h_cw_ch_r_c_m_s(root, 12, -88, 0, 0, 4, 1, 1, 2);
417+
check_equal(r[0]->geometry(), rect2d::fromXywh(1, -21, 10, 20));
418+
check_equal(r[1]->geometry(), rect2d::fromXywh(1, -43, 10, 20));
419+
check_equal(r[2]->geometry(), rect2d::fromXywh(1, -65, 10, 20));
420+
check_equal(r[3]->geometry(), rect2d::fromXywh(1, -87, 10, 20));
421+
422+
// And then all the same tests, but this time limited to 2 rows
423+
424+
// cell size, 2 rows
425+
apply_w_h_cw_ch_r_c_m_s(root, 0, 0, 10, 20, 2, 0, 0, 0);
426+
check_equal(r[0]->geometry(), rect2d::fromXywh( 0, 0, 10, 20));
427+
check_equal(r[1]->geometry(), rect2d::fromXywh( 0, 20, 10, 20));
428+
check_equal(r[2]->geometry(), rect2d::fromXywh(10, 0, 10, 20));
429+
check_equal(r[3]->geometry(), rect2d::fromXywh(10, 20, 10, 20));
430+
apply_w_h_cw_ch_r_c_m_s(root, 0, 0, -10, 20, 2, 0, 0, 0);
431+
check_equal(r[0]->geometry(), rect2d::fromXywh(-10, 0, 10, 20));
432+
check_equal(r[1]->geometry(), rect2d::fromXywh(-10, 20, 10, 20));
433+
check_equal(r[2]->geometry(), rect2d::fromXywh(-20, 0, 10, 20));
434+
check_equal(r[3]->geometry(), rect2d::fromXywh(-20, 20, 10, 20));
435+
apply_w_h_cw_ch_r_c_m_s(root, 0, 0, -10, -20, 2, 0, 0, 0);
436+
check_equal(r[0]->geometry(), rect2d::fromXywh(-10, -20, 10, 20));
437+
check_equal(r[1]->geometry(), rect2d::fromXywh(-10, -40, 10, 20));
438+
check_equal(r[2]->geometry(), rect2d::fromXywh(-20, -20, 10, 20));
439+
check_equal(r[3]->geometry(), rect2d::fromXywh(-20, -40, 10, 20));
440+
apply_w_h_cw_ch_r_c_m_s(root, 0, 0, 10, -20, 2, 0, 0, 0);
441+
check_equal(r[0]->geometry(), rect2d::fromXywh( 0, -20, 10, 20));
442+
check_equal(r[1]->geometry(), rect2d::fromXywh( 0, -40, 10, 20));
443+
check_equal(r[2]->geometry(), rect2d::fromXywh(10, -20, 10, 20));
444+
check_equal(r[3]->geometry(), rect2d::fromXywh(10, -40, 10, 20));
445+
446+
// cell size, space/margin, 2 rows
447+
apply_w_h_cw_ch_r_c_m_s(root, 0, 0, 10, 20, 2, 0, 1, 2);
448+
check_equal(r[0]->geometry(), rect2d::fromXywh( 1, 1, 10, 20));
449+
check_equal(r[1]->geometry(), rect2d::fromXywh( 1, 23, 10, 20));
450+
check_equal(r[2]->geometry(), rect2d::fromXywh(13, 1, 10, 20));
451+
check_equal(r[3]->geometry(), rect2d::fromXywh(13, 23, 10, 20));
452+
apply_w_h_cw_ch_r_c_m_s(root, 0, 0, -10, 20, 2, 0, 1, 2);
453+
check_equal(r[0]->geometry(), rect2d::fromXywh(-11, 1, 10, 20));
454+
check_equal(r[1]->geometry(), rect2d::fromXywh(-11, 23, 10, 20));
455+
check_equal(r[2]->geometry(), rect2d::fromXywh(-23, 1, 10, 20));
456+
check_equal(r[3]->geometry(), rect2d::fromXywh(-23, 23, 10, 20));
457+
apply_w_h_cw_ch_r_c_m_s(root, 0, 0, -10, -20, 2, 0, 1, 2);
458+
check_equal(r[0]->geometry(), rect2d::fromXywh(-11, -21, 10, 20));
459+
check_equal(r[1]->geometry(), rect2d::fromXywh(-11, -43, 10, 20));
460+
check_equal(r[2]->geometry(), rect2d::fromXywh(-23, -21, 10, 20));
461+
check_equal(r[3]->geometry(), rect2d::fromXywh(-23, -43, 10, 20));
462+
apply_w_h_cw_ch_r_c_m_s(root, 0, 0, 10, -20, 2, 0, 1, 2);
463+
check_equal(r[0]->geometry(), rect2d::fromXywh( 1, -21, 10, 20));
464+
check_equal(r[1]->geometry(), rect2d::fromXywh( 1, -43, 10, 20));
465+
check_equal(r[2]->geometry(), rect2d::fromXywh(13, -21, 10, 20));
466+
check_equal(r[3]->geometry(), rect2d::fromXywh(13, -43, 10, 20));
467+
468+
// width/height, 2x2 grid
469+
apply_w_h_cw_ch_r_c_m_s(root, 20, 40, 0, 0, 2, 2, 0, 0);
470+
check_equal(r[0]->geometry(), rect2d::fromXywh( 0, 0, 10, 20));
471+
check_equal(r[1]->geometry(), rect2d::fromXywh( 0, 20, 10, 20));
472+
check_equal(r[2]->geometry(), rect2d::fromXywh(10, 0, 10, 20));
473+
check_equal(r[3]->geometry(), rect2d::fromXywh(10, 20, 10, 20));
474+
apply_w_h_cw_ch_r_c_m_s(root, -20, 40, 0, 0, 2, 2, 0, 0);
475+
check_equal(r[0]->geometry(), rect2d::fromXywh(-10, 0, 10, 20));
476+
check_equal(r[1]->geometry(), rect2d::fromXywh(-10, 20, 10, 20));
477+
check_equal(r[2]->geometry(), rect2d::fromXywh(-20, 0, 10, 20));
478+
check_equal(r[3]->geometry(), rect2d::fromXywh(-20, 20, 10, 20));
479+
apply_w_h_cw_ch_r_c_m_s(root, -20, -40, 0, 0, 2, 2, 0, 0);
480+
check_equal(r[0]->geometry(), rect2d::fromXywh(-10, -20, 10, 20));
481+
check_equal(r[1]->geometry(), rect2d::fromXywh(-10, -40, 10, 20));
482+
check_equal(r[2]->geometry(), rect2d::fromXywh(-20, -20, 10, 20));
483+
check_equal(r[3]->geometry(), rect2d::fromXywh(-20, -40, 10, 20));
484+
apply_w_h_cw_ch_r_c_m_s(root, 20, -40, 0, 0, 2, 2, 0, 0);
485+
check_equal(r[0]->geometry(), rect2d::fromXywh( 0, -20, 10, 20));
486+
check_equal(r[1]->geometry(), rect2d::fromXywh( 0, -40, 10, 20));
487+
check_equal(r[2]->geometry(), rect2d::fromXywh(10, -20, 10, 20));
488+
check_equal(r[3]->geometry(), rect2d::fromXywh(10, -40, 10, 20));
489+
490+
// width/height, 2x2 grid
491+
apply_w_h_cw_ch_r_c_m_s(root, 24, 44, 0, 0, 2, 2, 1, 2);
492+
check_equal(r[0]->geometry(), rect2d::fromXywh( 1, 1, 10, 20));
493+
check_equal(r[1]->geometry(), rect2d::fromXywh( 1, 23, 10, 20));
494+
check_equal(r[2]->geometry(), rect2d::fromXywh(13, 1, 10, 20));
495+
check_equal(r[3]->geometry(), rect2d::fromXywh(13, 23, 10, 20));
496+
apply_w_h_cw_ch_r_c_m_s(root, -24, 44, 0, 0, 2, 2, 1, 2);
497+
check_equal(r[0]->geometry(), rect2d::fromXywh(-11, 1, 10, 20));
498+
check_equal(r[1]->geometry(), rect2d::fromXywh(-11, 23, 10, 20));
499+
check_equal(r[2]->geometry(), rect2d::fromXywh(-23, 1, 10, 20));
500+
check_equal(r[3]->geometry(), rect2d::fromXywh(-23, 23, 10, 20));
501+
apply_w_h_cw_ch_r_c_m_s(root, -24, -44, 0, 0, 2, 2, 1, 2);
502+
check_equal(r[0]->geometry(), rect2d::fromXywh(-11, -21, 10, 20));
503+
check_equal(r[1]->geometry(), rect2d::fromXywh(-11, -43, 10, 20));
504+
check_equal(r[2]->geometry(), rect2d::fromXywh(-23, -21, 10, 20));
505+
check_equal(r[3]->geometry(), rect2d::fromXywh(-23, -43, 10, 20));
506+
apply_w_h_cw_ch_r_c_m_s(root, 24, -44, 0, 0, 2, 2, 1, 2);
507+
check_equal(r[0]->geometry(), rect2d::fromXywh( 1, -21, 10, 20));
508+
check_equal(r[1]->geometry(), rect2d::fromXywh( 1, -43, 10, 20));
509+
check_equal(r[2]->geometry(), rect2d::fromXywh(13, -21, 10, 20));
510+
check_equal(r[3]->geometry(), rect2d::fromXywh(13, -43, 10, 20));
511+
512+
cout << __PRETTY_FUNCTION__ << ": ok" << endl;
513+
514+
root->destroy();
515+
}
516+
334517
int main(int argc, char **argv)
335518
{
336519
tst_layoutnode_properties();
337520
tst_layoutnode_horizontal_grid();
521+
tst_layoutnode_vertical_grid();
338522

339523
return 0;
340524
}

0 commit comments

Comments
 (0)