tests
This commit is contained in:
parent
074b5adb19
commit
fc0c8e3a71
2 changed files with 132 additions and 1 deletions
2
TODO.md
2
TODO.md
|
@ -3,7 +3,7 @@
|
||||||
TODO avant rendu :
|
TODO avant rendu :
|
||||||
|
|
||||||
- [ ] Page rédigée montrant que l'on a tenu compte des problématiques de copies et sécurité (private/public) en expliquant en français non technique comment vous les avez traitées (`x` à pas accès à `y`)
|
- [ ] Page rédigée montrant que l'on a tenu compte des problématiques de copies et sécurité (private/public) en expliquant en français non technique comment vous les avez traitées (`x` à pas accès à `y`)
|
||||||
- [ ] Écrire des tests pour montrer que ça fonctionne
|
- [x] Écrire des tests pour montrer que ça fonctionne
|
||||||
|
|
||||||
## Notes
|
## Notes
|
||||||
|
|
||||||
|
|
131
src/main.cpp
131
src/main.cpp
|
@ -3,7 +3,16 @@
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
|
// Fait des tests pour vérifier/montrer que ça fonctionne
|
||||||
|
void test();
|
||||||
|
|
||||||
|
// Transforme un vecteur<int> en string
|
||||||
|
std::string vecint_tostring(std::vector<int> list);
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
|
test();
|
||||||
|
return EXIT_SUCCESS;
|
||||||
|
|
||||||
ProtoProjet pp;
|
ProtoProjet pp;
|
||||||
|
|
||||||
pp.ajoute("a", 10); // probablement numero 2
|
pp.ajoute("a", 10); // probablement numero 2
|
||||||
|
@ -28,3 +37,125 @@ int main() {
|
||||||
|
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void test() {
|
||||||
|
/********************************** Projet **********************************/
|
||||||
|
// Projet p; // impossible car classe abstraite
|
||||||
|
|
||||||
|
/******************************* ProtoProjet *******************************/
|
||||||
|
ProtoProjet pp;
|
||||||
|
cout << "pp: " << pp << "\n";
|
||||||
|
/* pp: [
|
||||||
|
* Tâche(#0, "Fin", Attend) => 1 dépendances,
|
||||||
|
* Tâche(#1, "Début", Attend) => 0 dépendances,
|
||||||
|
* ] */
|
||||||
|
|
||||||
|
pp.ajoute("a", 10); // ajoute une dépendance à #1 le "début"
|
||||||
|
pp.ajoute("b", 15, 0, 1); // ajoute une dépendance à #0 (id1)
|
||||||
|
cout << "pp: " << pp << "\n";
|
||||||
|
/* pp: [
|
||||||
|
* Tâche(#0, "Fin", Attend) => 2 dépendances,
|
||||||
|
* Tâche(#3, "b", Attend) => 0 dépendances,
|
||||||
|
* Tâche(#1, "Début", Attend) => 1 dépendances,
|
||||||
|
* Tâche(#2, "a", Attend) => 0 dépendances,
|
||||||
|
* ]
|
||||||
|
*
|
||||||
|
* => L'ordre pour les dépendances est respecté */
|
||||||
|
|
||||||
|
/******************************** RunProjet ********************************/
|
||||||
|
// RunProjet rp; // impossible car le constructeur vide n'existe pas
|
||||||
|
RunProjet rp(pp);
|
||||||
|
cout << "pp: " << pp << "\n";
|
||||||
|
/* pp: []
|
||||||
|
*
|
||||||
|
* => La liste est bien vidée*/
|
||||||
|
|
||||||
|
cout << "rp: " << rp << "\n";
|
||||||
|
/* rp: [
|
||||||
|
* Tâche(#0, "Fin", Attend) => 2 dépendances,
|
||||||
|
* Tâche(#3, "b", Attend) => 0 dépendances,
|
||||||
|
* Tâche(#1, "Début", Attend) => 1 dépendances,
|
||||||
|
* Tâche(#2, "a", Attend) => 0 dépendances,
|
||||||
|
* ]
|
||||||
|
*
|
||||||
|
* => Les mêmes tâches ont étés transférés à RunProjet (pas de copie vérifiés
|
||||||
|
* par les ID identiques) */
|
||||||
|
|
||||||
|
/******************************** Consultant *******************************/
|
||||||
|
Consultant c;
|
||||||
|
cout << "c: " << c << "\n";
|
||||||
|
/* c: La facture s'élève à 693€, il reste 693€ à payer
|
||||||
|
*
|
||||||
|
* => Affiche la facture */
|
||||||
|
|
||||||
|
auto avis = c.avis(rp);
|
||||||
|
cout << "c(avis): (" << vecint_tostring(avis.first) << ", " << avis.second
|
||||||
|
<< ")\n";
|
||||||
|
/* Je n'ai pas été payé. La facture s'élève à 693€, il reste 693€ à payer.
|
||||||
|
* c(avis): ([], -1)
|
||||||
|
*
|
||||||
|
* => Iel ne donne pas d'avis car pas payé. */
|
||||||
|
|
||||||
|
cout << "c(payer 1000): " << c.payer(1000) << "\n";
|
||||||
|
/* c(payer 1000): 0
|
||||||
|
*
|
||||||
|
* On donne 1000 pour être sûr qu'iel soit content
|
||||||
|
* Il renvoie 0 car iel a plus besoin d'être payé */
|
||||||
|
|
||||||
|
auto avis2 = c.avis(rp);
|
||||||
|
cout << "c(avis): (" << vecint_tostring(avis2.first) << ", " << avis2.second
|
||||||
|
<< ")\n";
|
||||||
|
/* c(avis): ([0, 3, 1, 2], 25)
|
||||||
|
*
|
||||||
|
* => Iel donne la liste d'exécution
|
||||||
|
* et le temps d'exécution sans parallélisation */
|
||||||
|
|
||||||
|
/********************************** Expert *********************************/
|
||||||
|
Expert e;
|
||||||
|
cout << "e: " << e << "\n";
|
||||||
|
/* e: La facture s'élève à x€, il reste x€ à payer
|
||||||
|
*
|
||||||
|
* => Affiche la facture */
|
||||||
|
|
||||||
|
auto avis3 = e.avis(rp);
|
||||||
|
cout << "e(avis): (" << vecint_tostring(avis3.first) << ", " << avis3.second
|
||||||
|
<< ")\n";
|
||||||
|
/* Je n'ai pas été payé. La facture s'élève à y€, il reste y€ à payer.
|
||||||
|
* e(avis): ([], -1)
|
||||||
|
*
|
||||||
|
* => Iel ne donne pas d'avis car pas payé. */
|
||||||
|
|
||||||
|
cout << "e(payer 1000): " << e.payer(1000) << "\n";
|
||||||
|
/* e(payer 1000): 0
|
||||||
|
*
|
||||||
|
* On donne 1000 pour être sûr qu'iel soit content
|
||||||
|
* Il renvoie 0 car iel a plus besoin d'être payé */
|
||||||
|
|
||||||
|
auto avis4 = e.avis(rp);
|
||||||
|
cout << "e(avis): (" << vecint_tostring(avis4.first) << ", " << avis4.second
|
||||||
|
<< ")\n";
|
||||||
|
/* e(avis): ([0, 3, 1, 2], 15)
|
||||||
|
*
|
||||||
|
* => Iel donne la liste d'exécution
|
||||||
|
* et le temps d'exécution avec parallélisation */
|
||||||
|
|
||||||
|
/* A la fin, la mémoire est correctement libérée, testé via Valgrind-3.21.0 :
|
||||||
|
* HEAP SUMMARY:
|
||||||
|
* in use at exit: 0 bytes in 0 blocks
|
||||||
|
* total heap usage: 33 allocs, 33 frees, 75,550 bytes allocated
|
||||||
|
* All heap blocks were freed -- no leaks are possible
|
||||||
|
* ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) */
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string vecint_tostring(std::vector<int> list) {
|
||||||
|
std::string return_value = "[";
|
||||||
|
if (list.empty()) {
|
||||||
|
return return_value + "]";
|
||||||
|
}
|
||||||
|
for (auto it : list) {
|
||||||
|
return_value += std::to_string(it) + ", ";
|
||||||
|
}
|
||||||
|
|
||||||
|
// \b\b pour retirer la dernière virgule
|
||||||
|
return return_value + "\b\b]";
|
||||||
|
}
|
||||||
|
|
Reference in a new issue