void test_grid_set_cells_with_piece() { // Create a grid. int numberOfRows = 10; int numberOfColumns = 10; TrnGrid* grid = trn_grid_new(numberOfRows, numberOfColumns); // Create a piece; TrnPiece piece = trn_piece_create(TRN_TETROMINO_I,2,3,TRN_ANGLE_90); trn_grid_set_cells_with_piece(grid, &piece, piece.type); // Create expected grid TrnGrid* expected_grid = trn_grid_new(numberOfRows, numberOfColumns); TrnPositionInGrid pos = {2,5}; trn_grid_set_cell(expected_grid, pos, TRN_TETROMINO_I); pos.rowIndex = 3; pos.columnIndex = 5; trn_grid_set_cell(expected_grid, pos, TRN_TETROMINO_I); pos.rowIndex = 4; pos.columnIndex = 5; trn_grid_set_cell(expected_grid, pos, TRN_TETROMINO_I); pos.rowIndex = 5; pos.columnIndex = 5; trn_grid_set_cell(expected_grid, pos, TRN_TETROMINO_I); // Compare grids CU_ASSERT_TRUE(trn_grid_equal(grid, expected_grid)); }
void test_grid_set_cells_with_piece() { // Create a grid. int numberOfRows = 10; int numberOfColumns = 10; TrnGrid* grid = trn_grid_new(numberOfRows, numberOfColumns); // Create a piece; TrnPiece piece = trn_piece_create(TRN_TETROMINO_I,2,3,TRN_ANGLE_90); trn_grid_set_cells_with_piece(grid, &piece, piece.type); // The piece position in grid. TrnPositionInGrid pos0 = {2,5}; TrnPositionInGrid pos1 = {3,5}; TrnPositionInGrid pos2 = {4,5}; TrnPositionInGrid pos3 = {5,5}; TrnPositionInGrid pos; TrnTetrominoType type; TrnTetrominoType expectedType; int rowIndex; int columnIndex; for (rowIndex = 0 ; rowIndex < grid->numberOfRows; rowIndex++) { for (columnIndex = 0 ; columnIndex < grid->numberOfColumns ; columnIndex++) { pos.rowIndex = rowIndex; pos.columnIndex = columnIndex; if (trn_position_in_grid_equal(pos, pos0) || trn_position_in_grid_equal(pos, pos1) || trn_position_in_grid_equal(pos, pos2) || trn_position_in_grid_equal(pos, pos3)) { expectedType = TRN_TETROMINO_I; } else { expectedType = TRN_TETROMINO_VOID; } type = trn_grid_get_cell(grid,pos); CU_ASSERT_EQUAL(type,expectedType); } } }
void trn_grid_fill_piece(TrnGrid * const grid, TrnPiece const * const piece) { trn_grid_set_cells_with_piece(grid, piece, piece->type); }
void trn_grid_remove_piece(TrnGrid * const grid, TrnPiece const * const piece) { trn_grid_set_cells_with_piece(grid, piece, TRN_TETROMINO_VOID); }