diff --git a/game2048/.pytest_cache/v/cache/nodeids b/game2048/.pytest_cache/v/cache/nodeids
index 83a8465dad94b5f1d4477dfd7b64aa56f45988b7..3857363758de75487dab578acef5b68775832e05 100644
--- a/game2048/.pytest_cache/v/cache/nodeids
+++ b/game2048/.pytest_cache/v/cache/nodeids
@@ -7,9 +7,16 @@
   "test_grid_2048.py::test_grid_add_new_tile",
   "test_grid_2048.py::test_init_game",
   "test_grid_2048.py::test_long_value_with_theme",
+  "test_grid_2048.py::test_del_zeros",
   "test_grid_2048.py::test_move_row_left",
   "test_grid_2048.py::test_move_row_right",
   "test_grid_2048.py::test_move_grid",
+  "test_grid_2048.py::test_transpose_grid",
   "test_grid_2048.py::test_is_grid_full",
-  "test_grid_2048.py::test_move_possible"
+  "test_grid_2048.py::test_move_possible",
+  "test_grid_2048.py::test_is_game_over",
+  "test_grid_2048.py::test_get_grid_tile_max",
+  "test_grid_2048.py::test_did_you_win",
+  "test_grid_2048.py::test_list_move_possible",
+  "test_textual_2048.py::test_read_player_command"
 ]
\ No newline at end of file
diff --git a/game2048/grid_2048.py b/game2048/grid_2048.py
index 3a44c3803a55e12ca9523ec456cf07cc810a5353..05f38a52187b98b37fc565f6220e4c72311e8b25 100644
--- a/game2048/grid_2048.py
+++ b/game2048/grid_2048.py
@@ -90,7 +90,7 @@ def long_value_with_theme(grid,theme):
 # FONCTIONNALITE 4
 
 def del_zeros(row):
-    #fonction permettant de supprimer les zeros d'une ligne, qui sont inutiles lors du processus de fusion des cases
+    #fonction permettant de supprimer les zeros d'une ligne, et donne la taille de la liste initiale qui sont inutiles lors du processus de fusion des cases
     n = len(row)
     new_row = []
     for i in range(n):
@@ -182,6 +182,7 @@ def is_game_over(grid):
 
 def get_grid_tile_max(grid):
     return max(get_all_tiles(grid))
+
 def did_you_win (grid):
     return (get_grid_tile_max(grid)>=2048)
 
@@ -221,15 +222,10 @@ def random_play():
         print("\n***********************************\n") #permet aux différentes grilles d'être plus lisible
 
     #vérification si le jeu est gagnant ou perdant
-        d=rd.choice(list_move_possible(grid_game))
-        grid_game=move_grid(grid_game,d)
-        grid_game=grid_add_new_tile(grid_game)
-        print(grid_to_string_with_size_and_theme(grid_game,THEMES["0"],4))
-        print("\n***********************************\n")
     if did_you_win(grid_game):
         print("CONGRATS ! YOU WON !!!")
     else :
         print ("YOU FAIL, TRY AGAIN")
     return()
 
-random_play()
+#TEST random_play()
diff --git a/game2048/test_grid_2048.py b/game2048/test_grid_2048.py
index 2371025242bff69f3c882176236190ea1c776691..efa6c9094883f12c8c9390331ac53cb13323f8c4 100644
--- a/game2048/test_grid_2048.py
+++ b/game2048/test_grid_2048.py
@@ -5,8 +5,8 @@ from pytest import *
 
 def test_create_grid():
     assert create_grid(0) == []
-    assert create_grid(1) == [[' ']]
-    assert create_grid(4) == [[' ',' ',' ', ' '],[' ',' ',' ', ' '],[' ',' ',' ', ' '],[' ',' ',' ', ' ']]
+    assert create_grid(1) == [[0]]
+    assert create_grid(4) == [[0,0,0, 0],[0,0,0, 0],[0,0,0, 0],[0,0,0, 0]]
 
 def test_get_value_new_tile():
     assert get_value_new_tile() == 2 or 4
@@ -69,6 +69,11 @@ def test_long_value_with_theme():
 
 # FONCTIONNALITE 4
 
+def test_del_zeros ():
+    assert del_zeros([5,0,4,6])==([5,4,6],4)
+    assert del_zeros([0,0])==([],2)
+    assert del_zeros([0,0,9,7,0,0,0,0])==([9,7],8)
+
 def test_move_row_left():
     assert move_row_left([0, 0, 0, 2]) == [2, 0, 0, 0]
     assert move_row_left([0, 2, 0, 4]) == [2, 4, 0, 0]
@@ -97,6 +102,12 @@ def test_move_grid():
     assert move_grid([[2,0,0,2], [2, 4, 0, 0], [8, 4, 2, 0], [8, 2, 2, 0]],"up") == [[4,8,4,2], [16, 2, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
     assert move_grid([[2,0,0,2], [2, 4, 0, 0], [8, 4, 2, 0], [8, 2, 2, 0]],"down") == [[0, 0, 0, 0], [0, 0, 0, 0],[4,8,0,0],[16, 2, 4, 2]]
 
+def test_transpose_grid ():
+    assert transpose_grid([[1,3],[2,5]])==[[1,2],[3,5]]
+    assert transpose_grid([[1,2,3],[6,7,8],[0,0,0]])==[[1,6,0],[2,7,0],[3,8,0]]
+
+#FONCTIONNALITE 5
+
 def test_is_grid_full():
     assert is_grid_full([[0, 16, 32, 0], [64, 0, 32, 2], [2, 2, 8, 4], [512, 8, 16, 0]]) == False
     assert is_grid_full([[4, 16, 32, 4], [64, 8, 32, 2], [2, 2, 8, 4], [512, 8, 16, 1024]]) == True
@@ -104,3 +115,27 @@ def test_is_grid_full():
 def test_move_possible():
     assert move_possible([[2, 2, 2, 2], [4, 8, 8, 16], [0, 8, 0, 4], [4, 8, 16,32]]) == [True,True,True,True]
     assert move_possible([[2, 4, 8, 16], [16, 8, 4, 2], [2, 4, 8, 16], [16, 8, 4,2]]) == [False,False,False,False]
+
+def test_is_game_over ():
+    assert is_game_over([[2,4,2,8],[4,2,4,2],[16,32,16,32],[128,64,128,64]])==True
+    assert is_game_over([[2,4,2,8],[4,2,4,8],[16,32,16,32],[128,64,128,64]])==False
+    assert is_game_over([[2,4,2,8],[4,2,4,0],[16,32,16,32],[128,64,128,64]])==False
+
+def test_get_grid_tile_max():
+    assert get_grid_tile_max([[1,2],[0,8]])==8
+    assert get_grid_tile_max([[2,2,2,2],[2,2,2,2],[2,2,2,2],[2,2,2,2]])==2
+    assert get_grid_tile_max([[2,2,4,2],[2,2,2,2],[2,2,2,2],[2,2,2,2]])==4
+
+def test_did_you_win ():
+    assert did_you_win([[2,2048],[8,16]])==True
+    assert did_you_win([[2,2,2,0],[2,4096,2,2],[2,2,2,2],[2,2,2,2]])==True
+    assert did_you_win([[2,2,2,1024],[2,128,2,2],[2,2,2,2],[2,2,2,2]])==False
+
+#FONCTIONNALITE 6
+
+def test_list_move_possible():
+    assert list_move_possible([[2,2,2,2],[2,2,2,2],[2,2,2,2],[2,2,2,2]])==["left","right","up","down"]
+    assert list_move_possible([[2,4,2,8],[4,2,4,0],[16,32,16,32],[128,64,128,64]])==["right","up","down"]
+    assert list_move_possible([[2,4,2,4],[4,8,8,8],[16,32,16,32],[128,64,128,64]])==["left","right"]
+    assert list_move_possible([[2,4,2,8],[4,2,4,2],[16,32,16,32],[128,64,128,64]])==[]
+    assert list_move_possible([[2,4,2,8],[4,2,4,2],[16,32,16,32],[0,0,0,0]])==["down"]