Codes sources prototype 1

This commit is contained in:
SylvanCourtiol
2021-05-09 17:42:30 +02:00
parent 14d39af284
commit a1161d0399
16 changed files with 1144 additions and 73 deletions
@@ -4,7 +4,12 @@
*/
package interpreteurlir.expressions.tests;
import static info1.outils.glg.Assertions.*;
import interpreteurlir.expressions.Expression;
import interpreteurlir.expressions.ExpressionChaine;
import interpreteurlir.expressions.ExpressionEntier;
import interpreteurlir.Contexte;
/**
* Tests unitaires de {@link Expression}
@@ -15,5 +20,116 @@ import interpreteurlir.expressions.Expression;
* @author Lucas Vabre
*/
public class TestExpression {
/** Jeu d'essai d'expression typée */
private Expression[] fixture = {
new ExpressionChaine("$chaine = \"texte\""),
new ExpressionChaine("$chaine=\"tata\""),
new ExpressionChaine(" $tata \t "),
new ExpressionChaine("\"une chaine de texte\""),
new ExpressionChaine("$chaine= \"toto\"+\"titi\""),
new ExpressionChaine("$chaine= $toto +\"titi\""),
new ExpressionChaine("$chaine= \"toto\"+ $titi"),
new ExpressionChaine("$chaine=$toto +$titi"),
new ExpressionChaine(" \"toto\"+\"titi\""),
new ExpressionChaine("$toto +\"titi\""),
new ExpressionChaine("\"toto\"+ $titi"),
new ExpressionChaine("$toto + $titi"),
// TODO expression entière
};
/**
* Tests unitaires de {@link Expression#referencerContexte(Contexte)}
*/
public void testReferencerContexte() {
Contexte reference = new Contexte();
Contexte[] contextes = {
null, reference, reference, new Contexte()
};
boolean[] resultatAttendu = { false, true, true, false };
System.out.println("\tExécution du test de "
+ "Expression#referencerContexte(Contexte)");
for (int numTest = 0 ; numTest < contextes.length ; numTest++) {
assertTrue( Expression.referencerContexte(contextes[numTest])
== resultatAttendu[numTest]);
}
}
/**
* Tests unitaires de {@link Expression#toString()}
*/
public void testToString() {
final String[] chaineAttendue = {
"$chaine = \"texte\"",
"$chaine = \"tata\"",
"$tata",
"\"une chaine de texte\"",
"$chaine = \"toto\" + \"titi\"",
"$chaine = $toto + \"titi\"",
"$chaine = \"toto\" + $titi",
"$chaine = $toto + $titi",
"\"toto\" + \"titi\"",
"$toto + \"titi\"",
"\"toto\" + $titi",
"$toto + $titi"
};
System.out.println("\tExécution du test de Expression#toString()");
for (int numTest = 0 ; numTest < chaineAttendue.length ; numTest++) {
assertEquivalence(chaineAttendue[numTest],
fixture[numTest].toString());
}
}
/**
* Tests unitaires de {@link Expression#determinerTypeExpression(String)}
*/
public void testDeterminerTypeExpression() {
final String[] TEXTE_EXPRESSION = {
/* Expression de type chaine */
"$chaine = \"texte\"",
"$chaine=\"tata\"",
" $tata \t ",
" \"une chaine de texte\"",
"$chaine= \"toto\"+\"titi\"",
" $chaine= $toto +\"titi\"",
"$chaine= \"toto\"+ $titi",
"$chaine=$toto +$titi",
" \"toto\"+\"titi\"",
"\t$toto +\"titi\"",
"\"toto\"+ $titi",
"$toto + $titi",
/* Expression de type Entier */
"78",
" entier",
"78 %89",
" entier- nombre",
"\t entier/78",
"entier = 78 ",
" nombre= nombre + 78",
" entier =78 *2"
// TODO expressionEntier
};
final int INDEX_DEBUT_ENTIER = 12;
System.out.println("\tExécution du test de "
+ "Expression#determinerTypeExpression(String)");
for (int numTest = 0; numTest < TEXTE_EXPRESSION.length ; numTest++) {
if (numTest < INDEX_DEBUT_ENTIER) {
assertTrue(Expression.determinerTypeExpression(
TEXTE_EXPRESSION[numTest]) instanceof ExpressionChaine);
} else {
assertTrue(Expression.determinerTypeExpression(
TEXTE_EXPRESSION[numTest]) instanceof ExpressionEntier);
}
}
}
}