Пример #1
0
int test_accessible(){
  int result = 1;
  
  Automate* aut1 = mot_to_automate("abcde");

  ajouter_transition( aut1, 3, 'a', 3);
  ajouter_transition( aut1, 3, 'b', 2);
  ajouter_transition( aut1, 3, 'c', 1);
  ajouter_transition( aut1, 1, 'e', 3);

  ajouter_etat( aut1, 6);
  ajouter_etat( aut1, 7);

  ajouter_transition( aut1, 6, 'a', 7);
  ajouter_transition( aut1, 7, 'e', 6);

  printf("Automate 1: \n");
  print_automate(aut1);
  printf("\n");
  
  Automate* aut2 = automate_accessible(aut1);

  printf("Resultat: \n");
  print_automate(aut2);
  printf("\n");

  liberer_automate(aut1);
  return result;
}
Пример #2
0
int test_automate_du_melange(){
	int result = 1;

	{
		Automate * aut1 = mot_to_automate("a");
		Automate * aut2 = mot_to_automate("b");
		Automate * mela = creer_automate_du_melange( aut1, aut2 );
		print_automate(mela);
		TEST(
			1
			&& mela
			&& le_mot_est_reconnu( mela, "ab" )
			&& le_mot_est_reconnu( mela, "ba" )
			&& ! le_mot_est_reconnu( mela, "" )
			&& ! le_mot_est_reconnu( mela, "a" )
			&& ! le_mot_est_reconnu( mela, "b" )
			&& ! le_mot_est_reconnu( mela, "aa" )
			&& ! le_mot_est_reconnu( mela, "bb" )
			&& ! le_mot_est_reconnu( mela, "aaa" )
			&& ! le_mot_est_reconnu( mela, "aab" )
			&& ! le_mot_est_reconnu( mela, "aba" )
			&& ! le_mot_est_reconnu( mela, "abb" )
			&& ! le_mot_est_reconnu( mela, "baa" )
			&& ! le_mot_est_reconnu( mela, "bab" )
			&& ! le_mot_est_reconnu( mela, "bba" )
			&& ! le_mot_est_reconnu( mela, "bbb" )
			, result
		);
		wrap_liberer_automate( aut1 );
		wrap_liberer_automate( aut2 );
		wrap_liberer_automate( mela );
	}


	{
		Automate * aut1 = creer_automate();

		ajouter_transition( aut1, 0, 'a', 1 );
		ajouter_transition( aut1, 1, 'b', 2 );
		ajouter_transition( aut1, 2, 'a', 2 );
		ajouter_transition( aut1, 2, 'b', 1 );
		ajouter_etat_initial( aut1, 0 );
		ajouter_etat_final( aut1, 1 );
		

		Automate * aut2 = creer_automate();

		ajouter_transition( aut2, 0, 'c', 1 );
		ajouter_transition( aut2, 1, 'd', 1 );
		ajouter_transition( aut2, 0, 'd', 0 );
		ajouter_transition( aut2, 1, 'e', 0 );
		ajouter_etat_initial( aut2, 0 );
		ajouter_etat_final( aut2, 1 );

		Automate * mela = creer_automate_du_melange( aut1, aut2 );
		print_automate(mela);
		TEST(
			1
			&& mela
			&& ! le_mot_est_reconnu( mela, "" )
			&& ! le_mot_est_reconnu( mela, "a" )
			&& ! le_mot_est_reconnu( mela, "b" )
			&& ! le_mot_est_reconnu( mela, "c" )
			&& ! le_mot_est_reconnu( mela, "d" )
			&& ! le_mot_est_reconnu( mela, "e" )

			&& le_mot_est_reconnu( mela, "ca" )
			&& le_mot_est_reconnu( mela, "ac" )
			&& ! le_mot_est_reconnu( mela, "aa" )
			&& ! le_mot_est_reconnu( mela, "cc" )

			&& le_mot_est_reconnu( mela, "cabb" )
			&& le_mot_est_reconnu( mela, "acbb" )
			&& le_mot_est_reconnu( mela, "abcb" )
			&& le_mot_est_reconnu( mela, "abbc" )

			&& le_mot_est_reconnu( mela, "cda" )
			&& le_mot_est_reconnu( mela, "cad" )
			&& le_mot_est_reconnu( mela, "acd" )

			&& le_mot_est_reconnu( mela, "cdeca" )
			&& le_mot_est_reconnu( mela, "cdeac" )
			&& le_mot_est_reconnu( mela, "cdaec" )
			&& le_mot_est_reconnu( mela, "cadec" )
			&& le_mot_est_reconnu( mela, "acdec" )

			&& le_mot_est_reconnu( mela, "cdabb" )
			&& le_mot_est_reconnu( mela, "cadbb" )
			&& le_mot_est_reconnu( mela, "cabdb" )
			&& le_mot_est_reconnu( mela, "cabbd" )
			&& le_mot_est_reconnu( mela, "acdbb" )
			&& le_mot_est_reconnu( mela, "acbdb" )
			&& le_mot_est_reconnu( mela, "acbbd" )
			&& le_mot_est_reconnu( mela, "abcdb" )
			&& le_mot_est_reconnu( mela, "abcbd" )
			&& le_mot_est_reconnu( mela, "abbcd" )

			, result
		);
		wrap_liberer_automate( aut1 );
		wrap_liberer_automate( aut2 );
		wrap_liberer_automate( mela );
	}

	return result;
}
Пример #3
0
int test_execute_fonctions(){
	BEGIN_TEST

	int res = 1;
	
	Automate * automate2;
	Automate * automate;
	Automate * result = NULL;
	Ensemble * ens = NULL;
	Ensemble * ens1 = NULL;
	
	automate  = creer_automate();
	result = NULL;
		ajouter_lettre( automate, 'a' );
	if( result ) liberer_automate( result );
	liberer_automate( automate );

	automate  = creer_automate();
	result = NULL;
		ajouter_etat_final( automate, 1 );
	if( result ) liberer_automate( result );
	liberer_automate( automate );

	automate  = creer_automate();
	result = NULL;
		ajouter_etat_initial( automate, 1 );
	if( result ) liberer_automate( result );
	liberer_automate( automate );

	automate  = creer_automate();
	get_initiaux( automate );
	liberer_automate( automate );

	automate  = creer_automate();
	get_finaux( automate );
	liberer_automate( automate );

	automate  = creer_automate();
	get_alphabet( automate );
	liberer_automate( automate );

	automate  = creer_automate();
	result = NULL;
	est_un_etat_initial_de_l_automate( automate, 1 );
	if( result ) liberer_automate( result );
	liberer_automate( automate );

	automate  = creer_automate();
	result = NULL;
	est_un_etat_final_de_l_automate( automate, 1 );
	if( result ) liberer_automate( result );
	liberer_automate( automate );

	automate  = creer_automate();
	result = NULL;
	est_une_lettre_de_l_automate( automate, 'a' );
	if( result ) liberer_automate( result );
	liberer_automate( automate );

	automate  = creer_automate();
	ens = NULL;
	ens1 = creer_ensemble( NULL, NULL, NULL );
	ens =  delta_star( automate, ens1, "aba" );
	if( ens ) liberer_ensemble( ens );
	liberer_ensemble( ens1 );
	liberer_automate( automate );

	automate  = creer_automate();
	result = NULL;
	le_mot_est_reconnu( automate, "abaa" );
	if( result ) liberer_automate( result );
	liberer_automate( automate );

	automate  = creer_automate();
	result = NULL;
		result =  mot_to_automate( "abbaa" );
	if( result ) liberer_automate( result );
	liberer_automate( automate );

	automate  = creer_automate();
	ens = NULL;
	ens = etats_accessibles( automate, 0 );
	if( ens ) liberer_ensemble( ens );
	liberer_automate( automate );

	automate  = creer_automate();
	result = NULL;
	result = automate_accessible( automate );
	if( result ) liberer_automate( result );
	liberer_automate( automate );

	automate  = creer_automate();
	result = NULL;
	result = miroir( automate );
	if( result ) liberer_automate( result );
	liberer_automate( automate );

	automate  = creer_automate();
	result = NULL;
	result = automate_co_accessible(automate );
	if( result ) liberer_automate( result );
	liberer_automate( automate );

	automate  = creer_automate();
	result = NULL;
	result = creer_automate_des_prefixes( automate );
	if( result ) liberer_automate( result );
	liberer_automate( automate );

	automate  = creer_automate();
	result = NULL;
	result = creer_automate_des_suffixes( automate );
	if( result ) liberer_automate( result );
	liberer_automate( automate );

	automate  = creer_automate();
	result = NULL;
	result = creer_automate_des_facteurs( automate );
	if( result ) liberer_automate( result );
	liberer_automate( automate );

	automate  = creer_automate();
	result = NULL;
	ens = creer_ensemble( NULL, NULL, NULL );
	result =  creer_automate_des_sur_mot(
		automate, ens
	);
	if( result ) liberer_automate( result );
	liberer_automate( automate );
	liberer_ensemble( ens );

	automate  = creer_automate();
	automate2  = creer_automate();
	result = NULL;
	result = creer_automate_de_concatenation( automate, automate2 );
	if( result ) liberer_automate( result );
	liberer_automate( automate );
	liberer_automate( automate2 );

	automate  = creer_automate();
	result = NULL;
	result = creer_automate_des_sous_mots( automate );
	if( result ) liberer_automate( result );
	liberer_automate( automate );

	return res;
}
Пример #4
0
int test_automate_union(){

	int result = 1;

	{
		Automate * aut1 = mot_to_automate("ab");
		Automate * aut2 = mot_to_automate("ba");

		Automate * mela = creer_union_des_automates( aut1, aut2 );
		
		TEST(
			1
			&& mela
			&& le_mot_est_reconnu( mela, "ab" )
			&& le_mot_est_reconnu( mela, "ba" )
			&& ! le_mot_est_reconnu( mela, "" )
			&& ! le_mot_est_reconnu( mela, "a" )
			&& ! le_mot_est_reconnu( mela, "b" )
			&& ! le_mot_est_reconnu( mela, "aa" )
			&& ! le_mot_est_reconnu( mela, "bb" )
			&& ! le_mot_est_reconnu( mela, "aaa" )
			&& ! le_mot_est_reconnu( mela, "aab" )
			&& ! le_mot_est_reconnu( mela, "aba" )
			&& ! le_mot_est_reconnu( mela, "abb" )
			&& ! le_mot_est_reconnu( mela, "baa" )
			&& ! le_mot_est_reconnu( mela, "bab" )
			&& ! le_mot_est_reconnu( mela, "bba" )
			&& ! le_mot_est_reconnu( mela, "bbb" )
			, result
		);
		wrap_liberer_automate( aut1 );
		wrap_liberer_automate( aut2 );
		wrap_liberer_automate( mela );
	}


	{
		Automate * aut1 = creer_automate();

		ajouter_transition( aut1, 0, 'a', 1 );
		ajouter_transition( aut1, 1, 'b', 2 );
		ajouter_transition( aut1, 2, 'a', 2 );
		ajouter_transition( aut1, 2, 'b', 1 );
		ajouter_etat_initial( aut1, 0 );
		ajouter_etat_final( aut1, 1 );
		

		Automate * aut2 = creer_automate();

		ajouter_transition( aut2, 0, 'c', 1 );
		ajouter_transition( aut2, 1, 'd', 1 );
		ajouter_transition( aut2, 0, 'd', 0 );
		ajouter_transition( aut2, 1, 'e', 0 );
		ajouter_etat_initial( aut2, 0 );
		ajouter_etat_final( aut2, 1 );

		Automate * mela = creer_union_des_automates( aut1, aut2 );

		TEST(
			1
			&& mela
			&&  le_mot_est_reconnu( mela, "a" )
			&&  le_mot_est_reconnu( mela, "c" )
			&& ! le_mot_est_reconnu( mela, "" )
			&& ! le_mot_est_reconnu( mela, "b" )
			&& ! le_mot_est_reconnu( mela, "d" )
			&& ! le_mot_est_reconnu( mela, "e" )

			&& le_mot_est_reconnu ( mela, "dc")
			&& le_mot_est_reconnu ( mela, "cec")
			&& le_mot_est_reconnu ( mela, "abb")
			&& !le_mot_est_reconnu( mela, "da")

			, result
		);
		wrap_liberer_automate( aut1 );
		wrap_liberer_automate( aut2 );
		wrap_liberer_automate( mela );
		}

	return result;
}