From 6a567bc43b61a1fdae74f8223407015b90050361 Mon Sep 17 00:00:00 2001 From: LaNymphtaline <80621927+LaNymphtaline@users.noreply.github.com> Date: Sat, 5 Jun 2021 12:20:31 +0200 Subject: [PATCH] doc tests --- documents/dossierLaTex/dossier.pdf | Bin 70673 -> 129660 bytes documents/dossierLaTex/dossier.tex | 3 +- ...chap_interpreteurlir.donnees.litteraux.tex | 33 + .../tests/chap_interpreteurlir.donnees.tex | 22 + .../chap_interpreteurlir.expressions.tex | 19 + .../dossierLaTex/fichiers/tests/docTests.tex | 704 +----------------- 6 files changed, 94 insertions(+), 687 deletions(-) create mode 100644 documents/dossierLaTex/fichiers/tests/chap_interpreteurlir.donnees.litteraux.tex create mode 100644 documents/dossierLaTex/fichiers/tests/chap_interpreteurlir.donnees.tex create mode 100644 documents/dossierLaTex/fichiers/tests/chap_interpreteurlir.expressions.tex diff --git a/documents/dossierLaTex/dossier.pdf b/documents/dossierLaTex/dossier.pdf index f162b5c0c17b65377b4eb85677c1c711a118c044..82b3b65632d6459d2206fe85a5c543d6a41d617e 100644 GIT binary patch delta 58536 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 diff --git a/documents/dossierLaTex/dossier.tex b/documents/dossierLaTex/dossier.tex index f22ce92..e2cbc44 100644 --- a/documents/dossierLaTex/dossier.tex +++ b/documents/dossierLaTex/dossier.tex @@ -4,7 +4,6 @@ \usepackage[french]{babel} \usepackage[top=1.5cm, bottom=5cm]{geometry} \usepackage{fancyhdr, graphicx, array, hyperref} -%\usepackage{array} \pagestyle{fancy} @@ -75,7 +74,7 @@ \part{ Conception} \part{ Codage} \part{ Tests} - \include{./fichiers/tests/docTests.tex} + \input{./fichiers/tests/docTests} \part{ Conclusion} % Fin du corps de votre document ................................. diff --git a/documents/dossierLaTex/fichiers/tests/chap_interpreteurlir.donnees.litteraux.tex b/documents/dossierLaTex/fichiers/tests/chap_interpreteurlir.donnees.litteraux.tex new file mode 100644 index 0000000..2dfa6fc --- /dev/null +++ b/documents/dossierLaTex/fichiers/tests/chap_interpreteurlir.donnees.litteraux.tex @@ -0,0 +1,33 @@ +% \chapter{Tests du paquetage interpreteurlir.donnees.litteraux} + +\section{Litteral} + +Lors des itérations 1, la classe Litteral a été développée comme une classe +non-abstract, en effet nous n'avions pas encore abordé cette notion en cours. +Ainsi cette classe a été développée en TDD et nous avons par conséquent +effectué les tests unitaires de cette classe. +\\ Cependant à la fin de l'itération 3, dans une optique d'amélioration des +codes sources, nous avons passé cette classe en abstract, ainsi les tests +unitaires menés n'avaient plus lieu d'être et ont donc été tout de même +conservés en commentaire. + +\section{Chaine} + +Les jeux de tests de la classe Chaine prennent en compte les cas de chaînes +vide, la taille maximale des chaînes, leur syntaxe (avec le contenu de la +chaîne entre "). Aussi l'opération de concaténation a été testée. +Tous les tests menés ont été concluants. + +\section{Entier} + +La classe Entier est très proche de la classe Integer existant déjà dans le +JDK, ainsi son développement a été rapide. +À l'instar des tests menés pour la classe Chaine, tous les tests de la classe +Entier notamment des opérations arithmétiques ont été concluants. +\\ Notons, que pour les opérations arithmétiques telles que la division et le +reste de la division, le cas particulier de la division par zéro a été testé +à part. + +\section{Booleen} + +La classe Booleen n'a posé aucun problème particulier. diff --git a/documents/dossierLaTex/fichiers/tests/chap_interpreteurlir.donnees.tex b/documents/dossierLaTex/fichiers/tests/chap_interpreteurlir.donnees.tex new file mode 100644 index 0000000..946654b --- /dev/null +++ b/documents/dossierLaTex/fichiers/tests/chap_interpreteurlir.donnees.tex @@ -0,0 +1,22 @@ +% \chapter{Tests du paquetage interpreteurlir.donnees} + +\section{Identificateur} + +La classe Identificateur a été développée en TDD lors de l'itération 1 +cependant elle a été passée en abstract lors de l'itération 3, comme +pour la classe Litteral, les tests unitaires menés lors de l'itération 1 +n'avaient plus lieu d'être et ont été conservés en commentaire. +La méthode d'instance compareTo() testée avant le passage de la classe +en abstrait et vaut pour les identificateurs d'entier et de chaîne. + +\section{IdentificateurChaine et IdentificateurEntier} + +Lors des tests unitaires des deux classes, la syntaxe des identificateurs +a été testées. Les tests ont été concluants. + +\section{Variable} + +La classe Variable a été développée lors de l'itération 1 et a donc été +testée avec les identificateurs d'entier et de chaîne et seulement avec des +valeurs de type Chaine, en effet, la classe Entier ne faisait pas partie de +la conception de l'itération 1. \ No newline at end of file diff --git a/documents/dossierLaTex/fichiers/tests/chap_interpreteurlir.expressions.tex b/documents/dossierLaTex/fichiers/tests/chap_interpreteurlir.expressions.tex new file mode 100644 index 0000000..afc1738 --- /dev/null +++ b/documents/dossierLaTex/fichiers/tests/chap_interpreteurlir.expressions.tex @@ -0,0 +1,19 @@ +% \chapter{Tests du paquetage interpreteurlir.expressions} + +\section{Expression} + +Cette classe Expression a été passée en abstract lors de l'itération 3 +cependant les tests des méthodes statiques restent pertinents et ont donc +été conservés. + +\section{ExpressionChaine} + +Lors du développement de la classe ExpressionChaine, l'ambigüité des symboles +des opérateurs ("+" et "=") a posé problème. En effet, il fallait déterminer +l'emplacement de l'opérateur en ignorant ces symboles s'ils sont contenu dans +les constantes littérales. Au fil du développement, les tests ont été concluants. + +\section{ExpressionEntier} + +\section{ExpressionBoolenne} + diff --git a/documents/dossierLaTex/fichiers/tests/docTests.tex b/documents/dossierLaTex/fichiers/tests/docTests.tex index 9541d6c..a594c29 100644 --- a/documents/dossierLaTex/fichiers/tests/docTests.tex +++ b/documents/dossierLaTex/fichiers/tests/docTests.tex @@ -1,685 +1,19 @@ -\begin{enum} - \item interpreteurlir.tests.TestContexte -\begin{verbatim} - Exécution du test de Contexte#Contexte() -Réussite de testContexte - Exécution du test de Contexte#raz() -Réussite de testRaz - Exécution du test de Contexte#toString() -Réussite de testToString - Exécution du test de Contexte#ajouterVariable(Identificateur, Litteral) -$chaine = "blabla" -$zoro = "Zoro le héro" -entier = 25 - -$abcd = "lol" -$chaine = "viveLa Vie" -$zoro = " ah ah ! " -entier = -1 - -Réussite de testAjouterVariable - Exécution du test de Contexte#lireValeurVariable(Identificateur) -Zoro le héro -Réussite de testLireValeurVariable -\end{verbatim} - - \item interpreteurlir.donnees.tests.TestIdentificateurChaine -\begin{verbatim} - Exécution du test de IdentificateurEntier(String identificateur) -Réussite de testIdentificateurChaineString - Exécution du test de getNom() -Réussite de testGetNom -\end{verbatim} - - \item interpreteurlir.donnees.tests.TestIdentificateurEntier -\begin{verbatim} -Réussite de testIdentificateurEntierString -Réussite de testGetNom -\end{verbatim} - - - \item interpreteurlir.donnees.tests.TestVariable -\begin{verbatim} - Exécution du test de toString() -Réussite de testToString - Exécution du test de compareTo -Réussite de testCompareTo - Exécution du test de Variable(Identificateur, Littéral) -Réussite de testVariableIdentificateurChaineLitteral - Exécution du test de getIdentificateur() -Réussite de testGetIdentificateurChaine - Exécution du test de getValeur() -Réussite de testGetValeurChaine - Exécution du test de setValeur() -Réussite de testSetValeurChaine -\end{verbatim} - - \item interpreteurlir.donnees.litteraux.tests.TestBooleen -\begin{verbatim} - Exécution du test de getValeur -Réussite de testGetValeur -\end{verbatim} - - \item interpreteurlir.donnees.litteraux.tests.TestChaine -\begin{verbatim} - Exécution du test de Chaine(String) -Réussite de testChaine - Exécution du test de toString -Réussite de testToString - Exécution du test de compareTo(Chaine) - Avec égalités - Avec des inégalités -Réussite de testCompareTo - Exécution du test de concaténer -Réussite de testConcatener -\end{verbatim} - - \item interpreteurlir.donnees.litteraux.tests.TestEntier -\begin{verbatim} - Exécution du test de quotient(Entier, Entier) par 0 -Réussite de testQuotientParZero - Exécution du test de Entier(String) -Réussite de testEntierString - Exécution du test de getValeur() -Réussite de testGetValeur - Exécution du test de soustrait(Entier, Entier) -Réussite de testSoustrait - Exécution du test de quotient(Entier, Entier) -Réussite de testQuotient - Exécution du test de compareTo() -Réussite de testCompareTo - Exécution du test de multiplie(Entier, Entier) -Réussite de testMultiplie - Exécution du test de reste(Entier, Entier) -Réussite de testReste - Exécution du test de Entier(String) -Réussite de testToString - Exécution du test de somme(Entier, Entier) -Réussite de testSomme - Exécution du test de reste(Entier, Entier) par 0 -Réussite de testResteParZero -\end{verbatim} - - \item interpreteurlir.expression.tests.TestExpression -\begin{verbatim} - Exécution du test de Expression#referencerContexte(Contexte) -Réussite de testReferencerContexte - Exécution du test de Expression#determinerTypeExpression(String) -Réussite de testDeterminerTypeExpression -\end{verbatim} - - \item interpreteurlir.expression.tests.TestExpressionBooleenne -\begin{verbatim} - Exécution du test de ExpressionBooleenne() -Réussite de testExpressionBooleenne - Exécution du test de Calculer() -Réussite de testCalculer - Exécution du test de toString() -Réussite de testToString -\end{verbatim} - - \item interpreteurlir.expression.tests.TestExpressionChaine -\begin{verbatim} - Exécution du test de ExpressionChaine#ExpressionChaine(String) -Réussite de testExpressionChaineString - Exécution du test de ExpressionChaine#calculer() - Contexte initial : -$toto = "valToto" - -Calcul de : $chaine = "texte" - Contexte : -$chaine = "texte" -$toto = "valToto" - - -Calcul de : $chaine = "tata" - Contexte : -$chaine = "tata" -$toto = "valToto" - - -Calcul de : $tata - Contexte : -$chaine = "tata" -$toto = "valToto" - - -Calcul de : "une chaine de texte" - Contexte : -$chaine = "tata" -$toto = "valToto" - - -Calcul de : $chaine = "toto" + "titi" - Contexte : -$chaine = "tototiti" -$toto = "valToto" - - -Calcul de : $chaine = $toto + "titi" - Contexte : -$chaine = "valTototiti" -$toto = "valToto" - - -Calcul de : $chaine = "toto" + $titi - Contexte : -$chaine = "toto" -$toto = "valToto" - - -Calcul de : $chaine = $toto + $titi - Contexte : -$chaine = "valToto" -$toto = "valToto" - - -Calcul de : "toto" + "titi" - Contexte : -$chaine = "valToto" -$toto = "valToto" - - -Calcul de : $toto + "titi" - Contexte : -$chaine = "valToto" -$toto = "valToto" - - -Calcul de : "toto" + $titi - Contexte : -$chaine = "valToto" -$toto = "valToto" - - -Calcul de : $toto + $titi - Contexte : -$chaine = "valToto" -$toto = "valToto" - - -Calcul de : "ab=bc" - Contexte : -$chaine = "valToto" -$toto = "valToto" - - -Calcul de : $chaine = "ab+cd" + $toto - Contexte : -$chaine = "ab+cdvalToto" -$toto = "valToto" - -Réussite de testCalculer - Exécution du test de ExpressionChaine#toString() -Réussite de testToString -\end{verbatim} - - \item interpreteurlir.expression.tests.TestExpressionEntier -\begin{verbatim} - Exécution du test de ExpressionEntier#calculer() - Contexte initial : -j34n = 1 -marcel = 0 -pi3rr3 = 2 - -Calcul de : entier = 2 + 3 - Contexte : -entier = 5 -j34n = 1 -marcel = 0 -pi3rr3 = 2 - - -Calcul de : entier = 2 * 3 - Contexte : -entier = 6 -j34n = 1 -marcel = 0 -pi3rr3 = 2 - - -Calcul de : bob = marcel - 2 - Contexte : -bob = -2 -entier = 6 -j34n = 1 -marcel = 0 -pi3rr3 = 2 - - -Calcul de : 45 + 14 - Contexte : -bob = -2 -entier = 6 -j34n = 1 -marcel = 0 -pi3rr3 = 2 - - -Calcul de : 45 * -2 - Contexte : -bob = -2 -entier = 6 -j34n = 1 -marcel = 0 -pi3rr3 = 2 - - -Calcul de : affectation = 64 - Contexte : -affectation = 64 -bob = -2 -entier = 6 -j34n = 1 -marcel = 0 -pi3rr3 = 2 - - -Calcul de : affectation = marcel - Contexte : -affectation = 0 -bob = -2 -entier = 6 -j34n = 1 -marcel = 0 -pi3rr3 = 2 - - -Calcul de : entier = j34n + pi3rr3 - Contexte : -affectation = 0 -bob = -2 -entier = 3 -j34n = 1 -marcel = 0 -pi3rr3 = 2 - - -Calcul de : entier = j34n - Contexte : -affectation = 0 -bob = -2 -entier = 1 -j34n = 1 -marcel = 0 -pi3rr3 = 2 - - -Calcul de : 42 - Contexte : -affectation = 0 -bob = -2 -entier = 1 -j34n = 1 -marcel = 0 -pi3rr3 = 2 - - -Calcul de : rep0ns3 = 42 - Contexte : -affectation = 0 -bob = -2 -entier = 1 -j34n = 1 -marcel = 0 -pi3rr3 = 2 -rep0ns3 = 42 - - -Calcul de : division = 12 / 0 -Attention Division par 0 - -Calcul de : modulo = 12 % 0 -Attention Division par 0 -Réussite de testCalculer - Exécution du test de ExpressionEntier#toString() -Réussite de testToString - Exécution du test de ExpressionEntier#ExpressionEntier(String) -Réussite de testExpressionEntierString -\end{verbatim} - - \item interpreteurlir.motscles.tests.TestCommandeCharge -\begin{verbatim} -Test valides de CommandeCharge#executer(): -Test 1\7: -5 var $test = "fichier1 OK" -10 stop -Test 2\7: -5 var $test = "fichier2 OK" -10 stop -Test 3\7: -5 var $test = "fichier3 OK" -10 stop -Test 4\7: -5 var $test = "fichier4 OK" -10 stop -Test 5\7: -5 var $test = "fichier5 OK" -10 stop -Test 6\7: -5 var $test = "fichier6 OK" -10 stop -Test 7\7: -5 var $test = "fichier7 OK" -10 stop - -Test invalides de CommandeCharge#executer(): -aucune ligne à afficher -aucune ligne à afficher -Réussite de testExecuter -Réussite de testCommandeCharge -\end{verbatim} - - \item interpreteurlir.motscles.tests.TestCommandeDebut -\begin{verbatim} - Exécution du test de CommandeDebut#executer() -Réussite de testExecuter - Exécution du test de CommandeDebut#CommandeDebut(String, Contexte) -Réussite de testCommandeDebutStringContexte -\end{verbatim} - - \item interpreteurlir.motscles.tests.TestCommandeDefs -\begin{verbatim} - Exécution du test de CommandeDefs#CommandeDefs(String, Contexte) -Réussite de testCommandeDefsStringContexte - Exécution du test de CommandeDefs#executer() -Affichage du contexte : -aucune variable n'est définie -Affichage du contexte : -aucune variable n'est définie -Affichage du contexte : -aucune variable n'est définie -Réussite de testExecuter -\end{verbatim} - - \item interpreteurlir.motscles.tests.TestCommandeEfface -\begin{verbatim} - Exécution du test de CommandeEfface(String, Contexte) -Réussite de testCommandeEfface - Exécution du test d'executer() -Test visuel : -10 affiche Bonjour -20 affiche Comment -30 affiche Allez -40 affiche Vous -50 affiche foobar - -10 affiche Bonjour -40 affiche Vous -50 affiche foobar - -Réussite de testExecuter -\end{verbatim} - - \item interpreteurlir.motscles.tests.TestCommandeFin -\begin{verbatim} - Exécution du test de CommandeFin#executer() - Le programme doit s'éteindre en affichant un message d'aurevoir : -Test exécuter désactiver -Réussite de testExecuter - Exécution du test de CommandeFin#CommandeFin(String, Contexte) -Réussite de testCommandeFinStringContexte -\end{verbatim} - - \item interpreteurlir.motscles.tests.TestCommandeLance -\begin{verbatim} - Exécution du test de CommandeLance#executer() -Réussite de testExecuter - Exécution du test de CommandeLance#CommandeLance(String, Contexte) -Réussite de testCommandeLance -\end{verbatim} - - \item interpreteurlir.motscles.tests.TestCommandeListe -\begin{verbatim} - Exécution du test de CommandeListe#executer() -1 var $res = "1 " -10 var $res = $res + "10 " -13 var $res = $res + "13 " -25 var $res = $res + "25 " -31 var $res = $res + "31 " -40 var $res = $res + "40 " -78 var $res = $res + "78 " -89 var $res = $res + "89 " -13 var $res = $res + "13 " -25 var $res = $res + "25 " -25 var $res = $res + "25 " -31 var $res = $res + "31 " -40 var $res = $res + "40 " -40 var $res = $res + "40 " -78 var $res = $res + "78 " -89 var $res = $res + "89 " -Réussite de testExecuter - Exécution du test de CommandeListe#CommandeListe(String, Contexte) -Réussite de testCommandeListe -\end{verbatim} - - \item interpreteurlir.motscles.tests.TestCommandeSauve -\begin{verbatim} - Exécution du test de CommandeSauve#CommandeSauve(String, Contexte) -Réussite de testCommandeSauveStringContexte - Exécution du test de CommandeSauve#executer() -Réussite de testExecuter -\end{verbatim} - - \item interpreteurlir.motscles.instructions.tests.TestInstructionAffiche -\begin{verbatim} - Exécution du test de InstructionAffiche(String, Contexte) -Réussite de testInstructionAffiche - Exécution du test de executer() -TEST VISUEL SUR CONSOLE : - - test visuel suivant : - - - test visuel suivant : - - - test visuel suivant : -Hello World !!! - test visuel suivant : -6 - test visuel suivant : -0 - test visuel suivant : --3 - test visuel suivant : - - test visuel suivant : -coucou - test visuel suivant : -300000000000000000 ça passe -Réussite de testExecuter - Exécution du test de toString() -Réussite de testToString -\end{verbatim} - - \item interpreteurlir.motscles.instructions.tests.TestInstructionEntre -\begin{verbatim} - Exécution du test de InstructionEntre#toString() -Réussite de testToString -Execution du test de InstructionEntre#executer() -? entre $chaine -"uneChaine" -ok -? entre $toto -"uneAutreChaine" -ok -? entre entier -42 -ok -? entre resultat -10 -ok -Contexte : -$chaine = ""uneChaine"" -$toto = ""uneAutreChaine"" -entier = 42 -resultat = 10 - -Réussite de testExecuter - Exécution du test de InstructionEntre#InstructionEntre(String, Contexte) -Réussite de testInstructionEntreStringContexte -\end{verbatim} - - - \item interpreteurlir.motscles.instructions.tests.TestInstructionProcedure -\begin{verbatim} - Execution du test de InstructionProcedure#toString() -Réussite de testToString - Execution du test de InstructionProcedure#executer() -Réussite de testExecuter - Execution du test de InstructionProcedure#InstructionProcedure(String, Contexte) -Réussite de testInstructionProcedureStringContexte -\end{verbatim} - - \item interpreteurlir.motscles.instructions.tests.TestInstructionRetour -\begin{verbatim} - Exécution du test de InstructionRetour#InstructionRetour(String, Contexte) -Réussite de testInstructionRetourStringContexte - Execution du test de InstructionRetour#executer() -Réussite de testExecuter - Execution du test de InstructionRetour#toString() -Réussite de testToString -\end{verbatim} - - \item interpreteurlir.motscles.instructions.tests.TestInstructionSi -\begin{verbatim} - Exécution du test de InstructionSi#toString() -Réussite de testToString - Exécution du test de InstructionSi#executer() -Réussite de testExecuter - Exécution du test de InstructionSi#InstructionSi(String, Contexte) -Réussite de testInstructionSiStringContexte -\end{verbatim} - - \item interpreteurlir.motscles.instructions.tests.TestInstructionStop -\begin{verbatim} - Exécution du test de executer() -Test Visuels - -10 affiche "Bonjour" -20 affiche "Comment" -30 affiche "Allez" -40 affiche "Vous" -45 stop -50 affiche "foobar" - -lancement du programme : ne doit pas afficher foobar -BonjourCommentAllezVous -Réussite de testExecuter - Exécution du test de toString() -Réussite de testToString - Exécution du test de InstructionStop(String, Contexte) -Réussite de testInstructionStop -\end{verbatim} - - \item interpreteurlir.motscles.instructions.tests.TestInstructionVaen -\begin{verbatim} - Execution du test de InstructionVaen#InstructionVaen(String, Contexte) -Réussite de testInstructionVaenStringContexte - Execution du test de InstructionVaen#executer() -Test visuel : Ne doit pas afficher les étiquettes (25, 31, 40 ) -1 10 13 78 89 -Réussite de testExecuter - Execution du test de InstructionVaen#toString() -Réussite de testToString -\end{verbatim} - - \item interpreteurlir.motscles.instructions.tests.TestInstructionVar -\begin{verbatim} - Exécution du test de InstructionVar(String, Contexte) -Réussite de testInstructionVar - Exécution du tes de toString() -Réussite de testToString -\end{verbatim} - - \item interpreteurlir.programmes.tests.TestEtiquette -\begin{verbatim} - Exécution du test de Etiquette#Etiquette(int) -Réussite de testEtiquetteInt - Exécution du test de Etiquette#Etiquette(String) -Réussite de testEtiquetteString - Exécution du test de Etiquette#getValeur() -Réussite de testGetValeur - Exécution du test de Etiquette#compareTo(Etiquette) -Réussite de testCompareTo - Exécution du test de Etiquette#toString() -Réussite de testToString -\end{verbatim} - - \item interpreteurlir.programmes.tests.TestProgramme -\begin{verbatim} - Exécution du test de Programme() : -Réussite de testProgramme - Exécution du test de toString() : -Réussite de testToString - Exécution du test de raz() : -Réussite de testRaz - Exécution du test de ajouterLigne() : -Réussite de testAjouterLigne - Exécution du test de listeBornee() : -Réussite de testListeBornee - Exécution du test de appelProcedure(Etiquette) : -Réussite de testAppelProcedure - Exécution du test de vaen(Etiquette) : voir TestInstructionVaen#testExecuter() -Réussite de testVaen - Exécution du test de Programme#stop() : voir TestInstructionStop#testExecuter() -Réussite de testStop - Exécution du test de lancer() TEST INTERACTIF : -1 var $toto = "toto" -5 var $agreuagreu = "agreu" -10 var tata = 0 + 0 -13 var $titi = "titi" -31 entre tutu -40 var entier = 93 -89 var $youpi = "youpi lapin" - -80 -$agreuagreu = "agreu" -$titi = "titi" -$toto = "toto" -$youpi = "youpi lapin" -entier = 93 -tata = 0 -tutu = 80 - -Réussite de testLancer - Exécution du test de effacer() : -Réussite de testEffacer - Exécution du test de retourProcedure() : -Réussite de testRetourProcedure - Exécution du test de lancer(Etiquette) TEST INTERACTIF : -1 var $toto = "toto" -5 var $agreuagreu = "agreu" -10 var tata = 0 + 0 -13 var $titi = "titi" -31 entre tutu -40 var entier = 93 -89 var $youpi = "youpi lapin" - -5 -tutu = 5 - -10 var tata = 0 + 0 -13 var $titi = "titi" -31 entre tutu -40 var entier = 93 -89 var $youpi = "youpi lapin" - -9 -tutu = 9 - -31 entre tutu -40 var entier = 93 -89 var $youpi = "youpi lapin" - -10 -tutu = 10 - -aucune ligne à afficher - -aucune variable n'est définie - -Réussite de testLancerEtiquette -\end{verbatim} -\end{enum} +% Partie 5 Tests +\large +\chapter*{Démarche globale} +Afin de développer l'Interpréteur LIR selon un modèle de cycle de vie +itératif, nous avons privilégié la méthode du TDD, Test Driven Development ou +développement dirigé par les tests en français. +\\Ainsi, la majorité des composants de ce logiciel ont été développé selon +cette méthode à l'aide des outils de tests écrits lors des TD de Programmation +Orientée Objet du semestre 2. Par conséquent, nous n'avons pas utilisé le +framework de test JUnit. + +\chapter{Tests du paquetage interpreteurlir.donnees.litteraux} +\input{./fichiers/tests/chap_interpreteurlir.donnees.litteraux} + +\chapter{Tests du paquetage interpreteurlir.donnees} +\input{./fichiers/tests/chap_interpreteurlir.donnees} + +\chapter{Tests du paquetage interpreteurlir.expressions} +\input{./fichiers/tests/chap_interpreteurlir.expressions} \ No newline at end of file