48SCENARIO(
"Calculating Blocks",
"[userGainCtrl]" )
53 std::vector<uint16_t> blocks;
54 std::vector<std::string> names;
61 REQUIRE(blocks.size() == 1);
62 REQUIRE(blocks[0] == 24);
67 REQUIRE(blocks.size() == 2);
68 REQUIRE(blocks[0] == 24);
69 REQUIRE(blocks[1] == 56);
74 REQUIRE(blocks.size() == 3);
75 REQUIRE(blocks[0] == 24);
76 REQUIRE(blocks[1] == 56);
77 REQUIRE(blocks[2] == 88);
81 WHEN(
"Partial blocks")
86 REQUIRE(blocks.size() == 2);
87 REQUIRE(blocks[0] == 24);
88 REQUIRE(blocks[1] == 1);
93 REQUIRE(blocks.size() == 3);
94 REQUIRE(blocks[0] == 24);
95 REQUIRE(blocks[1] == 56);
96 REQUIRE(blocks[2] == 5);
101 REQUIRE(blocks.size() == 4);
102 REQUIRE(blocks[0] == 24);
103 REQUIRE(blocks[1] == 56);
104 REQUIRE(blocks[2] == 88);
105 REQUIRE(blocks[3] == 119);
110 WHEN(
"Full blocks, Zernikes in 1 block, no split")
112 rv =
blockModes(blocks, names, 24, 10,
false);
114 REQUIRE(blocks.size() == 4);
115 REQUIRE(blocks[0] == 2);
116 REQUIRE(blocks[1] == 1);
117 REQUIRE(blocks[2] == 7);
118 REQUIRE(blocks[3] == 14);
124 REQUIRE(blocks.size() == 5);
125 REQUIRE(blocks[0] == 2);
126 REQUIRE(blocks[1] == 1);
127 REQUIRE(blocks[2] == 2);
128 REQUIRE(blocks[3] == 19);
129 REQUIRE(blocks[4] == 56);
131 rv =
blockModes(blocks, names, 168, 23,
false);
134 REQUIRE(blocks.size() == 6);
135 REQUIRE(blocks[0] == 2);
136 REQUIRE(blocks[1] == 1);
137 REQUIRE(blocks[2] == 20);
138 REQUIRE(blocks[3] == 1);
139 REQUIRE(blocks[4] == 56);
140 REQUIRE(blocks[5] == 88);
144 WHEN(
"Full blocks, Zernikes in 2 blocks, no split")
146 rv =
blockModes(blocks, names, 24, 25,
false);
149 REQUIRE(blocks.size() == 3);
150 REQUIRE(blocks[0] == 2);
151 REQUIRE(blocks[1] == 1);
152 REQUIRE(blocks[2] == 22);
154 rv =
blockModes(blocks, names, 80, 25,
false);
157 REQUIRE(blocks.size() == 4);
158 REQUIRE(blocks[0] == 2);
159 REQUIRE(blocks[1] == 1);
160 REQUIRE(blocks[2] == 22);
161 REQUIRE(blocks[3] == 55);
163 rv =
blockModes(blocks, names, 168, 79,
false);
165 REQUIRE(blocks.size() == 5);
166 REQUIRE(blocks[0] == 2);
167 REQUIRE(blocks[1] == 1);
168 REQUIRE(blocks[2] == 76);
169 REQUIRE(blocks[3] == 1);
170 REQUIRE(blocks[4] == 88);
174 WHEN(
"Partial blocks, Zernikes in 1 block, no split")
176 rv =
blockModes(blocks, names, 25, 10,
false);
179 REQUIRE(blocks.size() == 5);
180 REQUIRE(blocks[0] == 2);
181 REQUIRE(blocks[1] == 1);
182 REQUIRE(blocks[2] == 7);
183 REQUIRE(blocks[3] == 14);
184 REQUIRE(blocks[4] == 1);
189 REQUIRE(blocks.size() == 6);
190 REQUIRE(blocks[0] == 2);
191 REQUIRE(blocks[1] == 1);
192 REQUIRE(blocks[2] == 2);
193 REQUIRE(blocks[3] == 19);
194 REQUIRE(blocks[4] == 56);
195 REQUIRE(blocks[5] == 5);
197 rv =
blockModes(blocks, names, 287, 23,
false);
200 REQUIRE(blocks.size() == 7);
201 REQUIRE(blocks[0] == 2);
202 REQUIRE(blocks[1] == 1);
203 REQUIRE(blocks[2] == 20);
204 REQUIRE(blocks[3] == 1);
205 REQUIRE(blocks[4] == 56);
206 REQUIRE(blocks[5] == 88);
207 REQUIRE(blocks[6] == 119);
211 WHEN(
"Partial blocks, Zernikes in 2 blocks, no split")
213 rv =
blockModes(blocks, names, 26, 25,
false);
216 REQUIRE(blocks.size() == 4);
217 REQUIRE(blocks[0] == 2);
218 REQUIRE(blocks[1] == 1);
219 REQUIRE(blocks[2] == 22);
220 REQUIRE(blocks[3] == 1);
222 rv =
blockModes(blocks, names, 85, 25,
false);
225 REQUIRE(blocks.size() == 5);
226 REQUIRE(blocks[0] == 2);
227 REQUIRE(blocks[1] == 1);
228 REQUIRE(blocks[2] == 22);
229 REQUIRE(blocks[3] == 55);
230 REQUIRE(blocks[4] == 5);
232 rv =
blockModes(blocks, names, 287, 79,
false);
235 REQUIRE(blocks.size() == 6);
236 REQUIRE(blocks[0] == 2);
237 REQUIRE(blocks[1] == 1);
238 REQUIRE(blocks[2] == 76);
239 REQUIRE(blocks[3] == 1);
240 REQUIRE(blocks[4] == 88);
241 REQUIRE(blocks[5] == 119);
245 WHEN(
"Full blocks, Zernikes in 1 block, with split")
249 REQUIRE(blocks.size() == 5);
250 REQUIRE(blocks[0] == 1);
251 REQUIRE(blocks[1] == 1);
252 REQUIRE(blocks[2] == 1);
253 REQUIRE(blocks[3] == 7);
254 REQUIRE(blocks[4] == 14);
260 REQUIRE(blocks.size() == 6);
261 REQUIRE(blocks[0] == 1);
262 REQUIRE(blocks[1] == 1);
263 REQUIRE(blocks[2] == 1);
264 REQUIRE(blocks[3] == 2);
265 REQUIRE(blocks[4] == 19);
266 REQUIRE(blocks[5] == 56);
268 rv =
blockModes(blocks, names, 168, 23,
true);
271 REQUIRE(blocks.size() == 7);
272 REQUIRE(blocks[0] == 1);
273 REQUIRE(blocks[1] == 1);
274 REQUIRE(blocks[2] == 1);
275 REQUIRE(blocks[3] == 20);
276 REQUIRE(blocks[4] == 1);
277 REQUIRE(blocks[5] == 56);
278 REQUIRE(blocks[6] == 88);
282 WHEN(
"Full blocks, Zernikes in 2 blocks, with split")
287 REQUIRE(blocks.size() == 4);
288 REQUIRE(blocks[0] == 1);
289 REQUIRE(blocks[1] == 1);
290 REQUIRE(blocks[2] == 1);
291 REQUIRE(blocks[3] == 22);
296 REQUIRE(blocks.size() == 5);
297 REQUIRE(blocks[0] == 1);
298 REQUIRE(blocks[1] == 1);
299 REQUIRE(blocks[2] == 1);
300 REQUIRE(blocks[3] == 22);
301 REQUIRE(blocks[4] == 55);
303 rv =
blockModes(blocks, names, 168, 79,
true);
305 REQUIRE(blocks.size() == 6);
306 REQUIRE(blocks[0] == 1);
307 REQUIRE(blocks[1] == 1);
308 REQUIRE(blocks[2] == 1);
309 REQUIRE(blocks[3] == 76);
310 REQUIRE(blocks[4] == 1);
311 REQUIRE(blocks[5] == 88);
315 WHEN(
"Partial blocks, Zernikes in 1 block, with split")
320 REQUIRE(blocks.size() == 6);
321 REQUIRE(blocks[0] == 1);
322 REQUIRE(blocks[1] == 1);
323 REQUIRE(blocks[2] == 1);
324 REQUIRE(blocks[3] == 7);
325 REQUIRE(blocks[4] == 14);
326 REQUIRE(blocks[5] == 1);
331 REQUIRE(blocks.size() == 7);
332 REQUIRE(blocks[0] == 1);
333 REQUIRE(blocks[1] == 1);
334 REQUIRE(blocks[2] == 1);
335 REQUIRE(blocks[3] == 2);
336 REQUIRE(blocks[4] == 19);
337 REQUIRE(blocks[5] == 56);
338 REQUIRE(blocks[6] == 5);
340 rv =
blockModes(blocks, names, 287, 23,
true);
343 REQUIRE(blocks.size() == 8);
344 REQUIRE(blocks[0] == 1);
345 REQUIRE(blocks[1] == 1);
346 REQUIRE(blocks[2] == 1);
347 REQUIRE(blocks[3] == 20);
348 REQUIRE(blocks[4] == 1);
349 REQUIRE(blocks[5] == 56);
350 REQUIRE(blocks[6] == 88);
351 REQUIRE(blocks[7] == 119);
355 WHEN(
"Partial blocks, Zernikes in 2 blocks, with split")
360 REQUIRE(blocks.size() == 5);
361 REQUIRE(blocks[0] == 1);
362 REQUIRE(blocks[1] == 1);
363 REQUIRE(blocks[2] == 1);
364 REQUIRE(blocks[3] == 22);
365 REQUIRE(blocks[4] == 1);
370 REQUIRE(blocks.size() == 6);
371 REQUIRE(blocks[0] == 1);
372 REQUIRE(blocks[1] == 1);
373 REQUIRE(blocks[2] == 1);
374 REQUIRE(blocks[3] == 22);
375 REQUIRE(blocks[4] == 55);
376 REQUIRE(blocks[5] == 5);
378 rv =
blockModes(blocks, names, 287, 79,
true);
381 REQUIRE(blocks.size() == 7);
382 REQUIRE(blocks[0] == 1);
383 REQUIRE(blocks[1] == 1);
384 REQUIRE(blocks[2] == 1);
385 REQUIRE(blocks[3] == 76);
386 REQUIRE(blocks[4] == 1);
387 REQUIRE(blocks[5] == 88);
388 REQUIRE(blocks[6] == 119);
393 WHEN(
"Partial blocks, Zernikes in 3 blocks, with split")
398 REQUIRE(blocks.size() == 4);
399 REQUIRE(blocks[0] == 1);
400 REQUIRE(blocks[1] == 1);
401 REQUIRE(blocks[2] == 1);
402 REQUIRE(blocks[3] == 78);
407 REQUIRE(blocks.size() == 5);
408 REQUIRE(blocks[0] == 1);
409 REQUIRE(blocks[1] == 1);
410 REQUIRE(blocks[2] == 1);
411 REQUIRE(blocks[3] == 78);
412 REQUIRE(blocks[4] == 4);
414 rv =
blockModes(blocks, names, 287, 100,
true);
417 REQUIRE(blocks.size() == 6);
418 REQUIRE(blocks[0] == 1);
419 REQUIRE(blocks[1] == 1);
420 REQUIRE(blocks[2] == 1);
421 REQUIRE(blocks[3] == 97);
422 REQUIRE(blocks[4] == 68);
423 REQUIRE(blocks[5] == 119);
427 WHEN(
"The Full MagAO-X")
429 rv =
blockModes(blocks, names, 2400, 10,
true);
432 REQUIRE(blocks.size() == 16);
433 REQUIRE(blocks[0] == 1);
434 REQUIRE(blocks[1] == 1);
435 REQUIRE(blocks[2] == 1);
436 REQUIRE(blocks[3] == 7);
437 REQUIRE(blocks[4] == 14);
438 REQUIRE(blocks[5] == 56);
439 REQUIRE(blocks[6] == 88);
440 REQUIRE(blocks[7] == 120);
441 REQUIRE(blocks[8] == 152);
442 REQUIRE(blocks[9] == 184);
443 REQUIRE(blocks[10] == 216);
444 REQUIRE(blocks[11] == 248);
445 REQUIRE(blocks[12] == 280);
446 REQUIRE(blocks[13] == 312);
447 REQUIRE(blocks[14] == 344);
448 REQUIRE(blocks[15] == 376);