e-Babillard - plateforme pédagogique interactive

Ressources pédagogiques communes concernant... => Langage C => Sujet démarré par: jpdelx sur 14 Octobre 2014 à 11:57:52



Titre: Tests Unitaires
Posté par: jpdelx sur 14 Octobre 2014 à 11:57:52
Bonjour

Tests Unitaires : kézako ?
~> http://fr.wikipedia.org/wiki/Test_unitaire

"Faire passer un examen à une fonction utilisateur"

Seatest : une très bonne bibliothèque portable et donc
indépendante de l'IDE utilisé
~> http://code.google.com/p/seatest/  :)

@lpf

J.Phil.


Titre: Tests Unitaires - Exemple
Posté par: jpdelx sur 18 Octobre 2014 à 12:39:01
Bonjour

main.c

Code:
/* ISEN 3 - TP 2 de C */
/* jpdelx - octobre 2014 */

#include <stdio.h>
#include <string.h>

#include "seatest.h"
#include "seatest.c"

#include "mesFonctions.h"
#include "mesFonctions.c"

/*----------[ mes Tests Unitaires ]----------*/
void test_tp2()
{
puts("** T.U. pour isdigit() **");
assert_true(isdigit('0'));
assert_false(isdigit('0'));
assert_true(isdigit('A'));
assert_false(isdigit('A'));

puts("** T.U. pour my_isdigit() **");
assert_true(my_isdigit('0'));
assert_false(my_isdigit('0'));
assert_true(my_isdigit('A'));
assert_false(my_isdigit('A'));

puts("** T.U. pour toupper() **");
assert_true(toupper('a')=='A');
assert_false(toupper('a')=='A');
assert_true(toupper('z')!='Z');
assert_false(toupper('z')!='Z');

puts("** T.U. pour my_toupper() **");
assert_true(my_toupper('a')=='A');
assert_false(my_toupper('a')=='A');
assert_true(my_toupper('z')!='Z');
assert_false(my_toupper('z')!='Z');

puts("** T.U. pour strcpy() **");
char chaine[255];
strcpy(chaine,"jpdelx");
assert_string_equal(chaine,"jpdelx");
assert_true(!strcmp(chaine,"jpdelx")); /* /!\ strcmp retourne FAUX si les 2 chaînes sont identiques */
assert_true(strcmp(chaine,"jpdelx"));

puts("** T.U. pour my_strcpy() **");
my_strcpy(chaine,"jpdelx");
assert_string_equal(chaine,"jpdelx");
assert_true(!strcmp(chaine,"jpdelx")); /* /!\ strcmp retourne FAUX si les 2 chaînes sont identiques */
assert_true(strcmp(chaine,"jpdelx"));

puts("** T.U. pour strlen() **");
assert_int_equal(strlen("jpdelx"),6);
assert_int_equal(strlen("J.Phil. DELCROIX"),123);

puts("** T.U. pour my_strlen() **");
assert_int_equal(my_strlen("jpdelx"),6);
assert_int_equal(my_strlen("J.Phil. DELCROIX"),123);
}

/* procédure d'installation des T.U. */
void test_fixture_tp2( void )
{
test_fixture_start();
run_test(test_tp2);
test_fixture_end();
}

/* suite de l'installation des T.U. */
void all_tests( void )
{
test_fixture_tp2();
}

/* procédure principale avec exécution des T.U. */
int main(){

/* Exemple d'utilisation de isdigit() */
    char symbole;
    char* chaine;

    symbole='0';
    puts("** isdigit() **");
    if( isdigit(symbole)) printf("%c est un digit\n",symbole); else printf("%c n'est pas un digit\n",symbole);
    symbole='A';
    if( isdigit(symbole)) printf("%c est un digit\n",symbole); else printf("%c n'est pas un digit\n",symbole);

/* Exemple d'utilisation de my_isdigit() */
    puts("** my_isdigit() **");
    symbole='0';
    if( my_isdigit(symbole)) printf("%c est un digit\n",symbole); else printf("%c n'est pas un digit\n",symbole);
    symbole='A';
    if( my_isdigit(symbole)) printf("%c est un digit\n",symbole); else printf("%c n'est pas un digit\n",symbole);

/* Exemple d'utilisation de toupper() */
    puts("** toupper() **");
    symbole='a';
    printf("minuscule : %c => majuscule %c\n",symbole,toupper(symbole));
    symbole='z';
    printf("minuscule : %c => majuscule %c\n",symbole,toupper(symbole));

/* Exemple d'utilisation de my_toupper() */
    puts("** my_toupper() **");
    symbole='a';
    printf("minuscule : %c => majuscule %c\n",symbole,my_toupper(symbole));
    symbole='z';
    printf("minuscule : %c => majuscule %c\n",symbole,my_toupper(symbole));

/* Exemple d'utilisation de strcpy et de strlen() */
    puts("** strlen() **");
    strcpy(chaine,"jpdelx");
    printf("La chaîne [%s] contient %d caractères\n",chaine,strlen(chaine));
    strcpy(chaine,"J.Phil. DELCROIX");
    printf("La chaîne [%s] contient %d caractères\n",chaine,strlen(chaine));

/* Exemple d'utilisation de my_strcpy() et de my_strlen() */
    puts("** my_strlen() **");
    my_strcpy(chaine,"jpdelx");
    printf("La chaîne [%s] contient %d caractères\n",chaine,my_strlen(chaine));
    my_strcpy(chaine,"J.Phil. DELCROIX");
    printf("La chaîne [%s] contient %d caractères\n",chaine,my_strlen(chaine));

run_tests(all_tests);
return 0;
}

mesFonctions.h

Code:
/*------------[ mes prototypes ]------------*/
int my_isdigit(char);

char my_toupper(char);

int my_strlen(char *);

void my_strcpy(char *, char *);

MesFonctions.c

Code:
/*------------[ mes fonctions ]------------*/
int my_isdigit(char c){
return c>='0' && c<='9';
}

char my_toupper(char c){
return c-('a'-'A');
}

int my_strlen(char *s){
int i=0;
while(*s!='\0') {i++;s++;}
return i;
}

void my_strcpy(char *s, char *t) {
  while ((*s = *t) != '\0') { s++; t++; }
}

@lpf

J.Phil.


e-Babillard - plateforme pédagogique interactive | Propulsé par SMF 1.0.6 modifié par jpdelx.
© 2001-2005, Lewis Media. Tous droits réservés.