]> git.draconx.ca Git - rrace.git/blob - tests/game.at
tests: Skip reference RNG test on old compilers.
[rrace.git] / tests / game.at
1 # Copyright © 2022-2024 Nick Bowler
2 #
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 3 of the License, or
6 # (at your option) any later version.
7 #
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.
12 #
13 # You should have received a copy of the GNU General Public License
14 # along with this program.  If not, see <https://www.gnu.org/licenses/>.
15
16 AT_SETUP([board bitmap functions])
17
18 AT_CHECK([boardbit], [0],
19 [[left(0)     left(1)     left(2)     left(3)     left(4)
20  @....       @@...       @@@..       @@@@.       @@@@@
21  @....       @@...       @@@..       @@@@.       @@@@@
22  @....       @@...       @@@..       @@@@.       @@@@@
23  @....       @@...       @@@..       @@@@.       @@@@@
24  @....       @@...       @@@..       @@@@.       @@@@@
25
26 right(0)    right(1)    right(2)    right(3)    right(4)
27  @@@@@       .@@@@       ..@@@       ...@@       ....@
28  @@@@@       .@@@@       ..@@@       ...@@       ....@
29  @@@@@       .@@@@       ..@@@       ...@@       ....@
30  @@@@@       .@@@@       ..@@@       ...@@       ....@
31  @@@@@       .@@@@       ..@@@       ...@@       ....@
32
33 above(0)    above(1)    above(2)    above(3)    above(4)
34  @@@@@       @@@@@       @@@@@       @@@@@       @@@@@
35  .....       @@@@@       @@@@@       @@@@@       @@@@@
36  .....       .....       @@@@@       @@@@@       @@@@@
37  .....       .....       .....       @@@@@       @@@@@
38  .....       .....       .....       .....       @@@@@
39
40 below(0)    below(1)    below(2)    below(3)    below(4)
41  @@@@@       .....       .....       .....       .....
42  @@@@@       @@@@@       .....       .....       .....
43  @@@@@       @@@@@       @@@@@       .....       .....
44  @@@@@       @@@@@       @@@@@       @@@@@       .....
45  @@@@@       @@@@@       @@@@@       @@@@@       @@@@@
46 ]])
47
48 AT_CLEANUP
49
50 TEST_TAP_SIMPLE([board_rect], [boardrect], [], [board])
51
52 AT_SETUP([game_do_move zigzag])
53
54 AT_CHECK([boardmove m4_do(
55   [0010203040],
56   [4131211101],
57   [0212223242],
58   [4333231303],
59   [0414243444])], [0],
60 [[.@@@@
61 @@@@@
62 @@@@@
63 @@@@@
64 @@@@@
65
66 @.@@@
67 @@@@@
68 @@@@@
69 @@@@@
70 @@@@@
71
72 @@.@@
73 @@@@@
74 @@@@@
75 @@@@@
76 @@@@@
77
78 @@@.@
79 @@@@@
80 @@@@@
81 @@@@@
82 @@@@@
83
84 @@@@.
85 @@@@@
86 @@@@@
87 @@@@@
88 @@@@@
89
90 @@@@@
91 @@@@.
92 @@@@@
93 @@@@@
94 @@@@@
95
96 @@@@@
97 @@@.@
98 @@@@@
99 @@@@@
100 @@@@@
101
102 @@@@@
103 @@.@@
104 @@@@@
105 @@@@@
106 @@@@@
107
108 @@@@@
109 @.@@@
110 @@@@@
111 @@@@@
112 @@@@@
113
114 @@@@@
115 .@@@@
116 @@@@@
117 @@@@@
118 @@@@@
119
120 @@@@@
121 @@@@@
122 .@@@@
123 @@@@@
124 @@@@@
125
126 @@@@@
127 @@@@@
128 @.@@@
129 @@@@@
130 @@@@@
131
132 @@@@@
133 @@@@@
134 @@.@@
135 @@@@@
136 @@@@@
137
138 @@@@@
139 @@@@@
140 @@@.@
141 @@@@@
142 @@@@@
143
144 @@@@@
145 @@@@@
146 @@@@.
147 @@@@@
148 @@@@@
149
150 @@@@@
151 @@@@@
152 @@@@@
153 @@@@.
154 @@@@@
155
156 @@@@@
157 @@@@@
158 @@@@@
159 @@@.@
160 @@@@@
161
162 @@@@@
163 @@@@@
164 @@@@@
165 @@.@@
166 @@@@@
167
168 @@@@@
169 @@@@@
170 @@@@@
171 @.@@@
172 @@@@@
173
174 @@@@@
175 @@@@@
176 @@@@@
177 .@@@@
178 @@@@@
179
180 @@@@@
181 @@@@@
182 @@@@@
183 @@@@@
184 .@@@@
185
186 @@@@@
187 @@@@@
188 @@@@@
189 @@@@@
190 @.@@@
191
192 @@@@@
193 @@@@@
194 @@@@@
195 @@@@@
196 @@.@@
197
198 @@@@@
199 @@@@@
200 @@@@@
201 @@@@@
202 @@@.@
203
204 @@@@@
205 @@@@@
206 @@@@@
207 @@@@@
208 @@@@.
209 ]])
210
211 AT_CLEANUP
212
213 AT_SETUP([game_do_move vertical])
214
215 AT_CHECK([boardmove m4_do(
216   [020103000402],
217   [121311141012],
218   [222123202422],
219   [323331343032],
220   [424143404442])], [0],
221 [[@@@@@
222 @@@@@
223 .@@@@
224 @@@@@
225 @@@@@
226
227 @@@@@
228 .@@@@
229 @@@@@
230 @@@@@
231 @@@@@
232
233 @@@@@
234 @@@@@
235 @@@@@
236 .@@@@
237 @@@@@
238
239 .@@@@
240 @@@@@
241 @@@@@
242 @@@@@
243 @@@@@
244
245 @@@@@
246 @@@@@
247 @@@@@
248 @@@@@
249 .@@@@
250
251 @@@@@
252 @@@@@
253 .@@@@
254 @@@@@
255 @@@@@
256
257 @@@@@
258 @@@@@
259 @.@@@
260 @@@@@
261 @@@@@
262
263 @@@@@
264 @@@@@
265 @@@@@
266 @.@@@
267 @@@@@
268
269 @@@@@
270 @.@@@
271 @@@@@
272 @@@@@
273 @@@@@
274
275 @@@@@
276 @@@@@
277 @@@@@
278 @@@@@
279 @.@@@
280
281 @.@@@
282 @@@@@
283 @@@@@
284 @@@@@
285 @@@@@
286
287 @@@@@
288 @@@@@
289 @.@@@
290 @@@@@
291 @@@@@
292
293 @@@@@
294 @@@@@
295 @@.@@
296 @@@@@
297 @@@@@
298
299 @@@@@
300 @@.@@
301 @@@@@
302 @@@@@
303 @@@@@
304
305 @@@@@
306 @@@@@
307 @@@@@
308 @@.@@
309 @@@@@
310
311 @@.@@
312 @@@@@
313 @@@@@
314 @@@@@
315 @@@@@
316
317 @@@@@
318 @@@@@
319 @@@@@
320 @@@@@
321 @@.@@
322
323 @@@@@
324 @@@@@
325 @@.@@
326 @@@@@
327 @@@@@
328
329 @@@@@
330 @@@@@
331 @@@.@
332 @@@@@
333 @@@@@
334
335 @@@@@
336 @@@@@
337 @@@@@
338 @@@.@
339 @@@@@
340
341 @@@@@
342 @@@.@
343 @@@@@
344 @@@@@
345 @@@@@
346
347 @@@@@
348 @@@@@
349 @@@@@
350 @@@@@
351 @@@.@
352
353 @@@.@
354 @@@@@
355 @@@@@
356 @@@@@
357 @@@@@
358
359 @@@@@
360 @@@@@
361 @@@.@
362 @@@@@
363 @@@@@
364
365 @@@@@
366 @@@@@
367 @@@@.
368 @@@@@
369 @@@@@
370
371 @@@@@
372 @@@@.
373 @@@@@
374 @@@@@
375 @@@@@
376
377 @@@@@
378 @@@@@
379 @@@@@
380 @@@@.
381 @@@@@
382
383 @@@@.
384 @@@@@
385 @@@@@
386 @@@@@
387 @@@@@
388
389 @@@@@
390 @@@@@
391 @@@@@
392 @@@@@
393 @@@@.
394
395 @@@@@
396 @@@@@
397 @@@@.
398 @@@@@
399 @@@@@
400 ]])
401
402 AT_CLEANUP
403
404 AT_SETUP([game_do_move horizontal])
405
406 AT_CHECK([boardmove m4_do(
407   [203010400020],
408   [211131014121],
409   [223212420222],
410   [231333034323],
411   [243414440424])], [0],
412 [[@@.@@
413 @@@@@
414 @@@@@
415 @@@@@
416 @@@@@
417
418 @@@.@
419 @@@@@
420 @@@@@
421 @@@@@
422 @@@@@
423
424 @.@@@
425 @@@@@
426 @@@@@
427 @@@@@
428 @@@@@
429
430 @@@@.
431 @@@@@
432 @@@@@
433 @@@@@
434 @@@@@
435
436 .@@@@
437 @@@@@
438 @@@@@
439 @@@@@
440 @@@@@
441
442 @@.@@
443 @@@@@
444 @@@@@
445 @@@@@
446 @@@@@
447
448 @@@@@
449 @@.@@
450 @@@@@
451 @@@@@
452 @@@@@
453
454 @@@@@
455 @.@@@
456 @@@@@
457 @@@@@
458 @@@@@
459
460 @@@@@
461 @@@.@
462 @@@@@
463 @@@@@
464 @@@@@
465
466 @@@@@
467 .@@@@
468 @@@@@
469 @@@@@
470 @@@@@
471
472 @@@@@
473 @@@@.
474 @@@@@
475 @@@@@
476 @@@@@
477
478 @@@@@
479 @@.@@
480 @@@@@
481 @@@@@
482 @@@@@
483
484 @@@@@
485 @@@@@
486 @@.@@
487 @@@@@
488 @@@@@
489
490 @@@@@
491 @@@@@
492 @@@.@
493 @@@@@
494 @@@@@
495
496 @@@@@
497 @@@@@
498 @.@@@
499 @@@@@
500 @@@@@
501
502 @@@@@
503 @@@@@
504 @@@@.
505 @@@@@
506 @@@@@
507
508 @@@@@
509 @@@@@
510 .@@@@
511 @@@@@
512 @@@@@
513
514 @@@@@
515 @@@@@
516 @@.@@
517 @@@@@
518 @@@@@
519
520 @@@@@
521 @@@@@
522 @@@@@
523 @@.@@
524 @@@@@
525
526 @@@@@
527 @@@@@
528 @@@@@
529 @.@@@
530 @@@@@
531
532 @@@@@
533 @@@@@
534 @@@@@
535 @@@.@
536 @@@@@
537
538 @@@@@
539 @@@@@
540 @@@@@
541 .@@@@
542 @@@@@
543
544 @@@@@
545 @@@@@
546 @@@@@
547 @@@@.
548 @@@@@
549
550 @@@@@
551 @@@@@
552 @@@@@
553 @@.@@
554 @@@@@
555
556 @@@@@
557 @@@@@
558 @@@@@
559 @@@@@
560 @@.@@
561
562 @@@@@
563 @@@@@
564 @@@@@
565 @@@@@
566 @@@.@
567
568 @@@@@
569 @@@@@
570 @@@@@
571 @@@@@
572 @.@@@
573
574 @@@@@
575 @@@@@
576 @@@@@
577 @@@@@
578 @@@@.
579
580 @@@@@
581 @@@@@
582 @@@@@
583 @@@@@
584 .@@@@
585
586 @@@@@
587 @@@@@
588 @@@@@
589 @@@@@
590 @@.@@
591 ]])
592
593 AT_CLEANUP
594
595 TEST_TAP_SIMPLE([xoshiro256** sanity], [rng-test])
596
597 AT_SETUP([game_check_goal])
598
599 AT_DATA([boards.dat],
600 [[0 0 0 0 0 0
601 1f8c63f 1f8c63f 1f8c63f 0000 0000 0000
602 1f8c63f 1f8c63f 1f8c63f ffff 0000 0000
603 1f8c63f 1f8c63f 1f8c63f 0000 ffff 0000
604 1f8c63f 1f8c63f 1f8c63f 0000 0000 ffff
605 00739c0 1f8c63f 1f8c63f ffff 0000 0000
606 1f8c63f 00739c0 1f8c63f 0000 ffff 0000
607 1f8c63f 1f8c63f 00739c0 0000 0000 ffff
608 0000000 0000000 0000000 0001 0020 0400
609 ]])
610
611 AT_DATA([expout],
612 [[00000
613 00000
614 739c0
615 739c0
616 739c0
617 00000
618 00000
619 00000
620 10840
621 ]])
622
623 AT_CHECK([checkgoal <boards.dat >result.dat && cat result.dat], [0], [expout])
624
625 AT_CLEANUP
626
627 AT_SETUP([game_overlay_goal])
628
629 AT_DATA([boards.dat], [dnl
630 0 0 0  0  0  0
631 0 0 0 -1  0  0
632 0 0 0  0 -1  0
633 0 0 0  0  0 -1
634 1ffffff 1ffffff 1ffffff 0 0 0
635 ])
636
637 AT_DATA([expout], [dnl
638 0000000 0000000 0000000
639 00739c0 0000000 0000000
640 0000000 00739c0 0000000
641 0000000 0000000 00739c0
642 1f8c63f 1f8c63f 1f8c63f
643 ])
644
645 AT_CHECK([overlaygoal <boards.dat >result.dat && cat result.dat],
646   [0], [expout])
647
648 AT_CLEANUP
649
650 # Basic check that we get different initial games if we run the program
651 # multiple times in sequence.
652 AT_SETUP([game_reset initial seed])
653
654 AT_CHECK([initboard >a && initboard >b && initboard >c])
655 AT_CHECK([diff a b || diff b c || diff a c || exit 42], [42], [ignore-nolog])
656
657 AT_CLEANUP