def test_permute_column(): board = Board(5, 7) setting_data = ("ABCDE", "FGHIJ", "KLMNO", "PQRST", "UVWXY", "01234", "56789") board.set_data_from_string(setting_data) pos_to_permute = [Pos(tile.x, tile.y) for tile in board[2, :]] assert len(pos_to_permute) == 7 board.circular_permute_tiles(pos_to_permute) print(board.render()) render_result = """ ABHDE FGMIJ KLRNO PQWST UV2XY 01734 56C89 """ assert strip_multiline(board.render()) == strip_multiline(render_result) # Pour vérifier que la fonction de permutation ne vide pas la liste. # Ça le faisait avant, et c'était mal. assert len(pos_to_permute) == 7
def test_replace_simple(): board = Board(5, 3) setting_data = ("ABCDE", "FGHIJ", "KLMNO") board.set_data_from_string(setting_data) new_tile = Tile() new_tile.data = "Z" board.replace_tile(new_tile, Pos(3, 1)) print(board.render()) assert new_tile.x == 3 assert new_tile.y == 1 assert board[3, 1].data == "Z" render_result = """ ABCDE FGHZJ KLMNO """ assert strip_multiline(board.render()) == strip_multiline(render_result) print(board.render())
def test_permute_simple(): board = Board(5, 3) setting_data = ("ABCDE", "FGHIJ", "KLMNO") board.set_data_from_string(setting_data) tile_with_c = board[2, 0] tile_with_n = board[3, 2] board.circular_permute_tiles([Pos(2, 0), Pos(3, 2)]) print(board.render()) assert tile_with_c.x == 3 assert tile_with_c.y == 2 assert tile_with_c.data == "C" assert board[3, 2].data == "C" assert tile_with_n.x == 2 assert tile_with_n.y == 0 assert tile_with_n.data == "N" assert board[2, 0].data == "N" render_result = """ ABNDE FGHIJ KLMCO """ assert strip_multiline(board.render()) == strip_multiline(render_result)
def test_comp_simple(): board_1 = Board(5, 3) setting_data_1 = ("ABCDE", "FGHIJ", "KLMNO") board_1.set_data_from_string(setting_data_1) board_2 = Board(5, 3) setting_data_2 = ("ABCDX", "FGHIJ", "KZMNO") board_2.set_data_from_string(setting_data_2) index_diff = 0 for tile_1, tile_2 in IteratorGetDifferences(board_1[:], board_2[:]): print(tile_1, tile_2) if index_diff == 0: first = False assert tile_1.x == tile_2.x == 4 assert tile_1.y == tile_2.y == 0 assert tile_1.data == "E" assert tile_2.data == "X" elif index_diff == 1: assert tile_1.x == tile_2.x == 1 assert tile_1.y == tile_2.y == 2 assert tile_1.data == "L" assert tile_2.data == "Z" else: assert False index_diff += 1
def test_comp_no_diff(): setting_data = ("ABCDE", "FGHIJ", "KLMNO") board_1 = Board(5, 3) board_1.set_data_from_string(setting_data) board_2 = Board(5, 3) board_2.set_data_from_string(setting_data) assert list(IteratorGetDifferences(board_1[:], board_2[:])) == []
def test_init_simple(): board = Board(5, 3) setting_data = ("ABCDE", "FGHIJ", "KLMNO") board.set_data_from_string(setting_data) render_result = """ ABCDE FGHIJ KLMNO """ assert strip_multiline(board.render()) == strip_multiline(render_result)
def test_init_separators(): board = Board(6, 4) # setting_data = ('A;B;C;D;E;F\n', 'GHIJKL', 'MNOPQR', 'STUVWX') setting_data = "A;B;C;D;E;F\nG;H;I;J;K;L\nM;N;O;P;Q;R\nS;T;U;V;W;X" board.set_data_from_string(setting_data, "\n", ";") render_result = """ ABCDEF GHIJKL MNOPQR STUVWX """ assert strip_multiline(board.render()) == strip_multiline(render_result)
def test_push_cols_lines(): """ Test de déplacement de toutes les tiles d'une ligne ou d'une colonne, en ajoutant une nouvelle tile qui va pousser les autres. Comme dans le jeu de plateau 'Labyrinthe', et dans le challenge CodinGame 'Xmas Rush' """ # PUSH 3 RIGHT board = Board(5, 7) setting_data = ("ABCDE", "FGHIJ", "KLMNO", "PQRST", "UVWXY", "01234", "56789") board.set_data_from_string(setting_data) added_tile = Tile() added_tile.data = "#" pos_to_permute = [Pos(tile.x, tile.y) for tile in board[::-1, 3]] board.circular_permute_tiles(pos_to_permute) removed_tile = board[0, 3] board.replace_tile(added_tile, Pos(0, 3)) print(board.render()) assert removed_tile.data == "T" render_result = """ ABCDE FGHIJ KLMNO #PQRS UVWXY 01234 56789 """ assert strip_multiline(board.render()) == strip_multiline(render_result) print("") # PUSH 0 LEFT board = Board(5, 7) setting_data = ("ABCDE", "FGHIJ", "KLMNO", "PQRST", "UVWXY", "01234", "56789") board.set_data_from_string(setting_data) added_tile = Tile() added_tile.data = "#" pos_to_permute = [Pos(tile.x, tile.y) for tile in board[:, 0]] board.circular_permute_tiles(pos_to_permute) removed_tile = board[4, 0] board.replace_tile(added_tile, Pos(4, 0)) print(board.render()) assert removed_tile.data == "A" render_result = """ BCDE# FGHIJ KLMNO PQRST UVWXY 01234 56789 """ assert strip_multiline(board.render()) == strip_multiline(render_result) print("") # PUSH 4 DOWN board = Board(5, 7) setting_data = ("ABCDE", "FGHIJ", "KLMNO", "PQRST", "UVWXY", "01234", "56789") board.set_data_from_string(setting_data) added_tile = Tile() added_tile.data = "#" pos_to_permute = [Pos(tile.x, tile.y) for tile in board[4, ::-1]] board.circular_permute_tiles(pos_to_permute) removed_tile = board[4, 0] board.replace_tile(added_tile, Pos(4, 0)) print(board.render()) assert removed_tile.data == "9" render_result = """ ABCD# FGHIE KLMNJ PQRSO UVWXT 0123Y 56784 """ assert strip_multiline(board.render()) == strip_multiline(render_result) print("") # PUSH 1 UP board = Board(5, 7) setting_data = ("ABCDE", "FGHIJ", "KLMNO", "PQRST", "UVWXY", "01234", "56789") board.set_data_from_string(setting_data) added_tile = Tile() added_tile.data = "#" pos_to_permute = [Pos(tile.x, tile.y) for tile in board[1, :]] board.circular_permute_tiles(pos_to_permute) removed_tile = board[1, board.h - 1] board.replace_tile(added_tile, Pos(1, board.h - 1)) print(board.render()) assert removed_tile.data == "B" render_result = """ AGCDE FLHIJ KQMNO PVRST U1WXY 06234 5#789 """ assert strip_multiline(board.render()) == strip_multiline(render_result) print("")