сравнивая две 2d матрицы в структуре для тестов - PullRequest
0 голосов
/ 04 мая 2020

привет, моя задача - сравнить две матрицы в structure, которые должны быть разными. что я здесь делаю? В первую очередь задача - реализовать новую функцию -> воспроизведение. но мне нужно сравнить, если новая плата отличается от первой.

мой тестовый файл = этот код необходимо редактировать

TEST repeat_game() {
    // Game creation
    Game* game = create_game();
    Board *board = create_board(9, 9, 9);

    /// variables for easy tests 
    game->board = board; //board set
    game->player->score = 69; //before scene score
    char replay[] = "yes";
    int score = 0; //after scene score 

    // variables for hard test


    size_t pixel_data_size =
        sizeof(*(game->board)) * game->board->row_count * game->board->column_count;
    Board* newboard = malloc(pixel_data_size);
    memcpy(newboard, game->board, pixel_data_size);

    // main function
    replay_game(replay, game);      

    // Easy test cases
    // test if the score is equal to zero after restarting the game
    ASSERT_EQ(game->player->score, score);
    // test if the parameter replay is equal to "yes"
    ASSERT_STR_EQ(replay, "yes");



    // Hard test
    // test if the game board is different than the previous one.
    int l = 1;

    for (int i = 0; i < 9; i++) {
        for (int j = 0; j < 9; j++) {
            if ( newboard->tiles[i][j] != game->board->tiles[i][j]) {
                l = 0;
            }
        }
    }
    ASSERT_EQ(l, 0);    
    destroy_board(newboard);   

    PASS();
}

функция воспроизведения_игры

void replay_game(char* replay, Game* game) {
    while (strcmp(replay, "yes") != 0 && strcmp(replay, "no") != 0 ) {
        scanf("%s", replay);
        if (strcmp(replay, "yes") != 0 || strcmp(replay, "no") != 0) {
            printf("invalid value\n");
        }
    }
    if (strcmp(replay, "yes") == 0) {
        destroy_board(game->board);
        game->game_state = PLAYING;
        game->board = create_board(9, 9, 9);
        game->player->score = 0;
    }
}

h файл

typedef enum {
    CLOSED,
    OPEN,
    MARKED
} TileState;

typedef struct {
    bool is_mine;                /* Records if mine is on the Tile */
    TileState tile_state;        /* Enum for status of the Tile state */
    int value;                   /* Number of neighbour tiles where is mine on; -1 if mine is not on */
} Tile;

typedef struct {
    int row_count;                                  /* Number of rows in the Board */
    int column_count;                               /* Number of columns in the Board */
    int mine_count;                                 /* Number of mines in the Board */
    Tile *tiles[MAX_ROW_COUNT][MAX_COLUMN_COUNT];   /* 2-dimensional struct array of the tiles */
} Board;

вывод

* Suite test_user_interface:
....Segmentation fault (core dumped)

есть идеи как сравнить платы? спасибо за помощь

...