您好,我的任务是编写测试,该测试会检查Minesweeper板(选择重播选项之后)是否与前一块不同。
首先,我编写了主函数the replay
。
之后,我在本地对它进行了测试,并且每个游戏,每个游戏板都不同。没有问题。所以我开始写测试用例,现在我在这里。
TEST replay_board() {
Game *game = create_game();
Board *board = create_board(9, 9, 9);
game->board = board;
int k = 0;
char* mine_list[100];
for (int i = 0; i < 9; i++) {
for (int j = 0; j < 9; j++) {
if (game->board->tiles[i][j]->is_mine == true) {
mine_list[k] = '1';
} else {
mine_list[k] = '0';
}
k++;
}
}
mine_list[k] = '\0';
replay_game("yes", game);
char mine_list2[100];
k = 0;
for (int i = 0; i < 9; i++) {
for (int j = 0; j < 9; j++) {
if (game->board->tiles[i][j]->is_mine == true) {
mine_list2[k] = '1';
} else {
mine_list2[k] = '0';
}
k++;
}
}
mine_list2[k] = '\0';
int same = 0;
if (strcmp(mine_list, mine_list2) != 0) {
same = 0;
} else {
same = 1;
}
ASSERT_EQ(same, 0);
PASS();
destroy_game(game);
}
在每项测试中,它都写出那只旧公猪与前一只相同,但在本地我可以看到它们并不相同。
我不知道比较两个字符串的理想方法,但这是从结构中比较它们的最简单方法
这里是问题:
char* mine_list[100];
您将mine_list
定义为char *
的数组,而不是char
的数组。无论您在哪里使用编译器,它都应该给您一些警告。将其更改为char
:
char mine_list[100];