Remove 'get_' from Moves getters
[purplehaze.git] / test / unit / test_moves.cpp
bloba762692b3124bf5f351bcfb18f7137bab7eacc8b
1 #include "../../src/moves.h"
2 #include "../../src/board.h"
3 #include "../../src/position.h"
4 #include "gtest/gtest.h"
6 TEST(MoveListTest, Size)
8 int list_size = (MAX_PLY * MAX_BF) * sizeof(ExtendedMove);
9 int size = list_size + sizeof(unsigned int);
11 // MoveList's internal array's size should not be a power of two
12 //EXPECT_NE(0, list_size & (list_size - 1));
14 EXPECT_EQ(128 * 256 * 4, list_size);
15 EXPECT_EQ(list_size + 4, size);
16 EXPECT_EQ(size, sizeof(MoveList));
19 TEST(MoveListTest, Constructor)
21 MoveList moves;
22 for (int i = 0; i < MAX_PLY; ++i) {
23 for (int j = 0; j < MAX_BF; ++j) {
24 // Test default move
25 EXPECT_TRUE(moves[j].is_null());
27 // Test default score
28 EXPECT_EQ(0, moves[j].value());
30 moves.inc_ply();
34 TEST(MoveListTest, Assignement)
36 MoveList moves;
37 Move m;
38 for (int i = 0; i < MAX_PLY; ++i) {
39 for (int j = 0; j < MAX_BF; ++j) {
40 ExtendedMove em1(m, i + j);
41 moves[j] = em1;
42 EXPECT_EQ(em1, moves[j]);
43 EXPECT_EQ(em1.value(), moves[j].value());
45 moves.inc_ply();
47 for (int i = MAX_PLY - 1; i > 0; --i) {
48 moves.dec_ply();
49 for (int j = 0; j < MAX_BF; ++j) {
50 ExtendedMove em1(m, i + j);
51 EXPECT_EQ(em1, moves[j]);
52 EXPECT_EQ(em1.value(), moves[j].value());
55 moves.clear();
56 for (int i = 0; i < MAX_PLY; ++i) {
57 for (int j = 0; j < MAX_BF; ++j) {
58 ExtendedMove em1(m, i + j);
59 EXPECT_EQ(em1, moves[j]);
60 EXPECT_EQ(em1.value(), moves[j].value());
62 moves.inc_ply();
67 TEST(MovesTest, Size)
69 int size =
70 MOVES_STATE_SIZE * sizeof(unsigned char) + // 5 bytes
71 3 + // 3 bytes (padding)
72 sizeof(MoveList*) + // 4 bytes
73 sizeof(Position*) + // 4 bytes
74 sizeof(Board*) + // 4 bytes
75 sizeof(Pieces*) + // 4 bytes
76 2 * sizeof(unsigned char) + // 2 bytes
77 sizeof(MovesState) + // 1 byte
78 sizeof(bool); // 1 byte
79 EXPECT_EQ(28, size);
80 EXPECT_EQ(size, sizeof(Moves));
83 TEST(MovesTest, Constructor)
85 Position position;
86 MoveList list;
87 Board board;
88 Pieces pieces;
90 Move m;
91 ExtendedMove em(m, 50);
92 list[0] = em;
93 EXPECT_EQ(em.value(), list[0].value());
95 Moves moves(board, pieces, position, list);
97 EXPECT_EQ(BEST, moves.state());
99 // Test if MoveList::inc_ply() has been implicitly called by Moves()
100 for (int i = 0; i < MAX_PLY; ++i) {
101 EXPECT_EQ(0, list[i].value());
103 list.dec_ply();
104 EXPECT_EQ(em.value(), list[0].value());