diff --git a/bin/main.out b/bin/main.out
index d3b447c6b1ffa2f84087cea4ba4064b50a1c1398..913439f0d04ae68cb6fce66b82fb9a3ca8564ce1 100755
Binary files a/bin/main.out and b/bin/main.out differ
diff --git a/doc/rapport.pdf b/doc/rapport.pdf
index 3cba27404a659e213906a52617aab1e1545ab82d..8e8e19c28d751a801105944ae1e60b2a9266cf6e 100644
Binary files a/doc/rapport.pdf and b/doc/rapport.pdf differ
diff --git a/doc/rapport.tex b/doc/rapport.tex
index 4e6c3b072c1e7f90259350395de5ed682da064ba..24cd197fa5608159a0f452e3cb954be7e8c61739 100644
--- a/doc/rapport.tex
+++ b/doc/rapport.tex
@@ -21,16 +21,14 @@
 	urlcolor={blue!80!black}
 }
 \author{Loïc DUBARD}
-\title{Rapport du projet de programmation Impérative: Stackchess}
+\title{Rapport du projet de programmation fonctionnelle : \\
+\textbf{DERNIÈRES NOUVELLES : LES EXTRA-TERRESTRES EXISTENT}}
 
 \begin{document}
 \maketitle
 \tableofcontents
 \clearpage
 \section*{Introduction}
-\begin{center}
-	\textbf{DERNIÈRES NOUVELLES : LES EXTRA-TERRESTRES EXISTENT}
-\end{center}
 
 Le but de ce projet est d'implanter un protocole de communication avec les habitants des mondes lointains.\\
 
@@ -69,6 +67,7 @@ Le programme affichera donc une suite de commandes permettant d'émettre le mess
 | > src/
 |   | main.ml
 |   | tests.ml
+|   | user.ml
 | [> bin/]
 |   | main.out
 |   | tests.out
@@ -104,7 +103,7 @@ On introduit aussi la fonction [\textbf{tourner} c n roue] dont le but est de re
 La fonction \textbf{commande} agit par récurrence sur la liste de caractères l de cette manière :\\
 \begin{itemize}
 	\item à la première itération, on traduit le premier caractère de la liste en sa commande (une string) grâce à la fonction \textbf{translate} puis tourne la roue dans le bon sens et le bon nombre de cran avec la fonction \textbf{tourner}.
-	\item à la $n^{ieme}$ iteration, le $n^{ieme}$ caractère est traduit en sa commande (en une string) en utilisant la roue obtenue après la $(n-1)^{ieme}$ itération puis tourne la roue de même que à la première itération.
+	\item à la $n^{ieme}$ itération, le $n^{ieme}$ caractère est traduit en sa commande (en une string) en utilisant la roue obtenue après la $(n-1)^{ieme}$ itération puis tourne la roue de même que à la première itération.
 \end{itemize}
  
 
@@ -134,8 +133,8 @@ Pour cette phase j'ai donc créé la fonction [\textbf{commande2} (n,m)] où n e
 
 \section{Idées d'optimisation du code}
 
-Au lieu de choisir la roue à utiliser lettre après lettre, on peut tracer un arbre n-aire (où n est le nombre de roues) et trouver le chemin le plus court pour la phrase a traduire. On optimiserai le temps d'execution du programme non pas lettre par lettre mais pour toute la phrase. \\
+Au lieu de choisir la roue à utiliser lettre après lettre, on peut tracer un arbre n-aire (où n est le nombre de roues) et trouver le chemin le plus court pour la phrase a traduire. On optimiserai le temps d'exécution du programme non pas lettre par lettre mais pour toute la phrase. \\
 
-Cependant, cette manière de calculer le programme à envoyer aux antennes me semble très couteuse en temps et en mémoire. C'est pour cela que j'ai choisi de ne pas l'implémenter.
+Cependant, cette manière de calculer le programme à envoyer aux antennes me semble très coûteuse en temps et en mémoire. C'est pour cela que j'ai choisi de ne pas l'implémenter.
 
 \end{document}
diff --git a/src/.main.ml.swp b/src/.main.ml.swp
new file mode 100644
index 0000000000000000000000000000000000000000..c009b3db6b016b66dc3426586b056e5266320297
Binary files /dev/null and b/src/.main.ml.swp differ
diff --git a/src/.tests.ml.swp b/src/.tests.ml.swp
new file mode 100644
index 0000000000000000000000000000000000000000..01958b360a204e56c8820bc68704b55951b4dcad
Binary files /dev/null and b/src/.tests.ml.swp differ
diff --git a/src/main.cmi b/src/main.cmi
index c8d94691df1e977bf6db811f68b7705455d67f26..88e42b934ceb305123c8847bbf5445a2928f4ea7 100644
Binary files a/src/main.cmi and b/src/main.cmi differ
diff --git a/src/main.cmx b/src/main.cmx
index b7761fc298c37ba715858de4b32ae8a598ac9b79..a42d1c651113975f6821638f1bef8e4218654256 100644
Binary files a/src/main.cmx and b/src/main.cmx differ
diff --git a/src/main.ml b/src/main.ml
index 163b7f9fc180009507b99f1db1bd742a963d7eca..4a762df4bc6cf8bb3a1d1dcc6c8ddde1ce08daba 100644
--- a/src/main.ml
+++ b/src/main.ml
@@ -25,7 +25,7 @@ let parse_input () =
   print_string "Entrez le nombre d'antennes à utiliser >";
   let nb_antennas = int_of_string (read_line ()) in
   print_string "Entrez le texte à traduire en programme (tout en majuscule et pas de ponctuation !) >";
-  let phrase = read_line () in
+  let phrase = String.uppercase_ascii (read_line ()) in
   nb_antennas,split_string phrase;;
 
 (*let print_elt n (i,l) = print_char (List.nth l n);;
@@ -150,7 +150,9 @@ let rec initialize_list n a = if n = 1 then [a] else if n = 0 then [] else a::(i
 (* 
  * @ensure : traduit le message l en commande en selectionnant pour chaque lettre la bonne antenne
  *)
-let commande2 (n,m) = 
+let commande2 (nb,m) = 
+    let n= (if nb>(List.length m) then List.length m else nb)
+in
 let rec commande_phase2 l liste_roues index_init = match l with
     | [] -> ""
     | e::t -> let index = quelle_roue liste_roues e index_init in
diff --git a/src/main.o b/src/main.o
index 9e4354d48b598e3877a309e5cf296d8ac9dd121b..b8f3410df97aea6c8cbc59a32fc87345115a8e7a 100644
Binary files a/src/main.o and b/src/main.o differ
diff --git a/src/tests.ml b/src/tests.ml
index 1e18efefb2cefca495b5f5a4864a4d5020bf7073..607e622393442b14f2b8b0cd6daa7647b1b4e303 100644
--- a/src/tests.ml
+++ b/src/tests.ml
@@ -8,11 +8,75 @@
 open Main;;
 open Printf;;
 
-printf "------DEBUT DES TESTS------\n";;
+exception InvalidTest;;
 
+printf "======DEBUT DES TESTS======\n";;
+printf "------Tests de la phase 1------\n";;
 (* Test de tourner c n roue *)
+printf "      Fonction [tourner c n roue]\n";;
+printf "Test tourner une roue vide.....";;
+try( let _ = tourner 'N' 3 [] in () )
+with
+| RoueVide -> printf "fait\n"
+| _ -> raise InvalidTest
+;;
+
+let list_test_roues=[
+    [' ';'A';'B';'C';'D';'E';'F';'G';'H';'I';'J';'K';'L';'M';'N';'O';'P';'Q';'R';'S';'T';'U';'V';'W';'X';'Y';'Z'];
+    ['A';'B';'C';'D';'E';'F';'G';'H';'I';'J';'K';'L';'M';'N';'O';'P';'Q';'R';'S';'T';'U';'V';'W';'X';'Y';'Z';' '];
+    ['B';'C';'D';'E';'F';'G';'H';'I';'J';'K';'L';'M';'N';'O';'P';'Q';'R';'S';'T';'U';'V';'W';'X';'Y';'Z';' ';'A'];
+    ['C';'D';'E';'F';'G';'H';'I';'J';'K';'L';'M';'N';'O';'P';'Q';'R';'S';'T';'U';'V';'W';'X';'Y';'Z';' ';'A';'B'];
+    ['D';'E';'F';'G';'H';'I';'J';'K';'L';'M';'N';'O';'P';'Q';'R';'S';'T';'U';'V';'W';'X';'Y';'Z';' ';'A';'B';'C'];
+    ['E';'F';'G';'H';'I';'J';'K';'L';'M';'N';'O';'P';'Q';'R';'S';'T';'U';'V';'W';'X';'Y';'Z';' ';'A';'B';'C';'D'];
+    ['F';'G';'H';'I';'J';'K';'L';'M';'N';'O';'P';'Q';'R';'S';'T';'U';'V';'W';'X';'Y';'Z';' ';'A';'B';'C';'D';'E'];
+    ['G';'H';'I';'J';'K';'L';'M';'N';'O';'P';'Q';'R';'S';'T';'U';'V';'W';'X';'Y';'Z';' ';'A';'B';'C';'D';'E';'F'];
+    ['H';'I';'J';'K';'L';'M';'N';'O';'P';'Q';'R';'S';'T';'U';'V';'W';'X';'Y';'Z';' ';'A';'B';'C';'D';'E';'F';'G'];
+    ['I';'J';'K';'L';'M';'N';'O';'P';'Q';'R';'S';'T';'U';'V';'W';'X';'Y';'Z';' ';'A';'B';'C';'D';'E';'F';'G';'H'];
+    ['J';'K';'L';'M';'N';'O';'P';'Q';'R';'S';'T';'U';'V';'W';'X';'Y';'Z';' ';'A';'B';'C';'D';'E';'F';'G';'H';'I'];
+    ['K';'L';'M';'N';'O';'P';'Q';'R';'S';'T';'U';'V';'W';'X';'Y';'Z';' ';'A';'B';'C';'D';'E';'F';'G';'H';'I';'J'];
+    ['L';'M';'N';'O';'P';'Q';'R';'S';'T';'U';'V';'W';'X';'Y';'Z';' ';'A';'B';'C';'D';'E';'F';'G';'H';'I';'J';'K'];
+    ['M';'N';'O';'P';'Q';'R';'S';'T';'U';'V';'W';'X';'Y';'Z';' ';'A';'B';'C';'D';'E';'F';'G';'H';'I';'J';'K';'L'];
+    ['N';'O';'P';'Q';'R';'S';'T';'U';'V';'W';'X';'Y';'Z';' ';'A';'B';'C';'D';'E';'F';'G';'H';'I';'J';'K';'L';'M'];
+    ['O';'P';'Q';'R';'S';'T';'U';'V';'W';'X';'Y';'Z';' ';'A';'B';'C';'D';'E';'F';'G';'H';'I';'J';'K';'L';'M';'N'];
+    ['P';'Q';'R';'S';'T';'U';'V';'W';'X';'Y';'Z';' ';'A';'B';'C';'D';'E';'F';'G';'H';'I';'J';'K';'L';'M';'N';'O'];
+    ['Q';'R';'S';'T';'U';'V';'W';'X';'Y';'Z';' ';'A';'B';'C';'D';'E';'F';'G';'H';'I';'J';'K';'L';'M';'N';'O';'P'];
+    ['R';'S';'T';'U';'V';'W';'X';'Y';'Z';' ';'A';'B';'C';'D';'E';'F';'G';'H';'I';'J';'K';'L';'M';'N';'O';'P';'Q'];
+    ['S';'T';'U';'V';'W';'X';'Y';'Z';' ';'A';'B';'C';'D';'E';'F';'G';'H';'I';'J';'K';'L';'M';'N';'O';'P';'Q';'R'];
+    ['T';'U';'V';'W';'X';'Y';'Z';' ';'A';'B';'C';'D';'E';'F';'G';'H';'I';'J';'K';'L';'M';'N';'O';'P';'Q';'R';'S'];
+    ['U';'V';'W';'X';'Y';'Z';' ';'A';'B';'C';'D';'E';'F';'G';'H';'I';'J';'K';'L';'M';'N';'O';'P';'Q';'R';'S';'T'];
+    ['V';'W';'X';'Y';'Z';' ';'A';'B';'C';'D';'E';'F';'G';'H';'I';'J';'K';'L';'M';'N';'O';'P';'Q';'R';'S';'T';'U'];
+    ['W';'X';'Y';'Z';' ';'A';'B';'C';'D';'E';'F';'G';'H';'I';'J';'K';'L';'M';'N';'O';'P';'Q';'R';'S';'T';'U';'V'];
+    ['X';'Y';'Z';' ';'A';'B';'C';'D';'E';'F';'G';'H';'I';'J';'K';'L';'M';'N';'O';'P';'Q';'R';'S';'T';'U';'V';'W'];
+    ['Y';'Z';' ';'A';'B';'C';'D';'E';'F';'G';'H';'I';'J';'K';'L';'M';'N';'O';'P';'Q';'R';'S';'T';'U';'V';'W';'X'];
+    ['Z';' ';'A';'B';'C';'D';'E';'F';'G';'H';'I';'J';'K';'L';'M';'N';'O';'P';'Q';'R';'S';'T';'U';'V';'W';'X';'Y'];
+    [' ';'A';'B';'C';'D';'E';'F';'G';'H';'I';'J';'K';'L';'M';'N';'O';'P';'Q';'R';'S';'T';'U';'V';'W';'X';'Y';'Z'];
+    ];;
+let rec test_tourner_1 n = 
+    if n>0 then ( 
+        printf "Tourner %d fois dans le sens de 'N'....." (27-n);
+        if ((tourner 'N' (27-n) roue) = (List.nth list_test_roues (27-n)))
+        then ((printf "fait\n") ; (test_tourner_1 (n-1)))
+        else (raise InvalidTest)
+    )
+    else (printf "\n");; 
+
+test_tourner_1 27;;
+
+let rec test_tourner_2 n = 
+    if n>0 then ( 
+        printf "Tourner %d fois dans le sens de 'P'....." (27-n);
+        if ((tourner 'P' (27-n) roue) = (List.nth list_test_roues (n)))
+        then ((printf "fait\n") ; (test_tourner_2 (n-1)))
+        else (raise InvalidTest)
+    )
+    else (printf "\n");; 
+
+test_tourner_2 27;;
 
 (*Test de translate c roue*)
+printf "      Fonction [translate c roue]\n";;
+
+
 
 (*Test de char_to_index i c roue *)
 
@@ -32,4 +96,4 @@ printf "------DEBUT DES TESTS------\n";;
 
 (*test commande2 (n,m) *)
 
-printf "------FIN DES TESTS------\n";;
+printf "======FIN DES TESTS=======\n";;
diff --git a/src/user.ml b/src/user.ml
index 5d2480f89aa60bf4317323f55c7b6ceda89f9424..ea515e169673fc7265be6b6210939d8833e8eebb 100644
--- a/src/user.ml
+++ b/src/user.ml
@@ -7,9 +7,9 @@
 open Main;;
 
 
+let input=parse_input();;
 (*Résultat de la phase 1*)
 Printf.printf "------Résultats de la phase 1------\n";;
-let input=parse_input();;
 let com = commande input roue;;
 print_string (com);;