Exemple robustesse
robustesse.cpp — 2.2 KB
Contenu du fichier
// #define NDEBUG #include <cassert> // pour utiliser assert #include <cstdlib> // pour utiliser EXIT_SUCCESS #include <iostream> #define ERROR_N_NEGATIVE -1 #define ERROR_N_TOO_BIG -2 #define ERROR_UNKNOWN -99 using namespace std; int main() { int factorielle (int n) ; const int VALEUR_N = 13; cout << "factorielle " << VALEUR_N << " = " << factorielle(VALEUR_N) << endl; return EXIT_SUCCESS; } int factorielle (int n) { int validation(int); int calcul(int); int resultat = validation(n); switch ( resultat ) { case ERROR_N_NEGATIVE : cout << "erreur : parametre negatif." << endl; break; case ERROR_N_TOO_BIG : cout << "erreur : parametre trop grand." << endl; break; case EXIT_SUCCESS : resultat = calcul(n); // nombre positif strictement break; default : cout << "erreur inconnue" << endl; resultat = ERROR_UNKNOWN; } return resultat; } int validation(int n) { if (n < 0) return ERROR_N_NEGATIVE; if (n > 12) return ERROR_N_TOO_BIG; return EXIT_SUCCESS; } int calcul(int n) { assert(n >= 0); assert(n <= 12); int resultat = 1 ; for (int i = 1; i <= n; i+=1) { resultat *= i ; } return resultat; } /** \brief lance la serie des tests unitaires et d'integrations */ int main_tests() { int tests_factorielle (int min, int max); int tests_validation (int min, int max); int tests_calcul (int min, int max); const int MIN = -1; const int MAX = 13; tests_factorielle (MIN,MAX); tests_validation (MIN,MAX); tests_calcul (MIN,MAX); return EXIT_SUCCESS; } int tests_factorielle (int min, int max) { int factorielle (int); for (int i = min; i <= max; i+=1) { cout << factorielle(i) << endl; } return EXIT_SUCCESS; } int tests_validation (int min, int max) { int validation (int); for (int i = min; i <= max; i+=1) { cout << validation(i) << endl; } return EXIT_SUCCESS; } int tests_calcul (int min, int max) { int calcul (int); for (int i = min; i <= max; i+=1) { cout << calcul(i) << endl; } return EXIT_SUCCESS; }