TEST_F(HexBoardTest,HexBoardBasicFuncs) { //2. test setNodeValue //3. test setNumofhexgons //4. test resetHexBoard(); int numofhexgon = 5; int numofedges = (numofhexgon * numofhexgon * 2 + 6); HexBoard board(numofhexgon); HexBoard playersboard; playersboard.setNumofhexgons(numofhexgon); ASSERT_EQ(board.getSizeOfVertices(), numofhexgon * numofhexgon); ASSERT_EQ(board.getSizeOfEdges(), numofedges); ASSERT_EQ(playersboard.getSizeOfVertices(), numofhexgon * numofhexgon); ASSERT_EQ(playersboard.getSizeOfEdges(), 0); int k = 0; for (int i = 1; i <= numofhexgon * numofhexgon; ++i) { hexgonValKind playerkind; if (i % 2 == 0) playerkind = hexgonValKind_RED; else playerkind = hexgonValKind_BLUE; ASSERT_EQ(hexgonValKind_EMPTY, board.getNodeValue(i)); ASSERT_EQ(hexgonValKind_EMPTY, playersboard.getNodeValue(i)); playersboard.setEdgeValue(i); vector<int> neighbors = playersboard.getNeighbors(i); if (i % 2 == 0) { board.setNodeValue(i, playerkind); playersboard.setNodeValue(i, playerkind); EXPECT_EQ(playerkind, board.getNodeValue(i)); EXPECT_EQ(playerkind, playersboard.getNodeValue(i)); } else { board.setNodeValue(i, playerkind); EXPECT_EQ(playerkind, board.getNodeValue(i)); EXPECT_EQ(hexgonValKind_EMPTY, playersboard.getNodeValue(i)); } #if __cplusplus > 199711L for (auto j : neighbors) { #else for (vector<int>::iterator iter = neighbors.begin(); iter != neighbors.end(); ++iter) { int j = *iter; #endif if (playersboard.getNodeValue(j) != playerkind) playersboard.deleteEdge(i, j); } if (i % 6 == 0 || i == 8 || i == 14 || i == 16 || i == 22) k++; EXPECT_EQ(playersboard.getSizeOfEdges(), k); } EXPECT_EQ(board.getNumofemptyhexgons(), 0); EXPECT_EQ(playersboard.getNumofemptyhexgons(), 13); EXPECT_EQ(playersboard.getSizeOfEdges(), 8); EXPECT_EQ(board.getSizeOfVertices(), numofhexgon * numofhexgon); EXPECT_EQ(playersboard.getSizeOfVertices(), numofhexgon * numofhexgon); int connectnode[8] = { 2, 4, 8, 10, 12, 14, 18, 20 }; for (unsigned i = 0; i < 8; i++){ EXPECT_FALSE(playersboard.isAdjacent(connectnode[i], (connectnode[i] + 3))); EXPECT_TRUE(playersboard.isAdjacent(connectnode[i], (connectnode[i] + 4))); EXPECT_FALSE(playersboard.isAdjacent(connectnode[i], (connectnode[i] + 5))); } board.resetHexBoard(false); EXPECT_EQ(board.getSizeOfVertices(), board.getNumofemptyhexgons()); EXPECT_EQ(board.getSizeOfEdges(), numofedges); EXPECT_EQ(8, playersboard.getSizeOfEdges()); playersboard.resetHexBoard(); playersboard.setNumofhexgons(numofhexgon); EXPECT_EQ(numofhexgon, playersboard.getNumofhexgons()); EXPECT_EQ(numofhexgon * numofhexgon, playersboard.getSizeOfVertices()); EXPECT_EQ(playersboard.getSizeOfVertices(), playersboard.getNumofemptyhexgons()); EXPECT_EQ(0, playersboard.getSizeOfEdges()); for (unsigned i = 0; i < 8; i++){ EXPECT_FALSE(playersboard.isAdjacent(connectnode[i], (connectnode[i] + 3))); EXPECT_FALSE(playersboard.isAdjacent(connectnode[i], (connectnode[i] + 4))); EXPECT_FALSE(playersboard.isAdjacent(connectnode[i], (connectnode[i] + 5))); } for (int i = 1; i <= numofhexgon * numofhexgon; ++i) { EXPECT_EQ(hexgonValKind_EMPTY, board.getNodeValue(i)); EXPECT_EQ(hexgonValKind_EMPTY, playersboard.getNodeValue(i)); } playersboard.resetHexBoard(); playersboard.setNumofhexgons(3); EXPECT_EQ(playersboard.getSizeOfVertices(), 9); for (int i = 1; i <= 9; ++i) EXPECT_EQ(hexgonValKind_EMPTY, playersboard.getNodeValue(i)); } TEST_F(HexBoardTest,HexBoardWinningTest) { //test 5x5 Hexboard HexBoard board(5); Game hexboardgame(board); Player playera(board, hexgonValKind_RED); Player playerb(board, hexgonValKind_BLUE); //generate a sequence of paths ASSERT_TRUE(hexboardgame.setMove(playera, 1, 1)); EXPECT_EQ("UNKNOWN", hexboardgame.getWinner(playera, playerb)); ASSERT_TRUE(hexboardgame.setMove(playerb, 1, 2)); EXPECT_EQ("UNKNOWN", hexboardgame.getWinner(playera, playerb)); ASSERT_TRUE(hexboardgame.setMove(playera, 2, 1)); EXPECT_EQ("UNKNOWN", hexboardgame.getWinner(playera, playerb)); ASSERT_TRUE(hexboardgame.setMove(playerb, 2, 2)); EXPECT_EQ("UNKNOWN", hexboardgame.getWinner(playera, playerb)); ASSERT_TRUE(hexboardgame.setMove(playera, 3, 1)); EXPECT_EQ("UNKNOWN", hexboardgame.getWinner(playera, playerb)); ASSERT_TRUE(hexboardgame.setMove(playerb, 3, 2)); EXPECT_EQ("UNKNOWN", hexboardgame.getWinner(playera, playerb)); ASSERT_TRUE(hexboardgame.setMove(playera, 4, 1)); EXPECT_EQ("UNKNOWN", hexboardgame.getWinner(playera, playerb)); ASSERT_TRUE(hexboardgame.setMove(playerb, 4, 2)); EXPECT_EQ("UNKNOWN", hexboardgame.getWinner(playera, playerb)); ASSERT_TRUE(hexboardgame.setMove(playera, 5, 1)); EXPECT_EQ("RED", hexboardgame.getWinner(playera, playerb)); hexboardgame.resetGame(playera, playerb); EXPECT_EQ("UNKNOWN", hexboardgame.getWinner(playera, playerb)); hexboardgame.showView(playera, playerb); }