mirror of
https://github.com/LucasVbr/interpreteur-lir.git
synced 2026-07-09 15:08:05 +00:00
Codes sources prototype 1
This commit is contained in:
@@ -6,6 +6,8 @@
|
||||
|
||||
package interpreteurlir.donnees;
|
||||
|
||||
import interpreteurlir.InterpreteurException;
|
||||
|
||||
/**
|
||||
* @author Nicolas Caminade
|
||||
* @author Sylvan Courtiol
|
||||
@@ -29,7 +31,7 @@ implements Comparable<Identificateur> {
|
||||
public Identificateur(String identificateur) {
|
||||
super();
|
||||
if(!isIdentificateur(identificateur)) {
|
||||
throw new IllegalArgumentException(identificateur
|
||||
throw new InterpreteurException(identificateur
|
||||
+ " n'est pas un identificateur");
|
||||
}
|
||||
|
||||
|
||||
@@ -6,6 +6,8 @@
|
||||
|
||||
package interpreteurlir.donnees;
|
||||
|
||||
import interpreteurlir.InterpreteurException;
|
||||
|
||||
/**
|
||||
* Identificateur de chaîne
|
||||
* @author Nicolas Caminade
|
||||
@@ -19,13 +21,14 @@ public class IdentificateurChaine extends Identificateur {
|
||||
/**
|
||||
* Instantiation d'identificateur de chaîne
|
||||
* @param identificateur a instancier
|
||||
* @throws IllegalAccessException si l'identificateur est invalide
|
||||
* @throws InterpreteurException si l'identificateur est invalide
|
||||
*/
|
||||
public IdentificateurChaine(String identificateur) {
|
||||
super(identificateur);
|
||||
super(identificateur.trim());
|
||||
|
||||
identificateur = identificateur.trim();
|
||||
if(!isIdentificateurChaine(identificateur)) {
|
||||
throw new IllegalArgumentException(identificateur
|
||||
throw new InterpreteurException(identificateur
|
||||
+ " n'est pas un identificateur"
|
||||
+ " de chaine");
|
||||
}
|
||||
|
||||
@@ -6,6 +6,8 @@
|
||||
|
||||
package interpreteurlir.donnees;
|
||||
|
||||
import interpreteurlir.InterpreteurException;
|
||||
|
||||
/**
|
||||
* Identificateur d'entier
|
||||
* @author Nicolas Caminade
|
||||
@@ -19,15 +21,15 @@ public class IdentificateurEntier extends Identificateur {
|
||||
/**
|
||||
* Instantiation d'identificateur d'entier
|
||||
* @param identificateur a instancier
|
||||
* @throws IllegalAccessException si l'identificateur est invalide
|
||||
* @throws InterpreteurException si l'identificateur est invalide
|
||||
*/
|
||||
public IdentificateurEntier(String identificateur) {
|
||||
super(identificateur);
|
||||
|
||||
if(!isIdentificateurEntier(identificateur)) {
|
||||
throw new IllegalArgumentException(identificateur
|
||||
+ " n'est pas un identificateur"
|
||||
+ " d'entier");
|
||||
throw new InterpreteurException(identificateur
|
||||
+ " n'est pas un identificateur"
|
||||
+ " d'entier");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,80 +1,93 @@
|
||||
/**
|
||||
* Variable.java 8 mai 2021
|
||||
* IUT Rodez info1 2020-2021, pas de copyright, aucun droit
|
||||
* Variable.java 8 mai 2021
|
||||
* IUT-Rodez info1 2020-2021, pas de droits, pas de copyrights
|
||||
*/
|
||||
package interpreteurlir.donnees;
|
||||
|
||||
import interpreteurlir.donnees.litteraux.Chaine;
|
||||
import interpreteurlir.donnees.litteraux.Litteral;
|
||||
import interpreteurlir.InterpreteurException;
|
||||
|
||||
/** TODO commenter la responsabilité de cette classe
|
||||
* BOUCHON
|
||||
/**
|
||||
* Associe un littéral à un identificateur
|
||||
*
|
||||
* @author Nicolas Caminade
|
||||
* @author Sylvan Courtiol
|
||||
* @author Pierre Debas
|
||||
* @author Heïa Dexter
|
||||
* @author Heia Dexter
|
||||
* @author Lucas Vabre
|
||||
*
|
||||
*/
|
||||
public class Variable implements Comparable<Variable> {
|
||||
public class Variable extends Object implements Comparable<Variable> {
|
||||
|
||||
/** BOUCHON identificateurs car Identificateurs non finis */
|
||||
/** Identificateur de cette variable */
|
||||
private Identificateur identificateur;
|
||||
|
||||
/** BOUCHON valeur*/
|
||||
/** Valeur de cette variable */
|
||||
private Litteral valeur;
|
||||
|
||||
/** TODO commenter l'état initial
|
||||
* @param id
|
||||
* @param valeur
|
||||
|
||||
/**
|
||||
* Initialise une variable
|
||||
* @param identificateur associé à cette variable
|
||||
* @param valeur associé à cette variable
|
||||
* @throws InterpreteurException en cas d'incompatibilité entre
|
||||
* l'identificateur et le type de la valeur à lui associer
|
||||
*/
|
||||
public Variable(Identificateur id, Litteral valeur) {
|
||||
super();
|
||||
this.identificateur = id;
|
||||
public Variable(Identificateur identificateur, Litteral valeur) {
|
||||
if (!isVariable(identificateur, valeur)) {
|
||||
throw new InterpreteurException("Identificateur '"
|
||||
+ identificateur.toString()
|
||||
+ "' et type de "
|
||||
+ valeur.toString()
|
||||
+ "incompatible.");
|
||||
}
|
||||
this.identificateur = identificateur;
|
||||
this.valeur = valeur;
|
||||
}
|
||||
|
||||
|
||||
|
||||
private static boolean isVariable(Identificateur id, Litteral valeur) {
|
||||
return id instanceof IdentificateurChaine && valeur instanceof Chaine
|
||||
/* || id instanceof IdentificateurEntier && valeur instanceof Entier */;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @return valeur de valeur
|
||||
* @return la valeur de cette variable
|
||||
*/
|
||||
public Litteral getValeur() {
|
||||
return valeur;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param valeur nouvelle valeur de valeur
|
||||
/**
|
||||
* Modifie la valeur de cette variable
|
||||
* @param nouvelleValeur
|
||||
*/
|
||||
public void setValeur(Litteral valeur) {
|
||||
this.valeur = valeur;
|
||||
}
|
||||
|
||||
/* non javadoc
|
||||
* @see java.lang.Comparable#compareTo(java.lang.Object)
|
||||
*/
|
||||
@Override
|
||||
public int compareTo(Variable o) {
|
||||
// bouchon
|
||||
return identificateur.compareTo(o.identificateur);
|
||||
public void setValeur(Litteral nouvelleValeur) {
|
||||
if (isVariable(identificateur, nouvelleValeur)) {
|
||||
this.valeur = nouvelleValeur;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return valeur de id
|
||||
/**
|
||||
* @return l'identificateur de cette variable
|
||||
*/
|
||||
public Identificateur getIdentificateur() {
|
||||
return identificateur;
|
||||
}
|
||||
|
||||
/* non javadoc
|
||||
* @see java.lang.Object#toString()
|
||||
*/
|
||||
/* non javadoc @see java.lang.Object#toString() */
|
||||
@Override
|
||||
public String toString() {
|
||||
return identificateur + " = " + valeur;
|
||||
return identificateur.toString() + " = " + valeur.toString();
|
||||
}
|
||||
|
||||
public int compareTo(Variable aComparer) {
|
||||
return identificateur.compareTo(aComparer.identificateur);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -38,7 +38,7 @@ public class Chaine extends Litteral {
|
||||
* @param uneValeur
|
||||
*/
|
||||
public Chaine(String uneValeur) {
|
||||
|
||||
uneValeur = uneValeur.trim();
|
||||
if (!uneValeur.startsWith("\"") || !uneValeur.endsWith("\"")) {
|
||||
throw new InterpreteurException(ERREUR_INVALIDE
|
||||
+ uneValeur);
|
||||
@@ -61,7 +61,7 @@ public class Chaine extends Litteral {
|
||||
*/
|
||||
public static Chaine concatener(Chaine a, Chaine b) {
|
||||
|
||||
return null;
|
||||
return new Chaine("\"" + a.valeur + b.valeur + "\"");
|
||||
}
|
||||
|
||||
/* non javadoc
|
||||
|
||||
@@ -7,6 +7,8 @@ package interpreteurlir.donnees.litteraux.tests;
|
||||
import interpreteurlir.InterpreteurException;
|
||||
import interpreteurlir.donnees.litteraux.Chaine;
|
||||
|
||||
import static info1.outils.glg.Assertions.*;
|
||||
|
||||
/**
|
||||
* Tests unitaires de Chaine
|
||||
* @author Nicolas Caminade
|
||||
@@ -111,6 +113,32 @@ public class TestChaine {
|
||||
System.out.println("==>test terminé\n");
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests unitaires de concaténer
|
||||
*/
|
||||
public void testConcatener() {
|
||||
final Chaine[] ATTENDU = {
|
||||
new Chaine(),
|
||||
new Chaine("\"Bonjour le monde ! \""),
|
||||
new Chaine("\" \""),
|
||||
new Chaine("\"3,1415\""),
|
||||
};
|
||||
|
||||
final Chaine[][] A_CONCATENER = {
|
||||
{new Chaine(), new Chaine("\"\"")},
|
||||
{new Chaine("\"Bonjour \""), new Chaine("\"le monde ! \"")},
|
||||
{new Chaine("\"\""), new Chaine("\" \"")},
|
||||
{new Chaine("\"3,\""), new Chaine("\"1415\"")},
|
||||
};
|
||||
|
||||
System.out.println("\tExécution du test de concaténer");
|
||||
for (int numTest = 0 ; numTest < ATTENDU.length ; numTest++ ) {
|
||||
assertTrue(ATTENDU[numTest].compareTo(Chaine.concatener(
|
||||
A_CONCATENER[numTest][0], A_CONCATENER[numTest][1]))
|
||||
== 0);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Lancement des tests
|
||||
* @param args non utilisés
|
||||
|
||||
@@ -0,0 +1,210 @@
|
||||
/**
|
||||
* TestVariable.java 8 mai 2021
|
||||
* IUT-Rodez info1 2020-2021, pas de droits, pas de copyrights
|
||||
*/
|
||||
package interpreteurlir.donnees.tests;
|
||||
|
||||
import interpreteurlir.donnees.Variable;
|
||||
import interpreteurlir.donnees.IdentificateurChaine;
|
||||
import interpreteurlir.donnees.IdentificateurEntier;
|
||||
import interpreteurlir.donnees.litteraux.*;
|
||||
import interpreteurlir.InterpreteurException;
|
||||
|
||||
import static info1.outils.glg.Assertions.*;
|
||||
|
||||
/**
|
||||
* Tests unitaires de la classe Variable
|
||||
*
|
||||
* @author Nicolas Caminade
|
||||
* @author Sylvan Courtiol
|
||||
* @author Pierre Debas
|
||||
* @author Heia Dexter
|
||||
* @author Lucàs Vabre
|
||||
*/
|
||||
public class TestVariable {
|
||||
|
||||
/** Jeu d'identificateurs de chaîne valides */
|
||||
private static final IdentificateurChaine[] ID_CHAINE = {
|
||||
new IdentificateurChaine("$a"),
|
||||
new IdentificateurChaine("$B"),
|
||||
new IdentificateurChaine("$alpha"),
|
||||
new IdentificateurChaine("$Alpha"),
|
||||
new IdentificateurChaine("$Alpha5"),
|
||||
new IdentificateurChaine("$jeSuisUnTresLongIdentifi"),
|
||||
new IdentificateurChaine("$R2D2"),
|
||||
new IdentificateurChaine("$MichelSardou"),
|
||||
new IdentificateurChaine("$PhilippePoutou2022")
|
||||
};
|
||||
|
||||
/** Jeu d'identificateurs d'entier valides */
|
||||
private static final IdentificateurEntier[] ID_ENTIER = {
|
||||
new IdentificateurEntier("a"),
|
||||
new IdentificateurEntier("A"),
|
||||
new IdentificateurEntier("alpha"),
|
||||
new IdentificateurEntier("Alpha"),
|
||||
new IdentificateurEntier("Alpha5"),
|
||||
new IdentificateurEntier("jeSuisUnTresLongIdentifi"),
|
||||
new IdentificateurEntier("R2D2"),
|
||||
new IdentificateurEntier("MichelSardou"),
|
||||
new IdentificateurEntier("PhilippePoutou2022")
|
||||
};
|
||||
|
||||
/** Jeu de chaînes valides */
|
||||
private static final Chaine[] VALEURS_CHAINE = {
|
||||
new Chaine(),
|
||||
new Chaine("\"arztyehjklmpoijhghnbghjklmpoiuytrf"
|
||||
+ "ghjnklmpoiuytrezaqsdfghnjklmpjbfrtyu\""),
|
||||
new Chaine("\"\""),
|
||||
new Chaine("\"coucou \""),
|
||||
new Chaine("\"" + Integer.toString(42) + "\""),
|
||||
new Chaine("\"Bidon\""),
|
||||
new Chaine("\"toto\""),
|
||||
new Chaine("\"tata\t\""),
|
||||
new Chaine("\"titi\n\"")
|
||||
};
|
||||
|
||||
// /** Jeu d'entiers valides */
|
||||
// private static final Entier[] VALEUR_ENTIER = {
|
||||
// // TODO: jeu d'entiers valide
|
||||
// };
|
||||
|
||||
/** Jeu de variables chaîne valides*/
|
||||
private static Variable[] fixtureChaine = new Variable[ID_CHAINE.length];
|
||||
|
||||
/* Jeu de variables entières valides*/
|
||||
//private static Variable[] fixtureEntier= new Variable[ID_ENTIER.length];
|
||||
|
||||
private static void fixtureReload() {
|
||||
for (int i = 0; i < ID_CHAINE.length; i++) {
|
||||
fixtureChaine[i] = new Variable(ID_CHAINE[i], VALEURS_CHAINE[i]);
|
||||
}
|
||||
|
||||
//TODO reload fixtureEntier
|
||||
}
|
||||
|
||||
/**
|
||||
* Test unitaire du constructeur Variable(Identificateur, Littéral)
|
||||
*/
|
||||
public static void testVariableIdentificateurChaineLitteral() {
|
||||
|
||||
for (int noJeu = 0; noJeu < VALEURS_CHAINE.length; noJeu++) {
|
||||
try {
|
||||
//new Variable(ID_CHAINE[noJeu], VALEURS_CHAINE[noJeu]); // bouchon
|
||||
new Variable(ID_ENTIER[noJeu], VALEURS_CHAINE[noJeu]);
|
||||
// TODO tester avec la classe Entier
|
||||
// new Variable(ID_CHAINE[noJeu], VALEURS_ENTIER[noJeu]);
|
||||
echec();
|
||||
} catch (InterpreteurException lancee) {
|
||||
// test OK
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Test unitaire de getIdentificateur() d'une variable chaîne
|
||||
*/
|
||||
public static void testGetIdentificateurChaine() {
|
||||
fixtureReload();
|
||||
|
||||
for (int i = 0; i < VALEURS_CHAINE.length; i++ ) {
|
||||
assertTrue(ID_CHAINE[i].compareTo(fixtureChaine[i]
|
||||
.getIdentificateur()) == 0);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Test unitaire de getIdentificateur() d'une variable entière
|
||||
*/
|
||||
public static void testGetIdentificateurEntier() {
|
||||
// fixtureReload();
|
||||
//
|
||||
// for (int i = 0; i < VALEURS_Entier.length; i++ ) {
|
||||
// assertTrue(ID_ENTIER[i].compareTo(fixtureEntier[i]
|
||||
// .getIdentificateur()) == 0);
|
||||
// }
|
||||
|
||||
echec();
|
||||
}
|
||||
|
||||
/**
|
||||
* Test unitaire de getValeur() d'une variable chaîne
|
||||
*/
|
||||
public static void testGetValeurChaine() {
|
||||
fixtureReload();
|
||||
|
||||
for (int i = 0; i < VALEURS_CHAINE.length; i++ ) {
|
||||
assertTrue(VALEURS_CHAINE[i]
|
||||
.compareTo(fixtureChaine[i].getValeur()) == 0);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Test unitaire de setValeur() d'une chaîne
|
||||
*/
|
||||
public static void testSetValeurChaine() {
|
||||
|
||||
fixtureReload();
|
||||
|
||||
final Chaine[] NOUVELLE_CHAINE = {
|
||||
new Chaine("\"titi\""),
|
||||
new Chaine("\"Mathématiques\""),
|
||||
new Chaine("\"!?9563Message\""),
|
||||
new Chaine("\"test TESTS\""),
|
||||
new Chaine("\"-5 + 962\"")
|
||||
};
|
||||
|
||||
for (int i = 0; i < NOUVELLE_CHAINE.length; i++) {
|
||||
fixtureChaine[i].setValeur(NOUVELLE_CHAINE[i]);
|
||||
assertTrue(NOUVELLE_CHAINE[i]
|
||||
.compareTo(fixtureChaine[i].getValeur()) == 0);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Test unitaire de toString()
|
||||
*/
|
||||
public static void testToString() {
|
||||
fixtureReload();
|
||||
|
||||
final String[] ATTENDUS = {
|
||||
"$a = \"\"",
|
||||
"$B = \"arztyehjklmpoijhghnbghjklmpoiuytrf"
|
||||
+ "ghjnklmpoiuytrezaqsdfghnjklmpjbfrtyu\"",
|
||||
"$alpha = \"\"",
|
||||
"$Alpha = \"coucou \"",
|
||||
"$Alpha5 = \"42\"",
|
||||
"$jeSuisUnTresLongIdentifi = \"Bidon\"",
|
||||
"$R2D2 = \"toto\"",
|
||||
"$MichelSardou = \"tata\t\"",
|
||||
"$PhilippePoutou2022 = \"titi\n\""
|
||||
};
|
||||
|
||||
for (int noJeu = 0; noJeu < fixtureChaine.length; noJeu++ ) {
|
||||
assertEquivalence(fixtureChaine[noJeu].toString(),
|
||||
ATTENDUS[noJeu]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Test unitaire de compareTo()
|
||||
*/
|
||||
public static void testCompareTo() {
|
||||
fixtureReload();
|
||||
|
||||
final Variable REF_MIN
|
||||
= new Variable(new IdentificateurChaine("$A"),
|
||||
new Chaine("\"Min\""));
|
||||
|
||||
final Variable REF_MAX
|
||||
= new Variable(new IdentificateurChaine("$z"),
|
||||
new Chaine("\"Max\""));
|
||||
|
||||
for(int noJeu = 0; noJeu < fixtureChaine.length; noJeu++) {
|
||||
assertTrue(fixtureChaine[noJeu].compareTo(REF_MIN) > 0);
|
||||
assertTrue(fixtureChaine[noJeu].compareTo(REF_MAX) < 0);
|
||||
assertTrue(fixtureChaine[noJeu].compareTo(fixtureChaine[noJeu]) == 0);
|
||||
}
|
||||
|
||||
// TODO Faire le même test pour les variables contenant des entiers
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user