Réparation branche dev

This commit is contained in:
SylvanCourtiol
2021-05-08 18:38:44 +02:00
parent 9bf6910e72
commit 8993389bfd
30 changed files with 0 additions and 237 deletions
@@ -1,25 +0,0 @@
/**
* InterpreteurException.java 7 mai 2021
* IUT Rodez info1 2020-2021, pas de copyright, aucun droit
*/
package interpreteurlir;
/**
* Exception levée lors d'une erreur dans l'interpreteur LIR.
* (Erreur de syntaxe, erreur de types)
* @author Nicolas Caminade
* @author Sylvan Courtiol
* @author Pierre Debas
* @author Heïa Dexter
* @author Lucas Vabre
*/
public class InterpreteurException extends RuntimeException {
/**
* Une exception de syntaxe expliquée par un message
* @param message explication succincte de cette exception
*/
public InterpreteurException(String message) {
super(message);
}
}
@@ -1,72 +0,0 @@
/**
* Chaine.java 7 mai 2021
* IUT info1 2020-2021, pas de copyright, aucun droit
*/
package interpreteurlir.donnees.litteraux;
import interpreteurlir.InterpreteurException;
/**
* Constante littérale de type chaîne de caractères.
* @author Nicolas Caminade
* @author Sylvan Courtiol
* @author Pierre Debas
* @author Heïa Dexter
* @author Lucas Vabre
*/
public class Chaine extends Litteral {
/** Longueur maximale d'une chaîne */
public static final int LG_MAX_CHAINE = 70;
/** Erreur chaîne trop longue */
private static final String ERREUR_LG_MAX = "Longueur maximale dépassée";
/**
* initialise cette chaîne avec une valeur par défaut.
*/
public Chaine() {
valeur = "";
}
/**
* Initialise une chaîne avec la séquence de caractères passée en argument.
* @param uneValeur
*/
public Chaine(String uneValeur) {
if (uneValeur.length() > LG_MAX_CHAINE)
throw new InterpreteurException(ERREUR_LG_MAX);
valeur = uneValeur;
}
/**
* Concatène deux chaînes ensemble. Opération non commutative:
* a + b != b + a
* @param a une Chaîne
* @param b une autre Chaîne
* @return une nouvelle Chaîne.
*/
public static Chaine concatener(Chaine a, Chaine b) {
return null;
}
/* non javadoc
* @see interpreteurlir.donnees.litteraux.Litteral#compareTo(interpreteurlir.donnees.litteraux.Litteral)
*/
@Override
public int compareTo(Litteral autre) {
// TODO Auto-generated method stub
return this.valeur.toString().compareTo(autre.valeur.toString());
}
/* non javadoc
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
return '\"' + valeur.toString() + '\"';
}
}
@@ -1,63 +0,0 @@
/**
* Litteral.java 7 mai 2021
* IUT info1 2020-2021, pas de copyright, aucun droit
*/
package interpreteurlir.donnees.litteraux;
/**
* Valeur littérale utilisée dans une expression.
* Chaque littérale est reconnue par sont type.
* @author Nicolas Caminade
* @author Sylvan Courtiol
* @author Pierre Debas
* @author Heïa Dexter
* @author Lucas Vabre
*/
public class Litteral implements Comparable<Litteral> {
/** valeur de ce littéral */
protected Object valeur;
/**
* Initialise ce littéral par défaut.
*/
protected Litteral() {
super();
}
/**
* Initialise cette valeur avec un objet argument.
* @param valeur
*/
public Litteral(Object valeur) { // TODO public >>> protected
super();
this.valeur = valeur;
}
/**
* @return la valeur de valeur
*/
public Object getValeur() {
return valeur;
}
/* non javadoc
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
return valeur.toString();
}
/* non javadoc
* @see java.lang.Comparable#compareTo(java.lang.Object)
*/
@Override
public int compareTo(Litteral autre) {
if (autre.valeur.getClass() == this.valeur.getClass())
return 0;
return this.valeur.hashCode() - autre.valeur.hashCode();
}
}
@@ -1,120 +0,0 @@
/**
* TestChaine.java 8 mai 2021
* IUT info1 2020-2021, pas de copyright, aucun droit
*/
package interpreteurlir.donnees.litteraux.test;
import interpreteurlir.InterpreteurException;
import interpreteurlir.donnees.litteraux.Chaine;
/**
* Tests unitaires de Chaine
* @author Nicolas Caminade
* @author Sylvan Courtiol
* @author Pierre Debas
* @author Heïa Dexter
* @author Lucas Vabre
*/
public class TestChaine {
/** test de Chaine(String) */
public static void testChaine() {
final String[] VALIDE = {
"arztyehjklmpoijhghnbghjklmpoiuytrf" +
"ghjnklmpoiuytrezaqsdfghnjklmpjbfrtyu", "","coucou ",
Integer.toString(42)
};
final String INVALIDE =
"arztyehjklmpoijhghnbghjklmpoiuytrf" +
"yeryghjnklmpoiuytrezaqsdfghnjklmpjbfrtyu";
System.out.println("test de Chaine(String)");
for (String aTester : VALIDE)
new Chaine(aTester);
try {
new Chaine(INVALIDE);
throw new RuntimeException("Instanciation interdite");
} catch (InterpreteurException lancee) {
System.out.println("Revoi d'exception OK\nfin du test");
}
}
/** test de compareTo */
public static void testCompareTo() {
final Chaine[][] EGALITES = {
{new Chaine("coucou"), new Chaine("coucou")},
{new Chaine(" "), new Chaine(" ")},
{new Chaine(""), new Chaine()}
};
final Chaine[][] DIFFERENCES = {
{new Chaine("coucou"), new Chaine("camomille")},
{new Chaine("tarentule"), new Chaine("coucou")},
{new Chaine("coucou"), new Chaine(" ")},
{new Chaine("coucou"), new Chaine()},
{new Chaine(" "), new Chaine()}
};
System.out.println("test de compareTo(Chaine)\nAvec égalités");
for (Chaine[] couple : EGALITES) {
try {
assert couple[0].compareTo(couple[1]) == 0;
} catch (AssertionError lancee) {
System.err.println("Echec du test");
}
}
System.out.println("Avec des inégalités");
for (Chaine[] couple : DIFFERENCES) {
try {
assert couple[0].compareTo(couple[1]) > 0;
} catch (AssertionError lancee) {
System.err.println("Echec du test");
}
}
System.out.println("fin du test");
}
/** test de toString */
public static void testToString() {
final Chaine[] A_AFFICHER = {
new Chaine(), new Chaine(" "), new Chaine("coucou"),
new Chaine(" coucou "), new Chaine("coucou monsieur")
};
final String[] AFFICHAGE_GUILLEMETS = {
"\"\"", "\" \"", "\"coucou\"", "\" coucou \"",
"\"coucou monsieur\""
};
System.out.println("test de toString");
for (int i = 0 ; i < A_AFFICHER.length ; i++) {
try {
assert A_AFFICHER[i].toString().equals(AFFICHAGE_GUILLEMETS[i]);
} catch (AssertionError lancee) {
System.err.println("Echec du test a l'indice " + i);
}
}
System.out.println("==>test terminé\n");
}
/**
* Lancement des tests
* @param args non utilisés
*/
public static void main(String[] args) {
testChaine();
testCompareTo();
testToString();
}
}
@@ -1,171 +0,0 @@
/**
* TestLitteraux.java 7 mai 2021
* IUT info1 2020-2021, pas de copyright, aucun droit
*/
package interpreteurlir.donnees.litteraux.test;
import interpreteurlir.donnees.litteraux.Litteral;
/**
* Test unitaires des constantes littérales de l'interpréteurlir
* @author Nicolas Caminade
* @author Sylvan Courtiol
* @author Pierre Debas
* @author Heïa Dexter
* @author Lucas Vabre
*/
public class TestLitteraux {
/** Jeux de littéraux pour test. */
private static final Litteral[] VALIDES = {
/* Caractères */
new Litteral('a'),
new Litteral('!'),
new Litteral('\"'),
new Litteral('1'),
new Litteral('\t'),
/* Chaînes */
new Litteral("ceci est une chaine"),
new Litteral("bonjour"),
new Litteral(" bonjour "),
new Litteral(""),
new Litteral(" "),
/* Entier */
new Litteral(123),
new Litteral(-123),
new Litteral(0),
new Litteral(Integer.MAX_VALUE),
/* Double */
new Litteral(14.258),
new Litteral(-14.128),
new Litteral(0.0),
new Litteral(Double.NaN),
new Litteral(Double.NEGATIVE_INFINITY),
new Litteral(Double.MAX_VALUE),
new Litteral(Double.MIN_VALUE),
new Litteral(Double.MIN_NORMAL),
/* Boolean */
new Litteral(true),
new Litteral(false),
new Litteral(3 >= 4),
new Litteral(true),
new Litteral(true),
new Litteral(true)
};
/** test de getValeur */
public static void testGetValeur() {
final Object[] VALEURS_ATTENDUES = {
'a', '!', '\"', '1', '\t' ,"ceci est une chaîne", "bonjour",
" bonjour ", "", " ", 123, -123, 0, 2147483647, 14.258, -14.128,
0.0, Double.NaN, Double.NEGATIVE_INFINITY, Double.MAX_VALUE,
Double.MIN_VALUE, Double.MIN_NORMAL, true, false, false, true, true,
true
};
System.out.println("test de getValeur\n");
for (int i = 0 ; i < VALIDES.length ; i++) {
try {
assert (VALIDES[i].getValeur().equals(VALEURS_ATTENDUES[i]));
} catch (AssertionError lancee) {
System.err.println("Echec du test a l'indice " + i);
}
}
System.out.println("==>test terminé\n");
}
/** test de toString */
public static void testToString() {
final String[] STRING_ATTENDUE = {
"a", "!", "\"", "1", "\t", "ceci est une chaîne", "bonjour",
" bonjour ", "", " ", "123", "-123", "0", "2147483647", "14.258",
"-14.128", "0.0", "NaN", "-Infinity", "1.7976931348623157E308",
"4.9E-324", "2.2250738585072014E-308", "true", "false", "false",
"true", "true", "true"
};
System.out.println("test de toString\n");
for (int i = 0 ; i < VALIDES.length ; i++ ) {
try {
assert (VALIDES[i].toString().equals(STRING_ATTENDUE[i]));
} catch (AssertionError lancee) {
System.err.println("Echec du test a l'indice " + i);
}
}
System.out.println("==>test terminé\n");
}
/** test de compareTo */
public static void testCompareTo() {
final Litteral[] MEMES_TYPES = {
new Litteral('a'),
new Litteral('!'),
new Litteral('\"'),
new Litteral('Z'),
new Litteral('s'),
new Litteral("bonjour"),
new Litteral("bonjour"),
new Litteral("arar"),
new Litteral("zarar za "),
new Litteral("CAFE_BABE"),
new Litteral(123),
new Litteral(123),
new Litteral(0),
new Litteral(-123),
new Litteral(Double.MAX_VALUE),
new Litteral(Double.NaN),
new Litteral(12.3),
new Litteral(Double.NaN),
new Litteral(45.7),
new Litteral(-12.6),
new Litteral(0.0),
new Litteral(Double.MIN_NORMAL),
new Litteral(false),
new Litteral(false),
new Litteral(true),
new Litteral(true),
new Litteral(true),
new Litteral(true)
};
System.out.println("test de compareTo\nAvec des types identiques");
for (int i = 0 ; i < VALIDES.length ; i++ ) {
try {
assert (VALIDES[i].compareTo(MEMES_TYPES[i]) == 0);
} catch (AssertionError lancee) {
System.err.println("Echec du test a l'indice " + i);
}
}
System.out.println("Avec des types différents");
for (int i = 0 ; i < VALIDES.length ; i++ ) {
try {
assert (VALIDES[i].compareTo(MEMES_TYPES[MEMES_TYPES.length
- (i + 1)]) != 0);
} catch (AssertionError lancee) {
System.err.println("Echec du test a l'indice " + i);
}
}
System.out.println("==>test terminé\n");
}
/**
* Lancement des test
* @param args non utilisé
*/
public static void main(String[] args) {
testGetValeur();
testToString();
testCompareTo();
}
}
@@ -1,78 +0,0 @@
/**
* Expression.java 7 mai 2021
* IUT Rodez info1 2020-2021, pas de copyright, aucun droit
*/
package interpreteurlir.expressions;
import interpreteurlir.Contexte;
import interpreteurlir.InterpreteurException;
import interpreteurlir.donnees.litteraux.Litteral;
/**
* Une expression contient tous les liens et données nécessaires à son calcul.
* Une expression peut être calculée pour obtenir une valeur.
* Elle peut affecter une valeur à une variable dans le contexte.
* @author Nicolas Caminade
* @author Sylvan Courtiol
* @author Pierre Debas
* @author Heïa Dexter
* @author Lucas Vabre
*/
public class Expression {
/** Contexte global pour accéder aux données. */
private static Contexte contexteGlobal;
// TODO stocker opérandes (identificateur ou Litteral)
/**
* Initialise une expression par défaut avec les liens nécessaires à
* son calcul.
*/
protected Expression() {
super();
}
/**
* Calculer la valeur de cette expression à ce moment précis.
* Peut accéder au contexte.
* @return un Litteral de valeur du résultat de l'expression
*/
public Litteral calculer() {
return null;
}
/* non javadoc
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
return "Expression#toString() BOUCHON";
}
/**
* Référence le contexte pour accéder aux variables lors du calcul.
* Le référencement vaut pour toutes les expressions
* et est possible une unique fois.
* @param aReferencer référence du contexte global
* @return <ul><li>true si le contexte a pu être référencé</li>
* <li>false si aReferencer est null</li>
* <li>false si un contexte est déjà référencer</li>
* </ul>
*/
public static boolean referencerContexte(Contexte aReferencer) {
return false;
}
/**
* Détermine et créé une expression du bon type selon texteExpression.
* @param texteExpression texte suivant la syntaxe d'une expression
* @return l'expression du bon type correspondant à texteExpression
* @throws InterpreteurException si texteExpression n'est pas valide
* ou amène à une incohérence de type
*/
public static Expression determinerType(String texteExpression) {
return null;
}
}
@@ -1,50 +0,0 @@
/**
* ExpressionChaine.java 7 mai 2021
* IUT Rodez info1 2020-2021, pas de copyright, aucun droit
*/
package interpreteurlir.expressions;
import interpreteurlir.InterpreteurException;
import interpreteurlir.donnees.litteraux.Chaine;
/**
* Expression de type Chaine qui peut être calculer.
* @author Nicolas Caminade
* @author Sylvan Courtiol
* @author Pierre Debas
* @author Heïa Dexter
* @author Lucas Vabre
*/
public class ExpressionChaine extends Expression {
/**
* Initalise une expression de type Chaine avec les liens nécessaires à son
* calcule.
* @param texteExpression texte suivant la syntaxe d'une expression
* @throws InterpreteurException si texteExpression n'est pas valide
* ou amène à une incohérence de type
*/
public ExpressionChaine(String texteExpression) {
super();
// TODO
}
/* non javadoc
* @see interpreteurlir.expressions.Expression#calculer()
*/
@Override
public Chaine calculer() {
// TODO Auto-generated method stub
return null;
}
/* non javadoc
* @see interpreteurlir.expressions.Expression#toString()
*/
@Override
public String toString() {
// TODO Auto-generated method stub
return "ExpressionChaine#toString() BOUCHON";
}
}
@@ -1,50 +0,0 @@
/**
* ExpressionEntier.java 7 mai 2021
* IUT Rodez info1 2020-2021, pas de copyright, aucun droit
*/
package interpreteurlir.expressions;
import interpreteurlir.InterpreteurException;
import interpreteurlir.donnees.litteraux.Entier;
/**
* Expression de type Entier qui peut être calculer.
* @author Nicolas Caminade
* @author Sylvan Courtiol
* @author Pierre Debas
* @author Heïa Dexter
* @author Lucas Vabre
*/
public class ExpressionEntier extends Expression {
/**
* Initalise une expression de type Entier avec les liens nécessaires à son
* calcule.
* @param texteExpression texte suivant la syntaxe d'une expression
* @throws InterpreteurException si texteExpression n'est pas valide
* ou amène à une incohérence de type
*/
public ExpressionEntier(String texteExpression) {
super();
// TODO
}
/* non javadoc
* @see interpreteurlir.expressions.Expression#calculer()
*/
@Override
public Entier calculer() {
// TODO Auto-generated method stub
return null;
}
/* non javadoc
* @see interpreteurlir.expressions.Expression#toString()
*/
@Override
public String toString() {
// TODO Auto-generated method stub
return "ExpressionEntier#toString() BOUCHON";
}
}
@@ -1,19 +0,0 @@
/**
* ExpressionEntier.java 7 mai 2021
* IUT Rodez info1 2020-2021, pas de copyright, aucun droit
*/
package interpreteurlir.expressions.tests;
import interpreteurlir.expressions.Expression;
/**
* Tests unitaires de {@link Expression}
* @author Nicolas Caminade
* @author Sylvan Courtiol
* @author Pierre Debas
* @author Heïa Dexter
* @author Lucas Vabre
*/
public class ExpressionEntier {
}
@@ -1,19 +0,0 @@
/**
* TestExpression.java 7 mai 2021
* IUT Rodez info1 2020-2021, pas de copyright, aucun droit
*/
package interpreteurlir.expressions.tests;
import interpreteurlir.expressions.Expression;
/**
* Tests unitaires de {@link Expression}
* @author Nicolas Caminade
* @author Sylvan Courtiol
* @author Pierre Debas
* @author Heïa Dexter
* @author Lucas Vabre
*/
public class TestExpression {
}
@@ -1,19 +0,0 @@
/**
* TestExpressionChaine.java 7 mai 2021
* IUT Rodez info1 2020-2021, pas de copyright, aucun droit
*/
package interpreteurlir.expressions.tests;
import interpreteurlir.expressions.Expression;
/**
* Tests unitaires de {@link Expression}
* @author Nicolas Caminade
* @author Sylvan Courtiol
* @author Pierre Debas
* @author Heïa Dexter
* @author Lucas Vabre
*/
public class TestExpressionChaine {
}
@@ -1,58 +0,0 @@
/**
* Commande.java 7 mai 2021
* IUT Rodez info1 2020-2021, pas de copyright, aucun droit
*/
package interpreteurlir.motscles;
import interpreteurlir.Contexte;
import interpreteurlir.InterpreteurException;
/**
* Une commande (générale) n'a aucun comportement.
* Voir les sous-classes pour les comportements.
* Une commande contient tous les liens nécessaires à son exécution.
* Une commande peut être exécutée.
* @author Nicolas Caminade
* @author Sylvan Courtiol
* @author Pierre Debas
* @author Heïa Dexter
* @author Lucas Vabre
*/
public class Commande {
/** référence du contexte possiblement manié directement par la commande */
protected Contexte contexte;
/**
* Initialise une commande avec les liens dont elle a besoin pour
* s'exécuter à partir des arguments.
* Cependant la commande ne s'exécute pas à la construction.
* La commande a accès au contexte passé en argument.
* @param arguments chaîne de texte représentant les arguments
* @param contexte référence du contexte global
* @throws InterpreteurException est propagée si Commande la reçoit
* @throws NullPointerException si contexte ou arguments est null
*/
public Commande(String arguments, Contexte contexte) {
super();
if (arguments == null || contexte == null) {
throw new NullPointerException();
}
// arguments non utilisés dans Commande générale
this.contexte = contexte;
}
/**
* Commande d'exécution de la commande.
* @return true si la commande affiche un feedback directement sur la sortie
* standard, sinon false
*/
public boolean executer() {
// pas de comportement pour une Commande générale
return false; // pas de feedback
}
}
@@ -1,56 +0,0 @@
/**
* CommandeDebut.java 7 mai 2021
* IUT Rodez info1 2020-2021, pas de copyright, aucun droit
*/
package interpreteurlir.motscles;
import interpreteurlir.Contexte;
import interpreteurlir.InterpreteurException;
/**
* La commande debut n'a aucun arguments.
* Lors de son exécution :
* <ul><li>tous les identificateurs du contexte sont supprimés</li>
* <li>toutes les lignes de programmes mémorisée sont effacées</li>
* </ul>
* @author Nicolas Caminade
* @author Sylvan Courtiol
* @author Pierre Debas
* @author Heïa Dexter
* @author Lucas Vabre
*/
public class CommandeDebut extends Commande {
// TODO adapter la classe aux programmes
/**
* Initialise une commande debut qui est sans arguments
* et qui a besoin du contexte.
* @param arguments arguments de debut soit chaîne blanche ou vide
* @param contexte référence du contexte global
* @throws InterpreteurException si arguments n'est pas une chaîne blanche
* @throws NullPointerException si contexte ou arguments est null
*/
public CommandeDebut(String arguments, Contexte contexte) {
super(arguments, contexte);
final String ERREUR_ARGUMENTS = "la commande debut n'a pas d'arguments";
if (!arguments.isBlank()) {
throw new InterpreteurException(ERREUR_ARGUMENTS);
}
}
/**
* Commande d'exécution de la commande.
* Efface le contexte.
* @return false car aucun feedback afficher directement
*/
@Override
public boolean executer() {
contexte.raz();
return false;
}
}
@@ -1,52 +0,0 @@
/**
* CommandeDefs.java 7 mai 2021
* IUT Rodez info1 2020-2021, pas de copyright, aucun droit
*/
package interpreteurlir.motscles;
import interpreteurlir.Contexte;
import interpreteurlir.InterpreteurException;
/**
* La commande defs n'a aucun argument.
* Lors de son exécution, elle affiche le contenu du contexte
* (liste des identificateurs avec leurs valeurs)
* @author Nicolas Caminade
* @author Sylvan Courtiol
* @author Pierre Debas
* @author Heïa Dexter
* @author Lucas Vabre
*/
public class CommandeDefs extends Commande {
/**
* Initialise une commande defs qui est sans arguments et qui a
* besoin du contexte
* @param arguments arguments de defs soit chaîne blanche ou vide
* @param contexte référence du contexte global
* @throws InterpreteurException si arguments n'est pas une chaîne blanche
* @throws NullPointerException si contexte ou arguments est null
*/
public CommandeDefs(String arguments, Contexte contexte) {
super(arguments, contexte);
final String ERREUR_ARGUMENTS = "la commande defs n'a pas d'arguments";
if (!arguments.isBlank()) {
throw new InterpreteurException(ERREUR_ARGUMENTS);
}
}
/**
* Commande d'exécution de la commande.
* Affiche le contexte (liste des identificateurs avec leurs valeurs).
* @return true car l'affichage est un feedback directe de la commande
*/
@Override
public boolean executer() {
System.out.print(contexte.toString());
return true;
}
}
@@ -1,54 +0,0 @@
/**
* CommandeFin.java 7 mai 2021
* IUT Rodez info1 2020-2021, pas de copyright, aucun droit
*/
package interpreteurlir.motscles;
import interpreteurlir.Contexte;
import interpreteurlir.InterpreteurException;
/**
* La commande fin n'a aucun argument.
* Lors de son exécution, elle permet de quitter l'interpreteur en affichant un
* message d'aurevoir.
* @author Nicolas Caminade
* @author Sylvan Courtiol
* @author Pierre Debas
* @author Heïa Dexter
* @author Lucas Vabre
*/
public class CommandeFin extends Commande {
/**
* Initialise une commande fin qui est sans arguments.
* @param arguments arguments de fin soit chaîne blanche ou vide
* @param contexte référence du contexte global
* @throws InterpreteurException si arguments n'est pas une chaîne blanche
* @throws NullPointerException si contexte ou arguments est null
*/
public CommandeFin(String arguments, Contexte contexte) {
super(arguments, contexte);
final String ERREUR_ARGUMENTS = "la commande fin n'a pas d'arguments";
if (!arguments.isBlank()) {
throw new InterpreteurException(ERREUR_ARGUMENTS);
}
}
/**
* Commande d'exécution de la commande.
* Quitte l'interpreteur en affichant un message d'aurevoir.
* @return true si la commande affiche un feedback directement sur la sortie
* standard, sinon false
*/
@Override
public boolean executer() {
final String MESSAGE_AUREVOIR = "Au revoir, à bientôt !";
System.out.println(MESSAGE_AUREVOIR);
System.exit(0);
return true;
}
}
@@ -1,70 +0,0 @@
/**
* EssaiCommande.java 7 mai 2021
* IUT Rodez info1 2020-2021, pas de copyright, aucun droit
*/
package interpreteurlir.motscles.tests;
import interpreteurlir.Contexte;
import interpreteurlir.InterpreteurException;
import interpreteurlir.motscles.*;
/**
* Essais des commandes (création + éxécution)
* @author Nicolas Caminade
* @author Sylvan Courtiol
* @author Pierre Debas
* @author Heïa Dexter
* @author Lucas Vabre
*/
public class EssaiCommande {
/**
* Essais de commandes avec arguments invalides puis valides
* @param args non utilisé
*/
public static void main(String[] args) {
Contexte contexte = new Contexte();
/* Erreur dans commande */
System.out.println("? debut args");
try {
new CommandeDebut("args", contexte);
} catch (InterpreteurException lancee) {
feedback(lancee);
}
System.out.println("? defs args");
try {
new CommandeDefs("args", contexte);
} catch (InterpreteurException lancee) {
feedback(lancee);
}
System.out.println("? fin args");
try {
new CommandeFin("args", contexte);
} catch (InterpreteurException lancee) {
feedback(lancee);
}
/* Commande valide et exécution */
System.out.println("? debut");
feedback(new CommandeDebut("", contexte).executer());
System.out.println("? defs");
feedback(new CommandeDefs( "", contexte).executer());
System.out.println("? fin");
feedback(new CommandeFin( "", contexte).executer());
System.err.println("Erreur, la commande fin n'a pas quitter");
}
private static void feedback(boolean nonBesoinFeedback) {
if (!nonBesoinFeedback) {
System.out.println("ok");
}
}
private static void feedback(InterpreteurException lancee) {
System.out.println("nok : " + lancee.getMessage());
}
}
@@ -1,66 +0,0 @@
/**
* TestCommande.java 7 mai 2021
* IUT Rodez info1 2020-2021, pas de copyright, aucun droit
*/
package interpreteurlir.motscles.tests;
import static info1.outils.glg.Assertions.*;
import interpreteurlir.Contexte;
import interpreteurlir.motscles.Commande;
/**
* Tests unitaires de {@link interpreteurlir.motscles.Commande}
* @author Nicolas Caminade
* @author Sylvan Courtiol
* @author Pierre Debas
* @author Heïa Dexter
* @author Lucas Vabre
*/
public class TestCommande {
/** Jeux d'essais de Commande valides pour les tests */
private Commande[] fixture = {
new Commande("", new Contexte()),
new Commande("coucou", new Contexte()),
new Commande("$chaine = \"toto\" + $tata", new Contexte())
};
/**
* Tests unitaires de {@link Commande#Commande(String, Contexte)}
*/
public void testCommandeStringContexte() {
System.out.println(
"\tExécution du test de Commande#Commande(String, Contexte)");
/* Tests Commande invalide */
String[] arguments = { null, null, "" };
Contexte[] contexte = { null, new Contexte(), null};
for (int numTest = 0 ; numTest < arguments.length ; numTest++) {
try {
new Commande(arguments[numTest], contexte[numTest]);
echec();
} catch (NullPointerException lancee) {
}
}
try {
new Commande("", new Contexte());
new Commande("coucou", new Contexte());
new Commande("$chaine = \"toto\" + $tata", new Contexte());
} catch (NullPointerException e) {
echec();
}
}
/**
* Tests unitaires de {@link Commande#executer()}
*/
public void testExecuter() {
System.out.println("\tExécution du test de Commande#executer()");
for (Commande aTester : fixture) {
assertFalse(aTester.executer());
}
}
}
@@ -1,68 +0,0 @@
/**
* TestCommandeDebut.java 7 mai 2021
* IUT Rodez info1 2020-2021, pas de copyright, aucun droit
*/
package interpreteurlir.motscles.tests;
import static info1.outils.glg.Assertions.*;
import interpreteurlir.InterpreteurException;
import interpreteurlir.Contexte;
import interpreteurlir.motscles.CommandeDebut;
/**
* Tests unitaires de {@link interpreteurlir.motscles.CommandeDebut}
* @author Nicolas Caminade
* @author Sylvan Courtiol
* @author Pierre Debas
* @author Heïa Dexter
* @author Lucas Vabre
*/
public class TestCommandeDebut {
/** Jeux d'essais de CommandeDebut valides pour les tests */
private CommandeDebut[] fixture = {
new CommandeDebut("", new Contexte()),
new CommandeDebut(" ", new Contexte()),
new CommandeDebut("\t", new Contexte()),
};
/**
* Tests unitaires de {@link CommandeDebut#CommandeDebut(String, Contexte)}
*/
public void testCommandeDebutStringContexte() {
System.out.println("\tExécution du test de CommandeDebut"
+ "#CommandeDebut(String, Contexte)");
/* Tests Commande invalide */
String[] arguments = { "$chaine", " a ", "fin" };
Contexte contexte = new Contexte();
for (int numTest = 0 ; numTest < arguments.length ; numTest++) {
try {
new CommandeDebut(arguments[numTest], contexte);
echec();
} catch (InterpreteurException lancee) {
}
}
try {
new CommandeDebut("", new Contexte());
new CommandeDebut(" ", new Contexte());
new CommandeDebut("\t", new Contexte());
} catch (InterpreteurException e) {
echec();
}
}
/**
* Tests unitaires de {@link CommandeDebut#executer()}
*/
public void testExecuter() {
System.out.println("\tExécution du test de CommandeDebut#executer()");
for (CommandeDebut cmd : fixture) {
assertFalse(cmd.executer());
}
}
}
@@ -1,69 +0,0 @@
/**
* TestCommandeDefs.java 7 mai 2021
* IUT Rodez info1 2020-2021, pas de copyright, aucun droit
*/
package interpreteurlir.motscles.tests;
import static info1.outils.glg.Assertions.*;
import interpreteurlir.Contexte;
import interpreteurlir.InterpreteurException;
import interpreteurlir.motscles.CommandeDefs;
/**
* Tests unitaires de {@link interpreteurlir.motscles.CommandeDefs}
* @author Nicolas Caminade
* @author Sylvan Courtiol
* @author Pierre Debas
* @author Heïa Dexter
* @author Lucas Vabre
*/
public class TestCommandeDefs {
/** Jeux d'essais de CommandeDefs valides pour les tests */
private CommandeDefs[] fixture = {
new CommandeDefs("", new Contexte()),
new CommandeDefs(" ", new Contexte()),
new CommandeDefs("\t", new Contexte()),
};
/**
* Tests unitaires de {@link CommandeDefs#CommandeDefs(String, Contexte)}
*/
public void testCommandeDefsStringContexte() {
System.out.println("\tExécution du test de CommandeDefs"
+ "#CommandeDefs(String, Contexte)");
/* Tests Commande invalide */
String[] arguments = { "$chaine", " a ", "fin" };
Contexte contexte = new Contexte();
for (int numTest = 0 ; numTest < arguments.length ; numTest++) {
try {
new CommandeDefs(arguments[numTest], contexte);
echec();
} catch (InterpreteurException lancee) {
}
}
try {
new CommandeDefs("", new Contexte());
new CommandeDefs(" ", new Contexte());
new CommandeDefs("\t", new Contexte());
} catch (InterpreteurException e) {
echec();
}
}
/**
* Tests unitaires de {@link CommandeDefs#executer()}
*/
public void testExecuter() {
System.out.println("\tExécution du test de CommandeDefs#executer()");
for (CommandeDefs cmd : fixture) {
System.out.println("Affichage du contexte :");
assertTrue(cmd.executer());
}
}
}
@@ -1,67 +0,0 @@
/**
* TestCommandeFin.java 7 mai 2021
* IUT Rodez info1 2020-2021, pas de copyright, aucun droit
*/
package interpreteurlir.motscles.tests;
import static info1.outils.glg.Assertions.*;
import interpreteurlir.Contexte;
import interpreteurlir.InterpreteurException;
import interpreteurlir.motscles.CommandeFin;
/**
* Tests unitaires de {@link interpreteurlir.motscles.CommandeFin}
* @author Nicolas Caminade
* @author Sylvan Courtiol
* @author Pierre Debas
* @author Heïa Dexter
* @author Lucas Vabre
*/
public class TestCommandeFin {
/** Jeux d'essais de Commande valides pour les tests */
private CommandeFin[] fixture = {
new CommandeFin("", new Contexte()),
};
/**
* Tests unitaires de {@link CommandeFin#CommandeFin(String, Contexte)}
*/
public void testCommandeFinStringContexte() {
System.out.println("\tExécution du test de CommandeFin"
+ "#CommandeFin(String, Contexte)");
/* Tests Commande invalide */
String[] arguments = { "$chaine", " a ", "fin" };
Contexte contexte = new Contexte();
for (int numTest = 0 ; numTest < arguments.length ; numTest++) {
try {
new CommandeFin(arguments[numTest], contexte);
echec();
} catch (InterpreteurException lancee) {
}
}
try {
new CommandeFin("", new Contexte());
new CommandeFin(" ", new Contexte());
new CommandeFin("\t", new Contexte());
} catch (InterpreteurException e) {
echec();
}
}
/**
* Tests unitaires de {@link CommandeFin#executer()}
*/
public void testExecuter() {
System.out.println("\tExécution du test de CommandeFin#executer()");
System.out.println("\tLe programme doit s'éteindre en affichant un "
+ "message d'aurevoir :");
System.out.println("Test exécuter désactiver");
// fixture[0].executer();
echec();
}
}
@@ -1,40 +0,0 @@
/**
* EssaiInterpreteurException.java 7 mai 2021
* IUT Rodez info1 2020-2021, pas de copyright, aucun droit
*/
package interpreteurlir.tests;
import interpreteurlir.InterpreteurException;
/**
* Essai des {@link InterpreteurException}
* @author Nicolas Caminade
* @author Sylvan Courtiol
* @author Pierre Debas
* @author Heïa Dexter
* @author Lucas Vabre
*/
public class EssaiInterpreteurException {
/**
* Lancement des essais.
* @param args non utilisé
*/
public static void main(String[] args) {
String[] messages = {
null,
"",
"la commande fin n'accepte pas d'arguments"
};
for (String msg : messages) {
System.out.print("Message de l'exception : ");
try {
throw new InterpreteurException(msg);
} catch (InterpreteurException lancee) {
System.out.println(lancee.getMessage());
}
}
}
}