# Copyright © 2022-2023 Nick Bowler # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . AT_SETUP([board bitmap functions]) AT_CHECK([boardbit], [0], [[left(0) left(1) left(2) left(3) left(4) @.... @@... @@@.. @@@@. @@@@@ @.... @@... @@@.. @@@@. @@@@@ @.... @@... @@@.. @@@@. @@@@@ @.... @@... @@@.. @@@@. @@@@@ @.... @@... @@@.. @@@@. @@@@@ right(0) right(1) right(2) right(3) right(4) @@@@@ .@@@@ ..@@@ ...@@ ....@ @@@@@ .@@@@ ..@@@ ...@@ ....@ @@@@@ .@@@@ ..@@@ ...@@ ....@ @@@@@ .@@@@ ..@@@ ...@@ ....@ @@@@@ .@@@@ ..@@@ ...@@ ....@ above(0) above(1) above(2) above(3) above(4) @@@@@ @@@@@ @@@@@ @@@@@ @@@@@ ..... @@@@@ @@@@@ @@@@@ @@@@@ ..... ..... @@@@@ @@@@@ @@@@@ ..... ..... ..... @@@@@ @@@@@ ..... ..... ..... ..... @@@@@ below(0) below(1) below(2) below(3) below(4) @@@@@ ..... ..... ..... ..... @@@@@ @@@@@ ..... ..... ..... @@@@@ @@@@@ @@@@@ ..... ..... @@@@@ @@@@@ @@@@@ @@@@@ ..... @@@@@ @@@@@ @@@@@ @@@@@ @@@@@ ]]) AT_CLEANUP TEST_TAP_SIMPLE([board_rect], [boardrect], [], [board]) AT_SETUP([game_do_move zigzag]) AT_CHECK([boardmove m4_do( [0010203040], [4131211101], [0212223242], [4333231303], [0414243444])], [0], [[.@@@@ @@@@@ @@@@@ @@@@@ @@@@@ @.@@@ @@@@@ @@@@@ @@@@@ @@@@@ @@.@@ @@@@@ @@@@@ @@@@@ @@@@@ @@@.@ @@@@@ @@@@@ @@@@@ @@@@@ @@@@. @@@@@ @@@@@ @@@@@ @@@@@ @@@@@ @@@@. @@@@@ @@@@@ @@@@@ @@@@@ @@@.@ @@@@@ @@@@@ @@@@@ @@@@@ @@.@@ @@@@@ @@@@@ @@@@@ @@@@@ @.@@@ @@@@@ @@@@@ @@@@@ @@@@@ .@@@@ @@@@@ @@@@@ @@@@@ @@@@@ @@@@@ .@@@@ @@@@@ @@@@@ @@@@@ @@@@@ @.@@@ @@@@@ @@@@@ @@@@@ @@@@@ @@.@@ @@@@@ @@@@@ @@@@@ @@@@@ @@@.@ @@@@@ @@@@@ @@@@@ @@@@@ @@@@. @@@@@ @@@@@ @@@@@ @@@@@ @@@@@ @@@@. @@@@@ @@@@@ @@@@@ @@@@@ @@@.@ @@@@@ @@@@@ @@@@@ @@@@@ @@.@@ @@@@@ @@@@@ @@@@@ @@@@@ @.@@@ @@@@@ @@@@@ @@@@@ @@@@@ .@@@@ @@@@@ @@@@@ @@@@@ @@@@@ @@@@@ .@@@@ @@@@@ @@@@@ @@@@@ @@@@@ @.@@@ @@@@@ @@@@@ @@@@@ @@@@@ @@.@@ @@@@@ @@@@@ @@@@@ @@@@@ @@@.@ @@@@@ @@@@@ @@@@@ @@@@@ @@@@. ]]) AT_CLEANUP AT_SETUP([game_do_move vertical]) AT_CHECK([boardmove m4_do( [020103000402], [121311141012], [222123202422], [323331343032], [424143404442])], [0], [[@@@@@ @@@@@ .@@@@ @@@@@ @@@@@ @@@@@ .@@@@ @@@@@ @@@@@ @@@@@ @@@@@ @@@@@ @@@@@ .@@@@ @@@@@ .@@@@ @@@@@ @@@@@ @@@@@ @@@@@ @@@@@ @@@@@ @@@@@ @@@@@ .@@@@ @@@@@ @@@@@ .@@@@ @@@@@ @@@@@ @@@@@ @@@@@ @.@@@ @@@@@ @@@@@ @@@@@ @@@@@ @@@@@ @.@@@ @@@@@ @@@@@ @.@@@ @@@@@ @@@@@ @@@@@ @@@@@ @@@@@ @@@@@ @@@@@ @.@@@ @.@@@ @@@@@ @@@@@ @@@@@ @@@@@ @@@@@ @@@@@ @.@@@ @@@@@ @@@@@ @@@@@ @@@@@ @@.@@ @@@@@ @@@@@ @@@@@ @@.@@ @@@@@ @@@@@ @@@@@ @@@@@ @@@@@ @@@@@ @@.@@ @@@@@ @@.@@ @@@@@ @@@@@ @@@@@ @@@@@ @@@@@ @@@@@ @@@@@ @@@@@ @@.@@ @@@@@ @@@@@ @@.@@ @@@@@ @@@@@ @@@@@ @@@@@ @@@.@ @@@@@ @@@@@ @@@@@ @@@@@ @@@@@ @@@.@ @@@@@ @@@@@ @@@.@ @@@@@ @@@@@ @@@@@ @@@@@ @@@@@ @@@@@ @@@@@ @@@.@ @@@.@ @@@@@ @@@@@ @@@@@ @@@@@ @@@@@ @@@@@ @@@.@ @@@@@ @@@@@ @@@@@ @@@@@ @@@@. @@@@@ @@@@@ @@@@@ @@@@. @@@@@ @@@@@ @@@@@ @@@@@ @@@@@ @@@@@ @@@@. @@@@@ @@@@. @@@@@ @@@@@ @@@@@ @@@@@ @@@@@ @@@@@ @@@@@ @@@@@ @@@@. @@@@@ @@@@@ @@@@. @@@@@ @@@@@ ]]) AT_CLEANUP AT_SETUP([game_do_move horizontal]) AT_CHECK([boardmove m4_do( [203010400020], [211131014121], [223212420222], [231333034323], [243414440424])], [0], [[@@.@@ @@@@@ @@@@@ @@@@@ @@@@@ @@@.@ @@@@@ @@@@@ @@@@@ @@@@@ @.@@@ @@@@@ @@@@@ @@@@@ @@@@@ @@@@. @@@@@ @@@@@ @@@@@ @@@@@ .@@@@ @@@@@ @@@@@ @@@@@ @@@@@ @@.@@ @@@@@ @@@@@ @@@@@ @@@@@ @@@@@ @@.@@ @@@@@ @@@@@ @@@@@ @@@@@ @.@@@ @@@@@ @@@@@ @@@@@ @@@@@ @@@.@ @@@@@ @@@@@ @@@@@ @@@@@ .@@@@ @@@@@ @@@@@ @@@@@ @@@@@ @@@@. @@@@@ @@@@@ @@@@@ @@@@@ @@.@@ @@@@@ @@@@@ @@@@@ @@@@@ @@@@@ @@.@@ @@@@@ @@@@@ @@@@@ @@@@@ @@@.@ @@@@@ @@@@@ @@@@@ @@@@@ @.@@@ @@@@@ @@@@@ @@@@@ @@@@@ @@@@. @@@@@ @@@@@ @@@@@ @@@@@ .@@@@ @@@@@ @@@@@ @@@@@ @@@@@ @@.@@ @@@@@ @@@@@ @@@@@ @@@@@ @@@@@ @@.@@ @@@@@ @@@@@ @@@@@ @@@@@ @.@@@ @@@@@ @@@@@ @@@@@ @@@@@ @@@.@ @@@@@ @@@@@ @@@@@ @@@@@ .@@@@ @@@@@ @@@@@ @@@@@ @@@@@ @@@@. @@@@@ @@@@@ @@@@@ @@@@@ @@.@@ @@@@@ @@@@@ @@@@@ @@@@@ @@@@@ @@.@@ @@@@@ @@@@@ @@@@@ @@@@@ @@@.@ @@@@@ @@@@@ @@@@@ @@@@@ @.@@@ @@@@@ @@@@@ @@@@@ @@@@@ @@@@. @@@@@ @@@@@ @@@@@ @@@@@ .@@@@ @@@@@ @@@@@ @@@@@ @@@@@ @@.@@ ]]) AT_CLEANUP AT_SETUP([xoshiro256** sanity]) AT_CHECK([rng-test >out grep -v '^ok' out], [0], [1..200 ]) AT_CLEANUP AT_SETUP([game_check_goal]) AT_DATA([boards.dat], [[0 0 0 0 0 0 1f8c63f 1f8c63f 1f8c63f 0000 0000 0000 1f8c63f 1f8c63f 1f8c63f ffff 0000 0000 1f8c63f 1f8c63f 1f8c63f 0000 ffff 0000 1f8c63f 1f8c63f 1f8c63f 0000 0000 ffff 00739c0 1f8c63f 1f8c63f ffff 0000 0000 1f8c63f 00739c0 1f8c63f 0000 ffff 0000 1f8c63f 1f8c63f 00739c0 0000 0000 ffff 0000000 0000000 0000000 0001 0020 0400 ]]) AT_DATA([expout], [[00000 00000 739c0 739c0 739c0 00000 00000 00000 10840 ]]) AT_CHECK([checkgoal result.dat && cat result.dat], [0], [expout]) AT_CLEANUP AT_SETUP([game_overlay_goal]) AT_DATA([boards.dat], [dnl 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 -1 0 0 0 0 0 0 -1 1ffffff 1ffffff 1ffffff 0 0 0 ]) AT_DATA([expout], [dnl 0000000 0000000 0000000 00739c0 0000000 0000000 0000000 00739c0 0000000 0000000 0000000 00739c0 1f8c63f 1f8c63f 1f8c63f ]) AT_CHECK([overlaygoal result.dat && cat result.dat], [0], [expout]) AT_CLEANUP