Projet

Général

Profil

« Précédent | Suivant » 

Révision 231

Ajouté par gasacco il y a presque 4 ans

Écriture de distance_a_la_plus_proche_zone et de son test unitaire

Voir les différences:

main.c
0};
float a =10;
float b = (float) 1;
float c = (float) 1/6;
float d = (float) 1/60;
float e = (float) 1/600;
float f = (float) 1/6000;
float g = (float) 1/60000;
float h = (float) 1/600000;
const pi =3.14159265;
//D?finition des structures
typedef struct
{
float latitude;
......
}Zone;
//Variables globales
float a =10;
float b = (float) 1;
float c = (float) 1/6;
float d = (float) 1/60;
float e = (float) 1/600;
float f = (float) 1/6000;
float g = (float) 1/60000;
float h = (float) 1/600000;
Position pos_Mimizan ={44.208904, -1.297033};
Position pos_Evian = {46.401488, 6.59049};
Position pos_Angers = {47.478419, -0.563};
Position pos_Paris = {48.856614, 2.3522219};
Position pos_actuelle = {45.7833, 3.0833};
Zone zones[] = {{{44.208904, -1.297033},50}, {{47.478419, -0.563},70}, {{46.401488, 6.59049},50}, {{48.856614, 2.3522219},90}};
int nb_Zones = 4;
//Retourne un caract?re chiffr? en entier
int decode_int(char c)
{
unsigned int ValDecimale;
......
}
}
//V?rification des trames "GPGGA"
int trame_cmp(char* a,char* b){
int i =0;
while (b[i]!='\0')
......
cpt++;
}
//Convertit un nombre ?crit en caract?re en d?cimale
int decode_nombre( char *ch, int n) //A coder sans strlen
{
int i =0;
......
return(Somme);
}
//Convertit Latitude sexag?simale en d?cimale
float conversion_Lat_sexa_dec(char coord[])
{
......
}
//Convertit Longitude sexag?simale en d?cimale
float conversion_Long_sexa_dec(char coord[])
{
float Coeff_Ent[5] = {0,a,b,c,d};
......
}
//Convertit indiff?remment une longitude / latitude
float conversion(char * coord)
{
int i=0;
......
float dist = calcule_distance(p_1,p_2);
vitesse = dist*3600;
}
int distance_a_la_plus_proche_zone(Position p, Zone r[], int nb_zones, float *d)
{
if (nb_zones ==0)
{
return -1;
}
else
{
int i;
int curseur =0;
float distance_min = 10000;
float distance;
for (i=0;i<nb_zones; i++)
{
distance =calcule_distance(p, r[i].rpos);
if (distance <= distance_min)
{
distance_min = distance;
curseur = i;
}
}
*d = distance_min;
return curseur;
}
}
//Ajouter vos tests unitaires dans cette fonction.
void tests_unitaires(void){
void tests_unitaires(void){
//Tests unitaires basiques
if (5!=5){
printf ("Erreur Test unitaire basique.\n");
exit(-1);
}
}
//Tests unitaires de trame_cmp
if (trame_cmp("$GPGGA suite chaine","GPGGA")!=1){
printf ("Erreur Test unitaire trame_cmp.\n");
exit(-1);
......
printf("Erreur Test unitaire conversion_Latitude_sex_dec 1.\n");
exit(-1);
}
//Tests unitaires de conversion Latitude et Longitude
if (conversion_Lat_sexa_dec("0045.0000")-(float) 0.75>0.0001){
printf("Erreur Test unitaire conversion_Latitude_sexa_dec.\n");
exit(-1);
......
printf("Erreur Test unitaire conversion_Latitude_sexa_dec.\n");
exit(-1);
}
//Tests unitaires de conversion
if (conversion("3723.2475")-(float)37.387458>0.0001){
printf("Erreur Test unitaire conversion.\n");
exit(-1);
......
printf("Erreur test unitaire conversion.\n");
exit(-1);
}
//Test unitaires de decode_trame
Position test;
if (decode_trame("$GPGSV,3,3,10,22,39,053,50,28,15,320,*7E", &test) != 0){
printf("Erreur test unitaire decode_trame.\n");
......
printf("Erreur test unitaire decode_trame.\n");
exit(-1);
}
//Tests unitaires de distance a la plus proche zone
float dist_min;
if (distance_a_la_plus_proche_zone(pos_actuelle, zones, nb_Zones, &dist_min) != 2){
printf("Erreur test unitaire distance_a_la_plus_proche_zone");
exit(-1);
}
}
void test_decode_int(void)

Formats disponibles : Unified diff