Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Tests] Ajout de tests dans evaluation.c + débug fonctions etats_accessibles et delta_star #28

Merged
merged 6 commits into from
May 14, 2014
11 changes: 4 additions & 7 deletions src/automate.c
Original file line number Diff line number Diff line change
Expand Up @@ -298,16 +298,14 @@ Ensemble * delta(
Ensemble * delta_star(
const Automate* automate, const Ensemble * etats_courants, const char* mot
){
Ensemble * res = creer_ensemble(NULL, NULL, NULL);
Ensemble * fins = copier_ensemble(etats_courants);
int i;
for(i = 0; i < strlen(mot); i++)
{
// deplacer_ensemble(fins, delta(automate, fins, mot[i]));
fins = delta(automate, fins, mot[i]);
ajouter_elements(res, fins);
}

return res;
return fins;
}

void pour_toute_transition(
Expand Down Expand Up @@ -483,7 +481,6 @@ Automate * mot_to_automate(const char * mot){
* La fonction calcule l'ensemble des états accessibles à partir d'un état donné </br>
* \par
* On itère sur les voisins tant qu'il y en a à traiter (permet de traiter les boucles)<br/>
* On considère que les états sont accessibles depuis eux mêmes en lisant epsilon.
* @param automate
* @param etat
* @return
Expand All @@ -492,8 +489,7 @@ Automate * mot_to_automate(const char * mot){
Ensemble* etats_accessibles( const Automate * automate, int etat ){
Ensemble * res = creer_ensemble(NULL, NULL, NULL);
Ensemble * etape = creer_ensemble(NULL, NULL, NULL);
ajouter_element(etape, etat);
ajouter_element(res, etat);
ajouter_element(etape, etat);
Ensemble_iterateur it_lettre;
Ensemble_iterateur it_etat;

Expand Down Expand Up @@ -546,6 +542,7 @@ Automate *automate_accessible( const Automate * automate){
! iterateur_ensemble_est_vide( it_etat );
it_etat = iterateur_suivant_ensemble( it_etat )){
ajouter_elements(etats, etats_accessibles(automate, get_element(it_etat)));
ajouter_element(etats, get_element(it_etat));
}

// On détermine les états qui ne sont pas accessibles => ceux qui sont dans get_etats mais pas dans etats
Expand Down
71 changes: 69 additions & 2 deletions src/evaluation.c
Original file line number Diff line number Diff line change
Expand Up @@ -217,15 +217,79 @@ int test_creer_automate(){
return result;
}


int test_delta_delta_star(){
int test_etats_accessibles()
{
BEGIN_TEST;

int result = 1;
Automate* automate = creer_automate();
ajouter_etat_initial(automate, 1);
ajouter_transition(automate, 1, 'b', 2);
ajouter_transition(automate, 1, 'a', 3);
ajouter_transition(automate, 2, 'a', 1);
ajouter_transition(automate, 2, 'c', 3);
ajouter_transition(automate, 4, 'a', 3);
ajouter_transition(automate, 4, 'b', 5);
ajouter_etat_final(automate, 3);

Ensemble* ens = etats_accessibles(automate, 1);

TEST(
1
&& ens
&& est_dans_l_ensemble( ens, 1)
&& est_dans_l_ensemble( ens, 2)
&& ! est_dans_l_ensemble( ens, 4)
&& ! est_dans_l_ensemble( ens, 5)
&& est_dans_l_ensemble( ens, 3)
, result
);

liberer_ensemble(ens);
liberer_automate(automate);
return result;
}

int test_automate_co_accessible()
{
BEGIN_TEST;

int result = 1;
Automate* automate = creer_automate();
ajouter_etat_initial(automate, 1);
ajouter_transition(automate, 1, 'b', 2);
ajouter_transition(automate, 1, 'a', 3);
ajouter_transition(automate, 2, 'a', 1);
ajouter_transition(automate, 2, 'c', 3);
ajouter_transition(automate, 4, 'a', 3);
ajouter_transition(automate, 4, 'b', 5);
ajouter_etat_final(automate, 3);
Automate* automate_co = automate_co_accessible(automate);
const Ensemble* etats = get_etats(automate_co);

TEST(
1
&& etats
&& est_dans_l_ensemble( etats, 1)
&& est_dans_l_ensemble( etats, 2)
&& est_dans_l_ensemble( etats, 3)
&& est_dans_l_ensemble( etats, 4)
&& !est_dans_l_ensemble( etats, 5)
, result
);

liberer_automate(automate);
liberer_automate(automate_co);
return result;
}

int test_delta_delta_star(){
BEGIN_TEST;

int result = 1;

Automate* automate = creer_automate();

ajouter_etat( automate, 3 );
ajouter_etat( automate, 5 );
ajouter_transition( automate, 3, 'a', 5 );
Expand Down Expand Up @@ -563,6 +627,9 @@ int main(){
// Mot to automate
ajouter_test( test_mot_to_automate );

ajouter_test(test_etats_accessibles);
ajouter_test(test_automate_co_accessible);

set_all_sigactions();

start_or_continue_test();
Expand Down
4 changes: 2 additions & 2 deletions src/test_automate.c
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ int main(){
print_automate(automate_co_accessible(automate2));

liberer_automate(automate2);

/*
Automate* suffixes = creer_automate_des_suffixes(automate2);
printf("\n\n\nAutomate des suffixes de Automate2\n");
print_automate(suffixes);
Expand Down Expand Up @@ -213,6 +213,6 @@ int main(){
Automate* concatenation = creer_automate_de_concatenation(concatenable1, concatenable2);

printf("Automate concaténé\n");
print_automate(concatenation);
print_automate(concatenation);*/
exit(1);
}