summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Chausse <benjamin@chausse.xyz>2023-01-16 03:25:45 -0500
committerBenjamin Chausse <benjamin@chausse.xyz>2023-01-16 03:25:45 -0500
commit5f8fa959dab1106105f9e58325f65d0b51bb1631 (patch)
treecad0cd652230d7c003e261a0ba13235166e86f34
parente37d4911c750550896c4155f452736200d977b83 (diff)
One graph left...
-rw-r--r--cas-dapplication-01.txt95
-rw-r--r--cas-dapplication-02.txt95
-rw-r--r--couche.cpp1
-rw-r--r--graphicus-02.cpp2
-rw-r--r--rapport/main.pdfbin577604 -> 577902 bytes
-rw-r--r--rapport/main.tex8
-rw-r--r--tests.cpp78
7 files changed, 272 insertions, 7 deletions
diff --git a/cas-dapplication-01.txt b/cas-dapplication-01.txt
new file mode 100644
index 0000000..35821ca
--- /dev/null
+++ b/cas-dapplication-01.txt
@@ -0,0 +1,95 @@
+TESTS APPLICATION (CAS 01)
+Etape 1: Activation de la couche 1
+Etape 2: Ajout des trois formes géométriques suivantes
+ * Un rectangle (x=0, y=0, largeur=2, hauteur=3)
+ * Un carré (x=2, y=3, cote=4)
+ * Un cercle (x=7, y=8, rayon=6)
+Etape 3: Activer la couche 2
+Etape 4: Ajouter la forme géométrique suivante
+ * Un rectangle (x=0, y=0, largeur=4, hauteur=5)
+Etape 5: Afficher le canevas
+----- Couche 0
+----- Couche 1
+Rectangle:(x=0, y=0, l=2, h=3, aire=6)
+Carre(x=2, y=3, c=4, a=16)
+Cercle (x=7, y=8, r=6, aire=113.097)
+----- Couche 2
+Rectangle:(x=0, y=0, l=4, h=5, aire=20)
+----- Couche 3
+Couche initialisée
+----- Couche 4
+Couche initialisée
+Etape 6: Afficher l'aire du canevas
+ * Aire du canevas: 155.097
+Etape 7: Activer la couche 0 et ajouter les formes suivantes
+ * Un rectangle (x=0, y=0, largeur=1, hauteur=1)
+ * Un carré (x=0, y=0, cote=1)
+ * Un cercle (x=0, y=0, rayon=1)
+Etape 8: Translater les formes de la couche selon x=5, y=5 pour obtenir les formes suivantes lorsque affiché
+ * Un rectangle (x=5, y=5, largeur=1, hauteur=1)
+ * Un carré (x=5, y=5, cote=1)
+ * Un cercle (x=5, y=5, rayon=1)
+----- Couche 0
+Rectangle:(x=5, y=5, l=1, h=1, aire=1)
+Carre(x=5, y=5, c=1, a=1)
+Cercle (x=5, y=5, r=1, aire=3.14159)
+----- Couche 1
+Rectangle:(x=0, y=0, l=2, h=3, aire=6)
+Carre(x=2, y=3, c=4, a=16)
+Cercle (x=7, y=8, r=6, aire=113.097)
+----- Couche 2
+Rectangle:(x=0, y=0, l=4, h=5, aire=20)
+----- Couche 3
+Couche initialisée
+----- Couche 4
+Couche initialisée
+Etape 9: Couche 2 - initialisée
+Etape 10: Couche 3 - initialisée
+Etape 11: Couche 4 - initialisée
+Etape 12: Afficher le canevas
+----- Couche 0
+Rectangle:(x=5, y=5, l=1, h=1, aire=1)
+Carre(x=5, y=5, c=1, a=1)
+Cercle (x=5, y=5, r=1, aire=3.14159)
+----- Couche 1
+Rectangle:(x=0, y=0, l=2, h=3, aire=6)
+Carre(x=2, y=3, c=4, a=16)
+Cercle (x=7, y=8, r=6, aire=113.097)
+----- Couche 2
+Couche initialisée
+----- Couche 3
+Couche initialisée
+----- Couche 4
+Couche initialisée
+Etape 13: Afficher l'aire du canevas
+Etape 14: Retirer la première forme de la couche 1
+Etape 15: Afficher le canevas
+----- Couche 0
+Rectangle:(x=5, y=5, l=1, h=1, aire=1)
+Carre(x=5, y=5, c=1, a=1)
+Cercle (x=5, y=5, r=1, aire=3.14159)
+----- Couche 1
+Carre(x=2, y=3, c=4, a=16)
+Cercle (x=7, y=8, r=6, aire=113.097)
+----- Couche 2
+Couche initialisée
+----- Couche 3
+Couche initialisée
+----- Couche 4
+Couche initialisée
+Etape 16: Afficher l'aire du canevas
+ * Aire du canevas: 134.239
+Etape 17: Réinitialiser le canevas
+Etape 18: Afficher le canevas
+----- Couche 0
+Couche initialisée
+----- Couche 1
+Couche initialisée
+----- Couche 2
+Couche initialisée
+----- Couche 3
+Couche initialisée
+----- Couche 4
+Couche initialisée
+Etape 19: Afficher l'aire du canevas
+ * Aire du canevas: 0
diff --git a/cas-dapplication-02.txt b/cas-dapplication-02.txt
new file mode 100644
index 0000000..3bee6df
--- /dev/null
+++ b/cas-dapplication-02.txt
@@ -0,0 +1,95 @@
+TESTS APPLICATION (CAS 02)
+Étape 1: Activer la couche d'index 4
+Étape 2: Ajouter les formes suivantes au canevas:
+ - Un cercle (x= 1, y= 2, rayon=1/sqrt(pi) )
+ - Un rectangle (x= 3, y= 4, largeur=3, hauteur=4)
+ - Un carré (x=-1, y=-1, cote=2)
+Étape 3: Afficher le canevas
+----- Couche 0
+----- Couche 1
+Couche initialisée
+----- Couche 2
+Couche initialisée
+----- Couche 3
+Couche initialisée
+----- Couche 4
+Cercle (x=1, y=2, r=0, aire=0)
+Rectangle:(x=3, y=4, l=3, h=4, aire=12)
+Carre(x=-1, y=-1, c=2, a=4)
+Étape 4: Imprimer l'aire du canevas (doit etre egale a 1+12+4 soit 17)
+ * Aire du canevas: 16
+Étape 5: Activer la couche d'index 3
+Étape 6: Ajouter les formes par défaut au canevas. Soit:
+ - Un cercle (x=0, y=0, rayon=1)
+ - Un rectangle (x=0, y=0, largeur=1, hauteur=1)
+ - Un carre (x=0, y=0, cote=1)
+Étape 7: Afficher le canevas
+----- Couche 0
+----- Couche 1
+Couche initialisée
+----- Couche 2
+Couche initialisée
+----- Couche 3
+Cercle (x=0, y=0, r=1, aire=3.14159)
+Rectangle:(x=0, y=0, l=1, h=1, aire=1)
+Carre(x=0, y=0, c=1, a=1)
+----- Couche 4
+Cercle (x=1, y=2, r=0, aire=0)
+Rectangle:(x=3, y=4, l=3, h=4, aire=12)
+Carre(x=-1, y=-1, c=2, a=4)
+Étape 8: Translater la couche active de (1,1)
+Étape 9: Afficher le canevas
+----- Couche 0
+----- Couche 1
+Couche initialisée
+----- Couche 2
+Couche initialisée
+----- Couche 3
+Cercle (x=1, y=1, r=1, aire=3.14159)
+Rectangle:(x=1, y=1, l=1, h=1, aire=1)
+Carre(x=1, y=1, c=1, a=1)
+----- Couche 4
+Cercle (x=1, y=2, r=0, aire=0)
+Rectangle:(x=3, y=4, l=3, h=4, aire=12)
+Carre(x=-1, y=-1, c=2, a=4)
+Étape 10: Supprimer la forme d'index 0 (la premiere)
+Étape 11: Activer la couche d'index 4
+Étape 12: Supprimer la forme d'index 2 (la dernière)
+Étape 13: Afficher le canevas
+----- Couche 0
+----- Couche 1
+Couche initialisée
+----- Couche 2
+Couche initialisée
+----- Couche 3
+Rectangle:(x=1, y=1, l=1, h=1, aire=1)
+Carre(x=1, y=1, c=1, a=1)
+----- Couche 4
+Cercle (x=1, y=2, r=0, aire=0)
+Rectangle:(x=3, y=4, l=3, h=4, aire=12)
+Étape 14: Initialiser la couche d'index 4
+Étape 15: Afficher le canevas
+----- Couche 0
+----- Couche 1
+Couche initialisée
+----- Couche 2
+Couche initialisée
+----- Couche 3
+Rectangle:(x=1, y=1, l=1, h=1, aire=1)
+Carre(x=1, y=1, c=1, a=1)
+----- Couche 4
+Couche initialisée
+Étape 16: Imprimer l'aire du canevas
+ * Aire du canevas: 2
+Étape 17: Réinitialiser le canevas
+Étape 18: Afficher le canevas
+----- Couche 0
+Couche initialisée
+----- Couche 1
+Couche initialisée
+----- Couche 2
+Couche initialisée
+----- Couche 3
+Couche initialisée
+----- Couche 4
+Couche initialisée
diff --git a/couche.cpp b/couche.cpp
index b84cc73..3d31ebb 100644
--- a/couche.cpp
+++ b/couche.cpp
@@ -71,7 +71,6 @@ Forme *Couche::supprimerForme(int index) {
};
bool Couche::reinitialiser() {
- if (state == STATE_INIT) return false;
state = STATE_INIT;
vecteur.vider();
return true;
diff --git a/graphicus-02.cpp b/graphicus-02.cpp
index f9081d9..800b393 100644
--- a/graphicus-02.cpp
+++ b/graphicus-02.cpp
@@ -13,7 +13,7 @@ int main() {
Tests tests;
/* tests.tests_unitaires(); */
- tests.tests_application_cas_01();
+ tests.tests_application();
return 0;
}
diff --git a/rapport/main.pdf b/rapport/main.pdf
index 325b471..e705be0 100644
--- a/rapport/main.pdf
+++ b/rapport/main.pdf
Binary files differ
diff --git a/rapport/main.tex b/rapport/main.tex
index 638a69d..bdf975e 100644
--- a/rapport/main.tex
+++ b/rapport/main.tex
@@ -175,7 +175,7 @@ même d'autres actions accessibles à l'utilisateur).
\item Ajouter les formes suivantes au canevas:
\begin{itemize}
\item un cercle de centre (1, 2) et de rayon $\frac{1}{\sqrt{\pi}}$
- \item un rectangle anchré en (3, 4), de largeur
+ \item un rectangle anchré en (3, 4), de dimensions $3\times4$
\item un carré anchré en (-1, -1), de côté 2
\end{itemize}
\item Afficher le canevas
@@ -193,17 +193,17 @@ même d'autres actions accessibles à l'utilisateur).
\item un carré anchré en (0, 0), de côté 1
\end{itemize}
\item Afficher le canevas
- \item Translater le canevas de (1, 1)
+ \item Translater la couche active de (1, 1)
\item Afficher le canevas
\item Supprimer la forme de l'index 0 (la première)
- \item Activer la couche 4
+ \item Activer la couche d'index 4
\item Supprimer la forme de l'index 2 (la dernière)
\item Afficher le canevas
\end{enumerate}
\subsubsection{Étapes 14 à 18}
\begin{enumerate}
\setcounter{enumi}{13}
- \item Initialiser la couche 4
+ \item Initialiser la couche d'index 4
\item Afficher le canevas
\item Imprimer l'aire du canevas (doit être égale à $1+1$ soit $2$)
\item Réinitialiser le canevas
diff --git a/tests.cpp b/tests.cpp
index 9a2f359..843454b 100644
--- a/tests.cpp
+++ b/tests.cpp
@@ -8,6 +8,8 @@
********/
#include "tests.h"
+#include "math.h"
+
// Tests sur les formes geometriques {{{
void Tests::tests_unitaires_formes() {
@@ -387,8 +389,82 @@ void Tests::tests_application_cas_01() {
cout << "\t* Aire du canevas: " << c.aire() << endl;
}; // }}}
+// takes an int pointer and increments it, prints the message: "Step i: msg\n"
+void step(string msg, int *i) {
+ cout << "Étape " << *i << ": " << msg << endl;
+ (*i)++;
+}
+
// Deuxieme application {{{
void Tests::tests_application_cas_02() {
cout << "TESTS APPLICATION (CAS 02)" << endl;
- // Il faut ajouter les operations realisant ce scenario de test.
+ // Mise en place
+ Canevas c;
+ int etape = 1;
+
+
+ step("Activer la couche d'index 4", &etape);
+ c.activerCouche(4);
+
+ step("Ajouter les formes suivantes au canevas:", &etape);
+ cout << "\t- Un cercle (x= 1, y= 2, rayon=1/sqrt(pi) )\n"
+ << "\t- Un rectangle (x= 3, y= 4, largeur=3, hauteur=4)\n"
+ << "\t- Un carré (x=-1, y=-1, cote=2)\n";
+ c.ajouterForme(new Cercle(1, 2, 1/sqrt(M_PI)));
+ c.ajouterForme(new Rectangle(3, 4, 3, 4));
+ c.ajouterForme(new Carre(-1, -1, 2));
+
+ step("Afficher le canevas", &etape);
+ c.afficher(cout);
+
+ step("Imprimer l'aire du canevas (doit etre egale a 1+12+4 soit 17)", &etape);
+ cout << "\t* Aire du canevas: " << c.aire() << endl;
+
+ step("Activer la couche d'index 3", &etape);
+ c.activerCouche(3);
+
+ step("Ajouter les formes par défaut au canevas. Soit:", &etape);
+ cout << "\t- Un cercle (x=0, y=0, rayon=1)\n"
+ << "\t- Un rectangle (x=0, y=0, largeur=1, hauteur=1)\n"
+ << "\t- Un carre (x=0, y=0, cote=1)\n";
+ c.ajouterForme(new Cercle());
+ c.ajouterForme(new Rectangle());
+ c.ajouterForme(new Carre());
+
+ step("Afficher le canevas", &etape);
+ c.afficher(cout);
+
+ step("Translater la couche active de (1,1)", &etape);
+ c.translater(1, 1);
+
+ step("Afficher le canevas", &etape);
+ c.afficher(cout);
+
+ step("Supprimer la forme d'index 0 (la premiere)", &etape);
+ c.retirerForme(0);
+
+ step("Activer la couche d'index 4", &etape);
+ c.activerCouche(4);
+
+ step("Supprimer la forme d'index 2 (la dernière)", &etape);
+ c.retirerForme(2);
+
+ step("Afficher le canevas", &etape);
+ c.afficher(cout);
+
+ step("Initialiser la couche d'index 4", &etape);
+ c.reinitialiserCouche(4);
+
+ step("Afficher le canevas", &etape);
+ c.afficher(cout);
+
+ step("Imprimer l'aire du canevas", &etape);
+ cout << "\t* Aire du canevas: " << c.aire() << endl;
+
+ step("Réinitialiser le canevas", &etape);
+ c.reinitialiser();
+
+ step("Afficher le canevas", &etape);
+ c.afficher(cout);
+
}; // }}}