regression ?#

regression est a opposer avec progression. Si lorsquon ajoute des fonctionnalites a notre programme, les fonctions deja developpe ne marche plus c quon regresse.

Il est imperatif de sassurer que ce ne soit pas le cas.

tests ?#

on va donc ecrire des tests pour s’assurer qu’un module marche.

ces tests se font avec des assert: cette fonction s’arrete

Attention aux abus de langage: on va voir si on regresse avec nos tests, pour s’assurer de la non regression (non ce n’est pas une litote volontaire)

assert#

petite curiosite

j’ai un peu creuse par curiosite ce qu’etait reelement la fonction assert alors PROFITONS EN:

assert est un appel systeme en C.

Sachant que le C++ est pleinement retrocompatible avec le C, cela ne nous pose pas de probleme

voici le code qui nous interesse le plus:

#define assert(EX) ((EX) ? (void)0 : __assert(#EX, __FILE__, __LINE__))

assert est une MACRO: raccourci.

Plutot que de marquer un truc comme:

if (EX){
  __assert(#EX, __FILE__,__LINE__);
} else {
  (void)0 // ce qui ne fait RIEN
}

le compilateur lors de l’etape de precompilation va le faire pour nous.

Sachez meme que le code remplace meme a ca

#define assert(EX) ((EX) ? (void)0 : __assert(#EX, __FILE__, __LINE__))

ou ((expr) ? (bloc) : (bloc)) est interprete comme un

if (){
  
} else {
  
}

on appelle ca loperateur ternaire

Simple utilisation de assert:

assert(3 == 2); // le programme va s'arreter a cette instruction, en precisant le test qui a fais arreter le programme

fonction testregression#

  • doit etre presente dans chaque module
  • consiste en plusieurs appels a assert()
  • chaque appel teste chaque fonctions avec chaque cas de figure