Contraintes sur les attributs de Correspondence non respectées
Description du besoin
Les contraintes des attributs de la classe Correspondence
ne sont pas respectées:
Actuellement la classe Correspondence
peut:
- Créer une instance sans contrôle préalable sur la date de départ et la date d'arrivée. On pourrait retrouver des instances de
Correspondence
telles questartTime
>=arrivalTime
. - Créer une instance sans contrôle sur les villes de départ et d'arrivée. Il est possible d'obtenir une instance de
Correspondence
telle questartCity
=destinationCity
ce qui reviendrait à faire du surplace!
Choix des tests à effectuer
Afin de satisfaire ce ticket, la classe Correspondence
devra :
-
Accepter la création d'instances de
Correspondence
avec les contraintes suivantes:- Tester que
startTime
<arrivalTime
. - Tester que
startCity
!=destinationCity
. - Pour les deux cas de test plus haut, il faut autoriser la création de l'instance de
Correspondence
. De même, il est nécessaire d'effectuer les tests inverses et de refuser la création de l'instance dans ces cas-là.
- Tester que
-
Il faut également effectuer les mêmes tests pour les méthodes
setStartCity
etsetDestinationCity
:- Dans le cas où
startCity
=destinationCity
il faut refuser la modification. - Dans le cas où
startCity
!=destinationCity
il faut accepter la modification.
- Dans le cas où
-
Des tests doivent aussi être réalisés dans les méthodes
setStartTime
etsetArrivalTime
:- Dans le cas où
startTime
>arrivalTime
il faut refuser la modification. - Dans le cas où
startTime
<arrivalTime
il faut accepter la modification.
- Dans le cas où
Solution à mettre en œuvre
Les changements concernent uniquement la classe Correspondence
:
-
On doit modifier le constructeur:
- Dans le cas où
startTime
>=arrivalTime
il faut lever uneRuntimeExpection
de typeIllegalArgumentException
. - De même dans le cas où
startCity
=destinationCity
.
- Dans le cas où
-
Il faut aussi modifier les méthodes
setStartCity
etsetDestinationCity
:- Dans le cas où
startCity
=destinationCity
il faut lever uneRuntimeExpection
de typeIllegalArgumentException
.
- Dans le cas où
-
Enfin, il faut modifier les méthodes
setStartTime
etsetArrivalTime
:- Dans le cas où
startTime
>=arrivalTime
il faut lever uneRuntimeExpection
de typeIllegalArgumentException
.
- Dans le cas où
Issue numéro 6 dans l’énoncé