diff options
Diffstat (limited to 'src/main.c')
-rw-r--r-- | src/main.c | 31 |
1 files changed, 22 insertions, 9 deletions
@@ -1,17 +1,30 @@ #include "unittest.h" #include "board.h" -void test_notations() { - printf("%u\n", notation_to_index('e', 4)); - unit_test(notation_to_index('e', 4) == 28, "Notation e4 is index 28"); +int main() { + { // Pop count + unit_test(pop_count(0b01110) == 3, "Pop count of 01110 is 3"); + } - char notation[2] = "x0"; - index_to_notation(28, notation); - unit_test(notation[0] == 'e' && notation [1] == '4', "Index 28 is notation e4"); -} + { // Test knight attacks + Bitboard attacks[64]; + precompute_knight_attack_table(attacks); -int main() { - test_notations(); + int max_attacks = 0; + for (int i = 0; i < 64; i++) { + int attack_count = pop_count(attacks[i]); + if (attack_count > max_attacks) max_attacks = attack_count; + } + unit_test(max_attacks == 8, "Max amount of knight attacks should be 8"); + + { // Knight on b7 attack table + U64 bit = 1; + unit_test( + attacks[b7] == ((bit << d8) | (bit << d6) | (bit << c5) | (bit << a5)), + "Knight on b7 attacks d8, d6, c5, a5" + ); + } + } report(); return 0; |